毕业论文

打赏
当前位置: 毕业论文 > 电子通信 >

VC++虚拟现实技术制作电机模型仿真软件(7)

时间:2017-06-06 21:28来源:毕业论文
在本课题的研究过程中,通过视点变换和模型变换相结合,来达到课程设计的要求。但是,遇到很多问题,比如当需要的转换是一个序列时,即既有平移变


在本课题的研究过程中,通过视点变换和模型变换相结合,来达到课程设计的要求。但是,遇到很多问题,比如当需要的转换是一个序列时,即既有平移变换又有旋转变换的时候,这两个命令的顺序对实际的模型操作的作用是不同的,比如下面这段代码:
......
glTranslatef(0.0,0.0,20.0);              //平移命令
glRotatef(45.0,1.0,0.0,0.0);            //旋转命令
画电机模型;......
那么它的实际效果如图4.2所示:   
图4.2  平移命令在前                   图4.3  旋转命令在前
而当变换两个平移命令的顺序时,实际的效果如上图4.3所示:
这就使本课题中如果要实现对电机模型的旋转和平移变换,则顺序一定要是平移命令在前面,旋转命令在后面,这样才可以实现电机各部分的自转效果(即绕三个轴的旋转),也就是图4.2的效果而不是图4.3的效果。
4.2  本课题的难点—1.实现自由控制电机及其各部分转动2.电机各部分组成一个整体3.电机各部分的选取和拆卸
在成功导入和画出电机各部分模型之后,为了体现其3D效果,需要用鼠标控制模型绕中心转动,这里要用到MessageTranslate类,其作用是反馈鼠标的运动位移信息,程序中我用的是g_fSpinX和g_fSpinY这个变量来保存鼠标在X和Y方向的总的位移量,实现语句是:      g_fSpinX-=(ptCurrentMousePosit.x-ptLastMousePosit.x);
g_fSpinY-=(ptCurrentMousePosit.y-ptLastMousePosit.y);然后将这两个变量作为旋转函数glRotatef的参数,语句是:
glRotatef( -g_fSpinY, 0.0f, 1.0f, 0.0f );
glRotatef( -g_fSpinX, 1.0f, 0.0f, 0.0f );不得不指出的是不能忘记在这个窗 VC++虚拟现实技术制作电机模型仿真软件(7):http://www.youerw.com/tongxin/lunwen_8535.html
------分隔线----------------------------
推荐内容