欢迎光临散文网 会员登陆 & 注册

OpenGL实例教程07:旋转变换

2023-03-04 17:08 作者:阿西拜-江西  | 我要投稿

给定一个角度和一个点,让这个点绕其中一个轴旋转。改变的是X、Y和Z三个分量中的两个,而第三个分量保持不变。这意味着路径将位于三个主要平面之一:

  • XY(绕Z旋转)

  • YZ(绕X旋转)

  • XZ(绕Y旋转)

还有更复杂的旋转转换,允许绕任意向量旋转,但在此阶段我们不需要它们。

一个简单的选择示例

要沿着圆从点(x1,y1)移动到点(x2,y2)。即,要旋转点(x1,y1)角度a2。

假设圆的半径是1。这意味着:

使用三角恒等式来展开x2和y2:

如果x和y是4向量的一部分,那么上面的方程可以写成矩阵形式:

如果为YZ(围绕X轴)和XZ(围绕Y轴)平面创建旋转,那么方程基本上是相同的,但矩阵的排列略有不同。以下左边是围绕Y轴旋转的矩阵,右边是围绕X轴旋转的矩阵:

代码展示:

如果需要旋转,使用uniform变量将矩阵传输到shader里即可,其他代码与与位移变换代码相同。

运行效果:


OpenGL实例教程07:旋转变换的评论 (共 条)

分享到微博请遵守国家法律