gpt4 book ai didi

python - python中的Catmull-Rom样条

转载 作者:行者123 更新时间:2023-12-04 22:26:07 25 4
gpt4 key购买 nike

python中是否有库或函数可以从三个点计算Catmull-Rom样条?

最后我需要的是沿样条曲线的点的 x,y 坐标,前提是它们沿样条曲线始终与给定量 t 等距(例如,样条曲线有 3 个单位长,我想要 x,y 坐标在样条长度 0、1、2 和 3)

没有什么真正令人兴奋的。我是自己写的,但如果你发现一些不错的东西,这对测试(或节省时间)来说会很棒

最佳答案

3分? Catmull-Rom 定义为 4 个点,例如 p_1 p0 p1 p2;
三次曲线从 p0 到 p1,外部点 p_1 和 p2 确定 p0 和 p1 处的斜率。
要通过数组 P 中的某些点绘制曲线,请执行以下操作:

for j in range( 1, len(P)-2 ):  # skip the ends
for t in range( 10 ): # t: 0 .1 .2 .. .9
p = spline_4p( t/10, P[j-1], P[j], P[j+1], P[j+2] )
# draw p

def spline_4p( t, p_1, p0, p1, p2 ):
""" Catmull-Rom
(Ps can be numpy vectors or arrays too: colors, curves ...)
"""
# wikipedia Catmull-Rom -> Cubic_Hermite_spline
# 0 -> p0, 1 -> p1, 1/2 -> (- p_1 + 9 p0 + 9 p1 - p2) / 16
# assert 0 <= t <= 1
return (
t*((2-t)*t - 1) * p_1
+ (t*t*(3*t - 5) + 2) * p0
+ t*((4 - 3*t)*t + 1) * p1
+ (t-1)*t*t * p2 ) / 2
可以使用通过 3 个点的分段二次曲线——
Dodgson, Quadratic Interpolation for Image Resampling
你真的想做什么?

关于python - python中的Catmull-Rom样条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1251438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com