我有一个单位立方体的正投影,其顶点之一位于原点,如上图所示。我有投影的x,y(没有z)坐标。我想计算平面的旋转角度,以获得第一个正投影(也许是欧拉角)?
还有其他简单的计算方法吗?
更新
我可以使用这个旋转矩阵来获得cos,sin角和x,y和x',y'的方程组,并轻松解决它们吗?或者有更简单的方法来恢复角度? (我正朝着正确的方向解决这个问题吗?)
答案 0 :(得分:1)
使用这个想法生成方程式:
a1,a2和a3是原始系统中的坐标,x y是从最终结果得到的坐标,z是您不知道的坐标。这为立方体的每个点生成2个方程。例如,对于坐标为(-1,-1,1)的点0,这些是:
对于立方体的4个前点执行此操作,您将获得8个等式。现在添加一个事实,即这是一个旋转矩阵 - >行列式是1,你有9个方程。用任何解决方程系统的常用算法来解决这些问题,你就有了变换矩阵。通过谷歌轻松获取轴和角度:http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/
分别命名你的分数0,1,2,3 a,b,c,d,你可以用这个想法得到它们之间的向量的z坐标(例如b-a
):
但是,如果
b3-a3
是积极的,你仍然需要理清。一种方法是使用最中心的点作为b(计算所有点的中心距离,使用距离最小的点)。然后你肯定知道b3-a3
是正面的(如果z对你是肯定的)。
现在假设变换空间中a
为(0,0,0),您可以通过向其添加适当的向量来计算所有点位置。
要获得轮换,请使用您知道b-a
在原始空间中指向的位置(例如(1,0,0))。您可以通过b-a
和(1,0,0)
的点积以及旋转轴通过这些矢量之间的叉积来获得旋转角度。