|
|
1
3
我重读了你的问题和下面的答案(虽然正确)没有给你你想要的。此链接是关于 constructing a 3x3 rotation matrix . 因为它们都是正交单位向量,所以您只需在每个向量上再加一个就可以构造一个基(使用叉积)。现在有两个基{A,B,AxB}和{C,D,CxD}。将{A,B}移动到{C,D}上的旋转将把向量a1A+a2B+a3(AXB)重新表示为b1C+b2D+b3(CxD)。因为它是线性的,所以你只需要知道它在基上的行为(这唯一地决定了线性变换)。所以,以{A,B,…}为基础,让变换为T,我们看到T(1,0,0)=C,T(0,1,0)=D和T(0,0,1)=CxD。记住A=(1,0,0)等,但是这个矩阵的列只是M=(C,D,CxD)
现在,所有的向量都用基{C,D,…}表示:( 解决方案是另一个变换矩阵。这一个从{A,B,…}映射到你的主基,并撤消N,也称为逆,表示为N^-1。最后的矩阵是(N^1)MN。好消息是因为N是正交的,你只需要它是转置。
|
|
|
2
1
https://alleg.svn.sourceforge.net/svnroot/alleg/allegro_outdated/branches/allegro/src/math3d.c 几乎完整的三维图形代码…检查底部的函数,从。。
四行诗也是这样。。。 https://alleg.svn.sourceforge.net/svnroot/alleg/allegro_outdated/branches/allegro/src/quat.c 同样在matrix中,它可能不会给出从vactor A到C的最短(或直接)路径,因此如果要设置视觉效果的动画,最好使用quats。 |
|
|
3
1
考虑到宇宙飞船的造价高达数亿美元,你可能想找一个能在睡梦中做这类事情的人,让他们用代码生成一个防弹优化的解决方案,而不是依赖于这里的描述。(除非这只是一个练习。)
考虑到这些注意事项,我很犹豫是否给出这样的建议:找到(A x C),将A移到C上并旋转所需的旋转轴(关于沿轴旋转的信息,请参阅维基百科)。然后算出它对B的影响(通过旋转矩阵乘以B)并计算B和D之间的角度;最后,沿着(B x D)轴旋转——此时最好与C轴相同——来修正这个差异(给出另一个旋转矩阵)。把这两个矩阵结合起来,瞧,你就完了。 |
|
|
4
0
|