OpenGL 自由旋转
来源:互联网 发布:js创建一个对象 编辑:程序博客网 时间:2024/05/02 01:40
<!--@page { margin: 2cm }P { margin-bottom: 0.21cm }-->
这篇日志是我在学习OpenGL的过程中的一点小小心得。因为本人刚刚接触OpenGL,并且还是业余时间自己捣腾,所以有些地方可能理解比较片面,或者解读有误的。如果有路过的正好看到这个文章,并且正好发现了里面错误的地方,希望能够留言指正,谢谢!!
从一开始我就知道,voidglRotatef(GLfloatangle,GLfloat x,GLfloat y,GLfloatz)函数可以用来实现模型在场景中的旋转。我在做一个鼠标拖动旋转模型的小程序的时候,问题出现了。我的基本思路是,鼠标上下方向的移动解释为绕x轴转一定角度,鼠标左右方向的移动解释为绕y轴转动。在用户每次拖动鼠标是,都会既有横轴方向的移动,又有纵轴方向的移动。于是我就两次调用glRotatef函数,分别绕x轴和y轴转。但是,由于第一次调用的时候,坐标系已经变化了(我觉得可能是处于性能的考虑,glRotatef转的是坐标系,而不是模型),第二次调用就不能得到想要的结果。于是只能做到模型固定绕自己一条轴转,而不是绕用户看到的x、y方向转。
这时候就只能用变换矩阵的方式来实现旋转了。变换矩阵应该跟glRotatef内部做的事情是一个道理,就是把当前的模型变换矩阵乘一个特定的变换矩阵,来增加一个特定的变换效果。函数voidglMultMatrix{df}();就是用来完成这个功能的。这个函数在当前变换矩阵的基础上右乘一个增加效果的矩阵。具体使用的时候,我们只要把变换矩阵都乘在一起,就能够避免多次转动坐标系的问题。
PS:关于转角和变换矩阵的关系,可以参考这个网页:
http://www.cprogramming.com/tutorial/3d/rotationMatrices.html
- OpenGL 自由旋转
- OpenGL实现3DS文件中的模型自由旋转
- OpenGL实现3DS文件中的模型自由旋转
- OpenGL实现3DS文件中的模型自由旋转
- OpenGL实现3DS文件中的模型自由旋转-备用
- OpenGL 用虚拟球实现场景自由旋转(转)
- OpenGL实现3D模型自由旋转——之代码解析
- OpenGL旋转
- OpenGL旋转
- 请教OpenGL坐标旋转
- OpenGL教程之旋转
- OpenGl 中的旋转矩阵
- OpenGL教程之旋转
- OpenGL 旋转球体
- opengl旋转方块
- OpenGL鼠标旋转物体
- OpenGL: 旋转变换
- OpenGL之旋转缩放
- C语言数据类型转换 - 图解
- C#中如何在多行TEXTBOX中插入换行符(转)
- linux配置、编译内核工具介绍
- 把VC应用程序添加到自动启动的注册表项中
- 暑期集训总结
- OpenGL 自由旋转
- Ajax1.0 在vs2005上运用的问题
- ,你吗,你
- Grub2引导WinXP
- 微软STL的一个bug
- Ubuntu环境初始化
- 学习计划
- 今天有个好玩的东西,ubuntu下的rar
- 浏览器如何生成Web页面