|
|
为了方便观察我所绘制的三维有限元网格,我准备用鼠标来实现对图形的平移,旋转,缩放。具体如下:
点击鼠标左键,拖动鼠标,抬起鼠标左键。通过鼠标在屏幕上拾取点间的距离与窗口大小与网格代表实际尺寸间的比例换算出网格在整体坐标下 X ,Y方向的平移。
点击鼠标右键,拖动鼠标,抬起鼠标右键。通过鼠标在屏幕上拾取点间的距离与窗口大小与网格代表实际尺寸间的比例换算出网格在整体坐标下绕X轴方向旋转的角度,绕Y轴方向旋转的角度。
我发现我用 glPushMatrix(),glPopMatrix(),glTranslated(),glRotated(),无论如何组合也达不到我的目的。举个例子如下(只给个大概流程):
1。 glPushMatrix();
glRotated(rotatex,1.0,0.0,0.0);
glPushMatrix();
glRotated(rotatey,0.0,1.0,0.0);
glPushMatrix();
glTranslated(transx,transy,0.0);
..........
glPopMatrix();
glPopMatrix();
glPopMatrix();
这样肯定不行,因围绕整体坐标 x周转完后,就绕局部坐标 y周转了!!!
2。glPushMatrix();
glRotated(rotatex,1.0,0.0,0.0);
glPopMatrix();
glPushMatrix();
glRotated(rotatey,0.0,1.0,0.0);
glPopMatrix();
glPushMatrix();
glTranslated(transx,transy,0.0);
.......
glPopMatrix();
这样也不行,因为前两个旋转根没做一样!!!!
我还试过他们的其他组合,也不行!!!
不加glPushMatrix();glPopMatrix();也不行!!!!
归根到底,glRotated,glTranslated是对局部坐标操作!!!!是不是要用到其他的命令呢?
我不想通过调整观察角度的方法达到目的,那我应怎样做呢?!!!
|
|