如何在转换中使用枢轴点

时间:2019-06-28 09:49:26

标签: opengl glsl

如何使用中心点平移对象

我有一个矩形,它的中心点远离矩形的位置。

当我旋转矩形时,它绕其中心轴旋转。

如果我在modelView矩阵中旋转之前有多个位置

ModelViewMatrix = Rotation * Scaling * Position

假设我要翻译。

1)将矩形位置平移x = 10个单位。

1)将矩形以其中心为中心旋转35度。

2)将矩形位置平移x = 10个单位。

3)将中心点的x位置更改10个单位(矩形不应受中心点位置的变化影响)

enter image description here 4)现在,使用新的中心点旋转矩形。

如果有人可以指导我,我们如何在转换中使用中心点。 如果我使用中心点,如何通过ModelView Matrix进行构建。

1 个答案:

答案 0 :(得分:2)

如果必须跟随矩形,则红色十字是世界的中心,并且您要围绕绿色枢轴旋转它

然后您必须执行以下步骤:

  • 以这种方式平移矩形,使枢轴位于世界原点上。这是由向量到原点的转换。

  • 旋转矩形

  • 以枢轴返回其原始位置的方式平移矩形。这是从向量到枢轴的原点的翻译。

下面的transPivot是一个转换矩阵,它由从原点(0,0)到枢轴点(pivotPos)的向量定义。枢轴以绿色十字标记。
rotation是绕z轴的旋转矩阵:

ModelViewMatrix = transPivot * rotation * -transPivot

-transPivotinverse(transPivot)矩阵,在这种情况下等于-pivotPos的转换矩阵。