围绕一个点旋转对象

Rotate a object around a point

如何围绕一个对象旋转一个对象,例如围绕另一个对象旋转一个对象?最好使用 GL.Rotate 和尽可能少的数学运算!

GL.Rotate 定义一个旋转矩阵,旋转 0.0。如果你想围绕一个枢轴旋转(pivotXpivotY)你必须:

  1. 平移对象,使轴心点移动到 (0, 0)。
  2. 旋转对象。
  3. 移动对象,使轴心点移动到其原始位置。

例如:

GL.Translate(pivotX, pivotY, 0);    // 3. move back
GL.Roatate(angle, 0, 0, 1);         // 2. rotate
GL.Translate(-pivotX, -pivotY, 0);  // 1. move pivot to (0, 0) 

另见