【问题标题】:How to use Pivot Point in Transformations如何在转换中使用枢轴点
【发布时间】:2019-06-28 09:49:26
【问题描述】:

如何使用中心点平移对象

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

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

如果我在模型视图矩阵中旋转前对位置进行乘法运算

ModelViewMatrix = Rotation * Scaling * Position

假设我想做这些翻译。

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

1) 将矩形旋转 35 度,中心点位于矩形的中心。

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

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

4) 现在使用新的中心点旋转矩形。

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

【问题讨论】:

    标签: opengl glsl


    【解决方案1】:

    如果你必须跟随矩形,红十字是世界的中心,你想围绕绿色枢轴旋转它

    那么你必须执行以下步骤:

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

    • 旋转矩形

    • 平移矩形,使枢轴回到其原始位置。这是向量从原点到枢轴的平移。

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

    ModelViewMatrix = transPivot * rotation * -transPivot
    

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

    【讨论】:

      猜你喜欢
      • 2016-09-07
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 2021-01-26
      • 2014-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多