1

所以我有一个平面的二维多边形,我想围绕一个由两个二维点定义的轴旋转多边形的每个点。这些旋转点稍后用于从平面 2d 多边形生成 3d 旋转对象。所以我现在得到了这个:

  1. 计算一个多边形点的轴法线位置。
  2. 从这一点开始,我使用 matrixLookAt(pointOnLine, polygonPoint, upVec) 函数计算矩阵
  3. 然后我将 Z 轴上的矩阵旋转 45°
  4. 最后,我将多边形点与计算出的矩阵相乘。

但是用这种方法我没有得到任何有用的结果。

为了更好地理解:P1 和 P2 定义轴 Psrc 是 polygonPoint 而 Pdest 是 3d 中的最终点 在此处输入图像描述

4

1 回答 1

4

做起来容易得多。只需在使用以下绘图之前修改您的模型矩阵glRotatef()

glRotatef(angle, vx, vy, vz);
  • angle显然是角度。
  • vx, vy, 和vz是定义旋转轴的向量。

或者,在给出 2 点的情况下使用它:

glRotatef(p1.x - p2.x, p1.y - p2.y, p1.z - p1.z);

如果您的旋转轴不通过您的世界原点,则必须调整所有内容,以便您的轴通过原点使用glTranslatef()

glTranslatef(-p1.x, -p1.y, -p1.z); // move one point on the vector into the origin
glRotatef(p1.x - p2.x, p1.y - p2.y, p1.z - p1.z); // rotate everything
glTranslatef(p1.x, p1.y, p1.z); // move everything back into position
于 2013-07-23T09:37:35.423 回答