MFC,OpenGL,三维物体绕坐标轴旋转的问题

章鱼小八 2018-12-25 05:31:10
要求:先画一个正方体,然后显示出世界坐标系和模型的局部坐标系,然后能够选择旋转的坐标轴,鼠标拖动模型绕该坐标轴旋转;要求是多次操作,模型可以连续绕不动的世界坐标系的坐标轴旋转


除了旋转的问题,其余工作都做好了,我现在连续旋转的时候不是完全以世界坐标系为旋转轴。

我也知道我的错误所在:我把三个旋转函数放到模型及局部坐标系的前面,DozMouseRotate()先作用于模型,则旋转的时候Z轴是按照局部坐标系旋转的(一开始世界坐标系与局部坐标系重合)。并且选择旋转坐标轴的顺序不同时,会出现各种不同的情况。但是我也初学,不知道怎么改了,谁能帮忙看看~~~


gluLookAt(200.0,200.0,200.0,0.0,0.0,0.0, 0.0,0.0,1.0);//定义观察坐标系


glBegin(GL_LINES);//世界坐标系

glColor3f(0.0,0.0,1.0);
glVertex3f( 0.0, 0.0, 0.0);
glVertex3f( 60.0, 0.0, 0.0);

glColor3f(0.0,1.0,0.0);
glVertex3f( 0.0, 0.0, 0.0);
glVertex3f( 0.0, 60.0, 0.0);

glColor3f(1.0,0.0,0.0);
glVertex3f( 0.0, 0.0, 0.0);
glVertex3f( 0.0, 0.0, 60.0);

glEnd();



DoxMouseRotate();

DoyMouseRotate();

DozMouseRotate();



glBegin(GL_LINES);//模型坐标系

glColor3f(0.0,0.0,1.0);
glVertex3f( 0.0, 0.0, 0.0);
glVertex3f( 60.0, 0.0, 0.0);

glColor3f(0.0,1.0,0.0);
glVertex3f( 0.0, 0.0, 0.0);
glVertex3f( 0.0, 60.0, 0.0);

glColor3f(1.0,0.0,0.0);
glVertex3f( 0.0, 0.0, 0.0);
glVertex3f( 0.0, 0.0, 60.0);

glEnd();

RenderScene(); //画一个正方体





...全文
149 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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