Interpolate Date- Catmull 我得到以下错误:TypeError:无法将序列与类型为'float'的非int相乘
Interpolate Date-Linear 我得到以下错误:未扩展的令牌“v3”
我是Python的新手,不知道我在这段代码中犯了什么错误。 谢谢 下面是D和t的输入
IN[0]
-1.075000
-0.885818
-0.688475
-0.483791
-0.301645
-0.114591
0.077063
0.273042
0.473106
0.677038
1.025973
1.306626
1.592869
1.884406
2.363634
2.597338
2.833636
3.072438
3.313663
3.557232
3.803073
4.051116
4.301297
4.807834
5.069212
5.349055
5.649760
5.971703
IN[1]
0.000000
0.055556
0.111111
0.166667
0.222222
0.277778
0.333333
0.388889
0.444444
0.500000
0.555556
0.611111
0.666667
0.722222
0.777778
0.833333
0.888889
0.944444
1
0.000000
0.027778
0.055556
0.083333
0.111111
0.138889
0.166667
0.194444
0.222222
0.250000
0.277778
0.305556
0.333333
0.361111
0.388889
0.416667
0.444444
0.472222
0.500000
0.527778
0.555556
0.583333
0.611111
0.638889
0.666667
0.694444
0.722222
0.750000
0.777778
0.805556
0.833333
0.861111
0.888889
0.916667
0.944444
0.972222
1
D=IN[0]
t=IN[1]
a=[]
def SampleLinear(v0, v1, t):
value = v0 * (1.0 - t) + v1 * t
return value
def Interpolate (values, parameter):
num = len(values) - 1
num2 = parameter * float(num)
num3 = int((float(floor(num2)))
v3 = values[num3]
v4 = values[num3]
value = SampleLinear(v3, v4, num2 - float(num3))
return value
for i in t:
a.append(Interpolate(D,i))
OUT = a
D=IN[0]
t=IN[1]
a=[]
def SampleCatmull(v00,v0,v1,v11,t):
num = -0.5 * v00 + 1.5 * v0 - 1.5 * v1 + 0.5 * v11
num2 = v00 - 2.5 * v0 + 2.0 * v1 - 0.5 * v11
num3 = -0.5 * v00 + 0.5 * v1
value = num * (t * t * t) + num2 * (t * t) + num3 * t + v0
return value
def Interpolate(values, parameter):
num = len(values) - 1
num2 = parameter * float(num)
num3 = float(floor(num2))
num6 = values[num3]
v7 = 0
v8 = 0
num7 = values[num3]
if num3 <= 0:
v7 = num6 - (num7 - num6)
else:
v7 = values[num3 - 1]
if num3 >= num - 1:
v8 = num7 - (num6 - num7)
else:
v8 = values[num3 + 2]
value = SampleCatmull(v7, num6, num7, v8, num2 - float(num3))
return value
for i in t:
a.append(Interpolate(D, i))
OUT = a
因此,@arthur给出的上述答案是正确的,您正试图将
float
传递到需要整数的列表索引查询中。改变那条线对我来说解决了问题。下面是来自Dynamo的实际图像/代码片段。你知道吗您遇到的另一个问题是将浮动
0.00001
与列表1
中的整数混合。保持一致。你知道吗另外,关于缩进的问题,我想说,Dynamo,它的设置方式,需要你选择一种风格。要么是空格,要么是制表符,最好保持一致。我以前(偶然)把它们混在一起时遇到了一些麻烦。我重新格式化了你的代码,它可以很好地与所有标签。你知道吗
代码:
这是另一个:
你忘记了第
num3 = int((float(floor(num2)))
行的括号 应该是:num3 = int((float(floor(num2))))
当您这样做时:
您正试图通过索引(
num3
)访问values
列表中的元素,因此索引必须是整数,在您的情况下,将其更改为:num3 = int(floor(num2))
相关问题 更多 >
编程相关推荐