如何将一个三维笛卡尔坐标系中的坐标转换为另一个三维笛卡尔坐标系

时间:2014-01-14 23:08:35

标签: geometry algebra

我从一个坐标系开始,沿Z轴的一个点由P1 = [0 0 h]给出 由P2 = [h * tan(A),h * tan(B),0]给出的XY平面中的一个点 然后我求解垂直于从P2到P1的矢量的平面的方程,因此,Vector = P1-P2。我得到的平面方程如下:

X * h * tan(A)-Y * h * tan(B)+ Z * h = 0.

现在我得到了相对于这个平面的四个点,这个新平面的原点与原始平面中的P2相同。

这四个点构成一个矩形,并且是:

[L*tan(C), L*tan(D), 0]
[L*tan(C), -L*tan(D), 0]
[-L*tan(C), -L*tan(D), 0]
[-L*tan(C), L*tan(D), 0]

我将如何将这些点转换为原始坐标系? 我知道有一个翻译和一个轮换,当我解决我的问题时,我只能找到翻译和旋转的案例分开,而没有一个是两者的组合。

旋转变换究竟如何运作?如果我已经知道它绕X轴旋转A度并绕Y轴旋转B度怎么办?那么我可以在这种情况下做简单的触发来追溯值吗?或者它不是那么简单,我必须围绕它必须旋转的轴旋转才能匹配回原始坐标系?

MATLAB中是否有一个函数可以插入,其中3个点定义一个坐标系,另外3个点用于第二个坐标系,然后给出转换矩阵?

请告诉我,如果我的措辞不清楚,这个三维问题是如此难以想象我似乎无法弄清楚如何为它编写所有的三角形并且想要以数学方式尝试...但是如果你偶然知道一个更简单的解决方案,那就更直接了,请提出建议!

1 个答案:

答案 0 :(得分:3)

回答问题的缩减版本(见评论):

由原点O1给出的坐标系表示的点,轴向量X1Y1Z1的坐标为P=(x1, y1, z1)坐标系。同样,在原点O2和轴向量X2Y2Z2的第二个坐标中,相同的点表示为P=(x2, y2, z2)。 (注意坐标的小写,点和向量的大写)。

这实际上意味着:

P = O1 + x1 X1 + y1 Y1 + z1 Z1   and
P = O2 + x2 X2 + y2 Y2 + z2 Z2

将它们设置为彼此相等,并以矩阵形式写出:

[ O11 ]   [ X11  X12  X13 ][ x1 ]   [ O21 ]   [ X21  X22  X23 ][ x2 ]
[ O12 ] + [ Y11  Y12  Y13 ][ y1 ] = [ O22 ] + [ Y21  Y22  Y23 ][ y2 ]
[ O13 ]   [ Z11  Z12  Z13 ][ z1 ]   [ O23 ]   [ Z21  Z22  Z23 ][ z2 ]

让我们分别调用每一侧M1M2的矩阵,使用原点作为列向量,并调用列点向量p1p2。然后我们可以将前面的等式写成:

O1 + M1 p1 = O2 + M2 p2

如果每个系统的坐标轴线性无关,则M1和M2是可逆的。如果另外它们是orthogonal,那么每个的反转就是它的转置!所以我们得到:

p1 = Transpose[M1] (O2 - O1 + M2 p2)   and similarly going the other way
p2 = Transpose[M2] (O1 - O2 + M1 p1)

你可以阅读基础here变化的更一般的处理方法,但我认为我的条带化处理可以让你更快地编写代码。