如何旋转对象(假设它的位置在(5,5,0)),而将枢轴点设置为(3,4,0),即使原始旋转点是(0 ,0,0)?
以下是图形说明:
我想相对于自定义枢轴点旋转对象。在搅拌机中制作物体的方式是使物体远离原点(在(5,5,0)点)。
我们如何使用矩阵来解决这个问题?
答案 0 :(得分:2)
正如注释中已经指出的那样,最简单的方法是平移对象,使枢轴点位于原点,然后围绕原点旋转对象,然后将其平移回原处。所有这些步骤都可以使用矩阵来完成;将这些矩阵相乘应得到一个矩阵,该矩阵可以一次完成所有这些操作。
在给定的示例中,这些矩阵为:
1.translation by (-3,-4,0):
[ 1, 0, 0,-3,
0, 1, 0,-4,
0, 0, 1, 0,
0, 0, 0, 1 ]
2. rotation (in this example by 90 degrees)
[ 0, 1, 0, 0,
-1, 0, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 ]
3. translation by (3,4,0)
[ 1, 0, 0, 3,
0, 1, 0, 4,
0, 0, 1, 0,
0, 0, 0, 1 ]
这将导致以下矩阵作为最终转换:
[ 0, 1, 0,-1,
-1, 0, 0, 7,
0, 0, 1, 0,
0, 0, 0, 1 ]
您可能需要根据实现细节来更改乘法顺序,但是一般来说应该可以。