使用Opengl库实现
实验一
一、实验目的
1.熟悉3D基本编程。
2.熟悉视点观察函数的设置和使用。3.熟悉投影变换函数的设置和使用。4.熟悉基本3D图元的绘制。
二、实验内容
1.读懂以下3D物体程序,并结合本书内容理解一些新的绘制函数和投影变换函数的含义:3D Cube.cpp(见后面参考程序)为正交投影下的旋转3D立方体,按下鼠标可实现不同方向的旋转,效果图参见实验图9-1,分析3D编程代码与程序结构。
对于以下操作需要记录不同效果图和修改的相应参数:
1)让静止的立方体绕Z轴不停旋转。
修改参数:
- // 设置旋转轴:两个三维的点确定的旋转轴
- GLfloat axis[][3] = {
- 0.5f,0.5f, 0.0f,
- 0.5f, 0.5f, 1.0f
- };
- // 设置绕给定的轴旋转
- glTranslatef(axis[0][0], axis[0][1], axis[0][2]);
- glRotatef(angle, axis[1][0] - axis[0][0], axis[1][1] - axis[0][1], axis[1][2] - axis[0][2]);
- glTranslatef(-axis[0][0], -axis[0][1], -axis[0][2]);
2)修改不同视点,目标点不变,观看显示效果。
gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, -1, -1, 1); 相当于我们的脑袋位置在(0.0,0.0,5.0)处,眼睛望向(0.0,0.0,0.0),即原点。后面的三个参数(-1, -1, 1),不变
修改:gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, -1, -1, 1);
3)修改目标点,视点不动,观看显示效果。
修改:gluLookAt(2, 2, 2, 0.0, 0.0, 0.0, -1, -1, 1);
为:gluLookAt(2, 2, 2, 0.0, 1, 0.0, -1, -1, 1); 修改目标点,视点不动
结果如下:
4)视点与目标点同时修改,观看显示效果。
修改:gluLookAt(2, 2, 2, 0.0, 0.0, 0.0, -1, -1, 1);
为:gluLookAt(1, 2, 0, 0.0, 1, 0.0, -1, -1, 1);//修改目标点和视点
结果如下:
5)视点与目标点不变,修改观察体大小,观看显示效果。
//修改正方体大小即修改顶点位置,代码如下:
- static const GLfloat vertex[][3] = {
- 3d编程基础 0.0f, 0.0f, 0.0f,
- 1.5f, 0.0f, 0.0f,
- 0.0f, 1.5f, 0.0f,
- 1.5f, 1.5f, 0.0f,
- 0.0f, 0.0f, 1.5f,
- 1.50f, 0.0f, 1.5f,
- 0.0f, 1.5f, 1.5f,
6)将正交投影观察体改为透视投影观察体,并设置其大小,观察显示效果。
核心代码更改:
两者变化如下:
7)将立方体替换为茶壶,观看显示效果。
核心代码:
实验结果:
8)将立方体替换为圆环,观看显示效果。
核心代码:
实验结果:
⒉.构思绘制茶壶和圆环造型程序Teapot_Torus.cpp。在紧挨着茶壶下方添加一个平行的圆环,茶壶和圆环不停绕中心轴旋转,观看显示效果,效果图参见实验图9-2。
实验结果:
三、最终代码
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/25.html