只有一个轴旋转

时间:2013-05-11 20:48:17

标签: opengl

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

rotation http://img832.imageshack.us/img832/1686/beztytuurax.png

提前谢谢。

2 个答案:

答案 0 :(得分: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控制剪切量。

答案 1 :(得分:2)

这种转变不是旋转,它被称为剪切。它也是线性变换,因此您可以使用glMultMatrix实现它。你将不得不弄清楚你需要乘以哪个矩阵。谷歌剪切。