我有一个Nurbs曲线(Ctrl点,结矢量,权重和3或4度)。我可以使用参数t [0,1]沿曲线采样来计算长度。计算沿曲线的距离之和得出曲线的近似长度。
S1和S2是固定的。
答案 0 :(得分:2)
曲线长度遵循方程式
ds / dt = √(x'²(t) + y'²(t))
其中s
是曲线横坐标,t
曲线参数及其导数取自t
。
您愿意做的事情就是构造函数t(s)
并强加s
的值。编写微分方程即可方便地完成
dt / ds = 1 / √(x'²(t) + y'²(t))
并进行数字积分,例如与Runge-Kutta。
答案 1 :(得分:2)
是的。像样一样采样而不是成对采样,而是按三重点进行工作,将它们解释为通过这三个点的弧。
在相同采样点间距的情况下,与直线段相比,您得到的逼近误差要小得多。
答案 2 :(得分:1)
要计算参数化曲线的长度c(u)=(x(u),y(u)),可以使用通用公式。
请参阅Volume 3A
curvilinear abscissa from wikipedia
我相信您具有有理基础函数的导数公式。因此,您有x'(u)和y'(u)。然后,您既可以使用辛普森规则进行积分,也可以使用高斯点专门进行积分,以对有理多项式进行积分,或者更好地使用您喜欢的符号演算工具(槭树,wolfram等)来精确计算积分。