Math 更改坐标系空间

Math 更改坐标系空间,math,matrix,Math,Matrix,我有一个很明显的问题,但我在解决它时遇到了问题 我有两个坐标系。比方说 带x(1,0,0)、y(0,1,0)、z(0,0,1)和O(0,0,0)的Oxyz。Px'y'z'和P,x'y'z'已知 我在这里的目标是创建旋转矩阵,允许我从Oxyz传递到Px'y'z' 我所做的是: 使用以下公式计算矢量Ox和Px'之间的X角: Theta=cos(Ox.Px'/|Ox.*|Px'||)。并使用θ创建XMatrix: |1 0 0 | |0 cos(Theta) -s

我有一个很明显的问题,但我在解决它时遇到了问题

我有两个坐标系。比方说 带x(1,0,0)、y(0,1,0)、z(0,0,1)和O(0,0,0)的Oxyz。Px'y'z'和P,x'y'z'已知

我在这里的目标是创建旋转矩阵,允许我从Oxyz传递到Px'y'z'

我所做的是: 使用以下公式计算矢量Ox和Px'之间的X角:
Theta=cos(Ox.Px'/|Ox.*|Px'||)
。并使用θ创建XMatrix:

|1 0          0           |
|0 cos(Theta) -sin(Theta) |
|0 sin(Theta) cos(Theta)  |
我对Yangle和Zangle做了完全相同的操作,然后创建了2个对应的矩阵。 在所有这些之后,我创建了MFinal=XMatrix*YMatrix*ZMatrix

是这样吗?它在任何世界都能工作吗

谢谢大家!:)


最好的问候

您的方法不起作用,因为您没有在与轴正交的平面上测量角度。平行于旋转轴的差分向量分量不会因旋转而改变

无论如何,有一个更简单的方法。假设旋转矩阵为
R
。然后,您希望将原始x轴映射到新x轴:

x' = R x = R (1, 0, 0)^T
由于基准坐标系是标准坐标系,最后一个表达式的计算结果为
R
的第一列,得到:

x' = R[0]
这很容易解决


因此,您只需将局部轴作为列向量放入
R
。如果要包含平移,只需对局部原点和第四列执行相同的操作。

您说需要旋转。你确定
x',y',z'
是R^3的正交基吗?是的,它是。我使用交叉积来创建它们。我确信(x',y',z')和(x,y,z)是R^3的正交基:)事实上,我只需要从基的变化中得到旋转矩阵。。。但是我不明白为什么我的方法不起作用/:我做了一些修改:为了把x'放在平面xOy上,我必须绕Z旋转Ox'等等。但仍然不起作用/如前所述,这更多的是一个数学问题,而不是一个编程问题。你能编辑这个问题,使它更多的关于编程,例如显示(一些)你的代码吗?我投票关闭这个问题作为离题,因为它是关于编程或软件开发。