开发者社区> 问答> 正文

如何在两点之间对x, y, z进行线性插值?

假设在开始时间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

展开
收起
kun坤 2019-12-29 21:53:30 597 0
1 条回答
写回答
取消 提交回答
  • 在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)
    
    2019-12-29 21:54:03
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
重新定义计算的边界 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载