0

是否可以使用固定管道 OpenGL 旋转如下对象?如果是 - 我该怎么做?0,0 点位于 3d 对象的角落,平行点必须比 0,0 点高或低一个已知量。我也知道对象宽度。

旋转 http://img832.imageshack.us/img832/1686/beztytuurax.png

先感谢您。

4

2 回答 2

4

这不是旋转,而是剪切操作,因此是仿射变换 - 因此它可以由固定功能管道使用的通常的 4x4 变换矩阵表示。您可以通过旋转、平移和非均匀缩放的组合来实现这样的效果,或者您可以直接指定一个剪切矩阵并通过 glLoadMatrix/glMultMatrix 使用它。

在您的绘图中,您只需沿一个轴使用剪切,因此 x 坐标保持不变。这通常可以使用如下矩阵来完成:

1 0 0 0
v 1 0 0
0 0 1 0
0 0 0 1

它使 x、z 和 w 保持原样并将 y 转换为 y+v*x,因此 v 控制剪切量。

于 2013-05-11T21:04:12.087 回答
2

这种转变不是旋转,它被称为剪切。它也是一个线性变换,所以你可以用glMultMatrix. 不过,您将不得不弄清楚需要与哪个矩阵相乘。谷歌剪。

于 2013-05-11T21:03:14.493 回答