opengl 坐标系问题,高手请进~~~~~

zxh8212166 2010-09-17 05:23:40
我现在想做一个鼠标转动正方体的程序。就是鼠标左右移,正方体就绕Y轴转,上下移就绕X轴转。
我的代码是
glRotatef(X, 0, 1, 0);
glRotatef(Y, 1,0,0 );

但是问题来了,我现左移90度,物体左转90度。然后鼠标上移90度,物体却绕Z轴转来90度,而不是X轴。
我现在也知道原因,是因为他们转动是以物体坐标系来的,而不是世界坐标系。

但是我现在想实现我本来的意图,请问大家有办法马?
...全文
84 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingzhe2001 2010-09-19
  • 打赏
  • 举报
回复
或者你不要再以前的基础上用glRotatef,而是在变量里保存总共绕x轴旋转多少,绕y轴旋转多少,然后每次都是从0开始旋转到需要的角度,就好一点了
zxh8212166 2010-09-19
  • 打赏
  • 举报
回复
我也知道啊,但是有几个问题,
1.这个坐标系很难维护
2.因为每次都要重置矩阵,比如我先绕X转90,再绕Y转90。下次再转的时候我只知道X转90,Y转90。但是不知道哪个先哪个后啊。先后不一样。结果就不一样。


我估计只能用四元组去解了
张赐 2010-09-18
  • 打赏
  • 举报
回复
正方体有个模型坐标系,当旋转正方体后,模型坐标系也跟随旋转的

旋转一次后,再一次旋转的话,因该取出旋转后的模型坐标系中的x,y,z来进行旋转
xingzhe2001 2010-09-17
  • 打赏
  • 举报
回复
这是欧拉角的万向锁问题。可以用四元数计算旋转就可以避免
用glrotatef函数的话,你需要计算第一次旋转后世界坐标的y轴在旋转后的空间里的坐标,然后绕那个y旋转

4,447

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧