Qt+OpenGl 如何实现三维点的 平移旋转操作
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/08/09 23:47:13
Qt+OpenGl 如何实现三维点的 平移旋转操作
我现在可以分别实现 旋转、平移.一旦,旋转和平移交替操作就会回到屏幕中心.给个可以用的平移、旋转函数啊.
![](http://img.wesiedu.com/upload/b/b8/bb8fab89d29f0d2b349e60f760b669a8.jpg)
我现在可以分别实现 旋转、平移.一旦,旋转和平移交替操作就会回到屏幕中心.给个可以用的平移、旋转函数啊.
![](http://img.wesiedu.com/upload/b/b8/bb8fab89d29f0d2b349e60f760b669a8.jpg)
![Qt+OpenGl 如何实现三维点的 平移旋转操作](/uploads/image/z/18146245-13-5.jpg?t=Qt%2BOpenGl+%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E4%B8%89%E7%BB%B4%E7%82%B9%E7%9A%84+%E5%B9%B3%E7%A7%BB%E6%97%8B%E8%BD%AC%E6%93%8D%E4%BD%9C)
平移操作 调 函数 glTranslatef
glTranslatef(12.3,0.,0.); -- 沿x 平移12.3
glTranslatef(0.,34.5,0.); -- 沿y 平移34.5
glTranslatef(0.,0.0,67.8); -- 沿z 平移67.8
旋转操作调 函数 glRotated 或 glRotatef ,前者参数1是角度值 整型,后者是 float型.
glRotated(3,1,0,0); -- 绕 x 轴 转 3 度
glRotated(3,0,1,0); -- 绕 y 轴 转 3 度
glRotated(3,0,0,1); -- 绕 z 轴 转 3 度
这段程序画 三维空间的 NN 个点,每个点用一个边长c1的立方块表示,颜色由z值决定.
for (i = 0; i< NN ; i++)
{
glPushMatrix();
glTranslatef(x[i],y[i],z[i]);
(void) my_color(z_color(z[i]));
(void) glutSolidCube(c1);
glPopMatrix();
}; // end for i
-----------------
注意 平移和转动的顺序,顺序不同,最终结果的位置和状态可能不能同.
必要时,加 glPushMatrix(); glPopMatrix(); 保证它是自己所要的位置转换.
再问: 我刚学OpenGl没多久,你讲的平移和旋转函数我也了解了,但是用鼠标控制时,平移效果一旦和旋转放大效果共同使用,就很不理想。你能否给个鼠标操作函数。或者加个qq576487873。
再答: 简单办法用GLUT ,并到SGI 找到 ZPR,把ZPR程序加入你的程序,就有Zoom,Pan,Rotate功能。 若只要 鼠标操作函数,用GLUT里的就可以了,不须要ZPR..
GLUT最后一版是3.7.6, 软件包很小。
glTranslatef(12.3,0.,0.); -- 沿x 平移12.3
glTranslatef(0.,34.5,0.); -- 沿y 平移34.5
glTranslatef(0.,0.0,67.8); -- 沿z 平移67.8
旋转操作调 函数 glRotated 或 glRotatef ,前者参数1是角度值 整型,后者是 float型.
glRotated(3,1,0,0); -- 绕 x 轴 转 3 度
glRotated(3,0,1,0); -- 绕 y 轴 转 3 度
glRotated(3,0,0,1); -- 绕 z 轴 转 3 度
这段程序画 三维空间的 NN 个点,每个点用一个边长c1的立方块表示,颜色由z值决定.
for (i = 0; i< NN ; i++)
{
glPushMatrix();
glTranslatef(x[i],y[i],z[i]);
(void) my_color(z_color(z[i]));
(void) glutSolidCube(c1);
glPopMatrix();
}; // end for i
-----------------
注意 平移和转动的顺序,顺序不同,最终结果的位置和状态可能不能同.
必要时,加 glPushMatrix(); glPopMatrix(); 保证它是自己所要的位置转换.
再问: 我刚学OpenGl没多久,你讲的平移和旋转函数我也了解了,但是用鼠标控制时,平移效果一旦和旋转放大效果共同使用,就很不理想。你能否给个鼠标操作函数。或者加个qq576487873。
再答: 简单办法用GLUT ,并到SGI 找到 ZPR,把ZPR程序加入你的程序,就有Zoom,Pan,Rotate功能。 若只要 鼠标操作函数,用GLUT里的就可以了,不须要ZPR..
GLUT最后一版是3.7.6, 软件包很小。
如何通过鼠标点击获得鼠标点的三维世界坐标呢?OPENGL
怎么通过opengl实现一个二维图形的平移和曲线移动呢?
Qt 画的矩形怎么旋转
平移、旋转、轴对称的异同点
操作,先将三角形绕C点按顺时针方向旋转90°,再将旋转后的三角形向右平移四格.
matlab中如何画旋转的三维图
几何画板 中图像平移,旋转,伸缩变换,对称变换,如何操作
用matlab实现以下的问题:已知一个具体的平面方程,如何画出三维点的图形
思想品德教学中如何实现“三维目标”的统一
求算法:opengl 绕任意轴旋转后的坐标
在几何画板中我想向学生演示一张图片先平移后旋转180度的动画,并设置可控按钮,该如何操作?
精馏塔的常压操作如何实现?如果要改为加压或减压操作,如何实现?