OpenGL在编程平移旋转和旋转平移时,查阅了相关资料发现两种变换都会讲物体的局部坐标系进行变换。
也就是说先平移,能够得到正确的结果,但是再变换以后,图形就在原地旋转了,而不是绕着世界坐标系的原点进行旋转。
先旋转,能够得到正确的结果,绕着世界坐标系旋转,但是再平移以后,发现平移的方向发生了改变。
想用glpushmatrix和glpopmatrix的方式,但是平移后回到原点,进行旋转,那不是相当于还就是在原点旋转了一下,而不是想要的平移过后仍然绕着世界坐标系的原点旋转,所以究竟怎么样才能得到正确的结果嘞?
OpenGL关于平移旋转顺序的问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 流比 2023-01-13 12:29关注
在OpenGL中,矩阵变换是基于后乘原理进行的,也就是说,新的变换矩阵会乘到当前矩阵的末尾,对于平移和旋转这样的变换,先平移后旋转和先旋转后平移就会有不同的效果。
你可以使用 glPushMatrix() 和 glPopMatrix() 进行矩阵栈操作,在更改完平移后将矩阵压入栈中,再进行旋转操作,最后再将矩阵弹出栈中,这样就可以得到正确的结果了。
另外,你还可以使用 glMatrixMode() 函数来设置矩阵模式(GL_MODELVIEW, GL_PROJECTION, GL_TEXTURE),如果你想要对全局坐标系进行变换,可以使用 GL_MODELVIEW 模式。
如果你想要更复杂的变换,可以使用更高级的变换函数,例如 glMultMatrix() , glLoadMatrix() , glLoadIdentity() 。
总之,在OpenGL中,矩阵变换是非常强大的工具,你可以根据需要选择合适的方法来获得正确的结果。
解决 无用评论 打赏 举报
悬赏问题
- ¥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的