或者以另一种方式看待它,假设我们有两个相同大小的三角形定位并定位在3D空间的不同部分。如何计算描述旋转的四元数,以便将四元数应用于三角形A会使它位于三角形B处?很难看出如何找到A和B的法线以及从中计算四元数是如何工作的,因为法向量不包含有关旋转的信息(或者更确切地说,它假设两个三角形的法线的标准基础框架因此丢弃有价值的信息)。看起来你需要找到从每个三角形(a,b,c)到其他三角形(a,b,c)的向量,并以某种方式构造一个四元数。超越我的方式,任何数学家都可以愚蠢地说。
答案 0 :(得分:1)
首先定向法向量然后定向平面。
源=(S1,S2,S3)
目标=(T1,T2,T3)
NormSource =(s1-s2)cross(s1-s3)
NormTarget =(t1-t2)cross(t1-t3)
Quat1 = getRotationTo(NormSource,NormTarget)
Quat2 = getRotationTo(Quat1 *(s1-s2),(t1-t2));
QuatFinal = Quat2 * Quat1