假设在开始时间0点我有点数t_1(10,20,35)在结束时间10s我有点数t_2(20,40,50) 我如何使用线性插值来找到时间5s处的点? 我想在不使用任何python库的情况下手工完成这项工作。我试图理解如何在x,y, z平面上使用线性插值。 我知道我会从这个开始
start_time = 0
start_x = 10
start_y = 20
start_z = 35
end_time = 10
end_x = 20
end_y = 40
end_z = 50
# I want the point at time 5s
time = 5
def interpolate():
pass
问题来源StackOverflow 地址:/questions/59379693/how-to-linear-interpolate-the-x-y-and-z-between-two-points
在x1和x2之间插入的公式是(1 - t) * x1 + t * x2其中t的取值范围是0到1。我们需要先把t代入这个范围:
def interpolate(v1, v2, start_time, end_time, t):
t = (t - start_time) / (end_time - start_time)
return tuple((1 - t) * x1 + t * x2 for x1, x2 in zip(v1, v2))
例子:
>>> interpolate((10, 20, 35), (20, 40, 50), 0, 10, 5)
(15.0, 30.0, 42.5)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。