3D触发从固定点到任意点的平移

时间:2012-08-29 16:15:27

标签: 3d rotation translation coordinates trigonometry

我要做的是设置一个相对坐标系。它的作用是取点A的XYZ坐标。然后它应该在B点上转换该位置以获得C点的位置,B点可以在所有三个轴上旋转和平移,但A点只能平移,不会旋转。

基本上发生的事情是你有2个矩形,一个左下角在原点,另一个左下角是B点。如果在右上角一角第一个矩形是A点,然后在第二个矩形的右上角角是C点,无论第二个矩形如何旋转或平移,C点总是在右上角第二个矩形但是如果A点移动到右下角手角,那么C点将始终位于第二个矩形的右下角角落。

我已多次尝试评估正确的表达方式以及我想到的结果。我有一些变化:

X':Xcos(音高) - Zcos(音高)+ Xcos(偏航)+ Ysin(偏航)+ X.pointB

Y':Ycos(偏航)+ Xsin(偏航)+ Ycos(滚动)+ Zsin(滚动)+ Y.pointB

Z':Ysin(roll)+ Zcos(roll)+ xsin(pitch)+ Zcos(pitch)+ Z.pointB

等式中的XYZ是A点的坐标, Pitch,Yaw和Rolls是第二个矩形的角度(以度为单位)。

1 个答案:

答案 0 :(得分:3)

将旋转和翻译一起表示的常用方法是使用homogeneous coordinate vectors和4x4 transformation matrices。通过矩阵乘以矢量同时执行旋转和平移;并且乘以两个矩阵为您提供了一个新的矩阵,它可以按顺序执行这两个操作,这就是您想要解决的问题。这是基本的计算机图形数学(但它也适用于几何和物理......)。

以这种方式表示向量和矩阵可能看起来多余甚至浪费,但它使数学和编程变得更简单。一旦你理解了数学运算的方式,并且有了工作代码,你可以根据需要返回并优化冗余数据;但是,你可能会发现它不值得努力。


你问题中的公式不起作用 - 你需要决定你想要应用偏航,俯仰和滚动的顺序,生成适当的X-,Y-和Z- rotation matrices,然后相乘它们按顺序排列在一起(链接为您提供了各个旋转矩阵以及组合旋转矩阵的示例)。

translation matrix比计算旋转矩阵简单得多。乘法平移矩阵基本上只是将平移向量加在一起,但是当轮换进入图片时,您会看到系统的优势:翻译和旋转的顺序很重要,而矩阵可以很容易地得到东西每次都是正确的。


最后,要真正解决您的问题:

  • 计算固定平台上角色的组合旋转/平移矩阵。 (理想情况下,您应该使用此矩阵绘制原始字符)
  • 计算“投影”平台的组合旋转/平移矩阵(也可用于绘制投影平台)
  • 将两个矩阵相乘以确定“投影”字符的正确矩阵

请注意,所需的唯一三角法是采用原始滚动/俯仰/偏转角度的sin()cos()