Lu.马夋 2023-01-12 17:11 采纳率: 0%
浏览 20

OpenGL关于平移旋转顺序的问题

OpenGL在编程平移旋转和旋转平移时,查阅了相关资料发现两种变换都会讲物体的局部坐标系进行变换。
也就是说先平移,能够得到正确的结果,但是再变换以后,图形就在原地旋转了,而不是绕着世界坐标系的原点进行旋转。
先旋转,能够得到正确的结果,绕着世界坐标系旋转,但是再平移以后,发现平移的方向发生了改变。
想用glpushmatrix和glpopmatrix的方式,但是平移后回到原点,进行旋转,那不是相当于还就是在原点旋转了一下,而不是想要的平移过后仍然绕着世界坐标系的原点旋转,所以究竟怎么样才能得到正确的结果嘞?

  • 写回答

1条回答 默认 最新

  • 流比 2023-01-13 12:29
    关注

    在OpenGL中,矩阵变换是基于后乘原理进行的,也就是说,新的变换矩阵会乘到当前矩阵的末尾,对于平移和旋转这样的变换,先平移后旋转和先旋转后平移就会有不同的效果。

    你可以使用 glPushMatrix() 和 glPopMatrix() 进行矩阵栈操作,在更改完平移后将矩阵压入栈中,再进行旋转操作,最后再将矩阵弹出栈中,这样就可以得到正确的结果了。

    另外,你还可以使用 glMatrixMode() 函数来设置矩阵模式(GL_MODELVIEW, GL_PROJECTION, GL_TEXTURE),如果你想要对全局坐标系进行变换,可以使用 GL_MODELVIEW 模式。

    如果你想要更复杂的变换,可以使用更高级的变换函数,例如 glMultMatrix() , glLoadMatrix() , glLoadIdentity() 。

    总之,在OpenGL中,矩阵变换是非常强大的工具,你可以根据需要选择合适的方法来获得正确的结果。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月12日

悬赏问题

  • ¥20 脑电信号的局部场电位分析
  • ¥30 Diodes 霍尔开关AH337已经obselete,他的升级替代料【不改变现有电路图】
  • ¥30 关于#微信#的问题:微信实名不绑卡 可以实现吗 有没有专家 可以解决
  • ¥15 (标签-考研|关键词-set)
  • ¥15 求修改代码,图书管理系统
  • ¥15 请问有没求偏多标签数据集yeast,reference,recreation,scene,health数据集。
  • ¥15 传感网应用开发单片机实训
  • ¥15 Delphi 关于sAlphaImageList使用问题
  • ¥15 寻找将CAJ格式文档转txt文本的方案
  • ¥15 shein测试开发会问些啥我是写java的