Math 如何计算沿hermite曲线移动的对象的方向

Math 如何计算沿hermite曲线移动的对象的方向,math,matrix,rotation,curve,quaternions,Math,Matrix,Rotation,Curve,Quaternions,我在沿着埃尔米特曲线移动的物体的方向上挣扎。 我知道如何以恒定的速度移动它,同时还有曲线的切线,这将是移动对象的前向向量。我的问题是:如何知道上方向向量和右方向向量?最简单的方法是从给定的旋转开始,然后逐步通过曲线,始终将最后一个旋转作为下一个旋转的参考,如此参考: pdf 但这将导致样条曲线末端出现无法控制的旋转。我想做的是创建一个算法,它在曲线的任何一点都能为你提供正确的方向,而不需要通过它。理想情况下,它将使用当前段的两个控制点的方向作为参考 我曾想过使用某种预先计算的数据,这些数据是根据

我在沿着埃尔米特曲线移动的物体的方向上挣扎。 我知道如何以恒定的速度移动它,同时还有曲线的切线,这将是移动对象的前向向量。我的问题是:如何知道上方向向量和右方向向量?最简单的方法是从给定的旋转开始,然后逐步通过曲线,始终将最后一个旋转作为下一个旋转的参考,如此参考:

pdf

但这将导致样条曲线末端出现无法控制的旋转。我想做的是创建一个算法,它在曲线的任何一点都能为你提供正确的方向,而不需要通过它。理想情况下,它将使用当前段的两个控制点的方向作为参考

我曾想过使用某种预先计算的数据,这些数据是根据控制点的两个方向和当前曲线段形式创建的,但没有找到解决方案

我很乐意得到任何答案或只是如何解决这个问题的想法。

C(t)
为相机轨迹,切线向量
t(t)
。切线矢量控制俯仰和偏航。你缺少的是侧倾控制


定义与C(t)平行的辅助轨迹
D(t)
,并使用向量
CD(t)
。上方向向量由
U(t)=t(t)/\CD(t)
(标准化)给出,右方向向量由
U(t)/\t(t)
(标准化)给出。

好的,我用frenet框架提出了一个解决方案。我为每个控制点定义一个方向,然后为每个线段沿样条线计算一些点。然后使用前面的点方向计算每个点的方向。第一个点的方向等于控制点的方向。 这是一个非常好的过程描述。
计算每个点的方向后,可以对其进行插值,使最后一个点的方向与下一个控制点的方向匹配。

是否要使用Frenet三面体?另一种方法是指定与第一条曲线“平行”的第二条曲线,这样从相机到第二条曲线的向量,连同切线向量,定义了相机的参考水平面(Gram Schmidt称为完整的参考框架)。Frenet trihendron似乎就是我要找的,现在我只需要了解它是如何工作的。谢谢你的建议。如果我定义了第二条曲线,我会遇到带有偏移量的问题,如果它是像[0,1,0]这样的全局偏移量,我会遇到曲线部分朝上或与其他偏移量相似的问题。我没有说偏移量必须是常数。使用额外的曲线可以更灵活地控制摄影机移动并离开密切平面。还认为,在一条直线上,FrNET三面体是未定义的。