Math 生成一个';自然路径';沿着样条线

Math 生成一个';自然路径';沿着样条线,math,3d,matrix,spline,Math,3d,Matrix,Spline,我需要一种方法来获得沿样条曲线任意点的方向(局部x/y/z轴)。。。其中z轴始终为样条曲线切线,x/y相互垂直,z轴始终为样条曲线切线 一种常用技术是计算一个轴矢量作为切线的变化率,即x(t)=z(t)xz(t+dt) 那么y就是xz 然而,我不确定这是否给出了我所说的“自然”方向路径。我的意思是,想象一下,我有一根刚性的钢棒,它被弯曲成一些卷曲,然后我沿着这根钢棒推进一根柔性软管。如果摩擦力是可忽略的,“自然”路径意味着软管在任何点的扭矩都是最小的,因为它会“松开”自身以获得较低的能量状态 有

我需要一种方法来获得沿样条曲线任意点的方向(局部x/y/z轴)。。。其中z轴始终为样条曲线切线,x/y相互垂直,z轴始终为样条曲线切线

一种常用技术是计算一个轴矢量作为切线的变化率,即
x(t)=z(t)xz(t+dt)
那么y就是
xz

然而,我不确定这是否给出了我所说的“自然”方向路径。我的意思是,想象一下,我有一根刚性的钢棒,它被弯曲成一些卷曲,然后我沿着这根钢棒推进一根柔性软管。如果摩擦力是可忽略的,“自然”路径意味着软管在任何点的扭矩都是最小的,因为它会“松开”自身以获得较低的能量状态


有什么方法不意味着从0-t遍历样条曲线的长度,以找到给定点t处的变换吗?

您似乎在寻找-使用单位切线、法线和副法线向量移动三面体

增加。 简单的例子:

X=2*t^2-t+5

Y=t^3+t^2+2*t-1

Z=-t^3-2*Sin(t)


X'(t)=4*t-1;X''=4

Y'=3*t^2+2*t+2;Y''=6*t+2

Z'=-3*t^2-2*Cos(t);Z''=-6*t+2*Sin(t)


在参数t=0时:

X'=-1;Y'=2;Z'=-2|R'|=Sqrt(1+4+4)=3

T=(-1/3,2/3,-2/3)


等等

考虑将您的qw移动到。(很好的qw,但可能与编程无关。我没有“今天的主持人标志”)。我已经在MATLAB中完成了基本样条曲线。也许他们有一些文档(也许没有。有时文档是“略读的”)。@OlofEdler-问题是这既是数学又是编程。但是,由于游戏/图形编程中的许多主题都依赖于数学,我认为这里没有问题。我在这里看到了许多与编程相关的问题(事物的定义。编程的社会方面)。我假设一个人可能永远是程序员,不知道样条曲线是什么。我想说你的qw完全是数学,因此也许最好在别处回答。Buuut,我不太严格。请随意使用您的qw。我们对什么是正确的看法完全不同。这对我来说有点数学化了。。。它看起来与@tom10的答案非常相似,但形式化程度更高?样条曲线是如何定义的?我希望,计算曲线导数(第一和第二)是可能的。然后,您可以应用“帧的其他表达式”部分的公式,它只是一组3D点,用作第三方Catmull Rom的输入;我一直将其视为一个黑匣子,但我认为它在内部应该使用数学表示法。是的,每个Catmull Rom样条曲线都有解析表示法(这里是q(t))。我尝试了这个方法,但t和B向量不是正交的-请参见数学网站:。我认为汤姆的答案实际上涵盖了更多的实际步骤,但现在已经不存在了,有没有办法找到它?