计算机图形学课程设计-构造完整系统
计算机图形学课程设计-构造完整系统是一门综合了图形学、计算机科学、数学等多个领域的课程设计。该设计的主要目标是设计并实现一个能够以真实感图形显示的造型系统。通过本设计,学生可以加深对计算机图形学的理解,掌握图形学的基本理论和算法,并提高软件开发和编程能力。
主要功能:
1. 实现立方体、圆锥体、球体的数据输入和模型建立。
2. 将输入的体进行三角面片的划分,并对每个面进行消隐。
3. 对每个可见面进行投影,并自动建立新边表和有效边表。
4. 计算其光照,运用Phong模型插值得到面内部的颜色值,生成具有真实感物体。
5. 实现物体的旋转构造完整系统。
系统实现步骤:
步骤1:将各种三维图形的面划分为三角面片的形式。
步骤2:根据光照模型计算三角面片三个顶点处的颜色值,并保存起来。
步骤3:将三角面片的三个顶点进行透视投影,将它们转换到二维屏幕坐标系上。
步骤4:根据透视投影得到的三个顶点自动建立新边表和有效边表。
步骤5:根据三个顶点的颜色值利用插值公式得到内部各点的颜色值并显示出来。
小组分工:
* 郝刚:整体类框架的建立、Phong光照模型。
* 陈燕月:桶、边表的自动建立、旋转变换。
* 林惠珍:各种物体数据的设计、输入、投影、消隐、透视变换。
凸多面体消隐算法:
* 对于凸多面体的任一个面,可以根据其外法矢量和视矢量的夹角θ来进行可见性检测。如果两个矢量的夹角0°≤θ<90°时,表示该表面可见;如果90°<θ≤180°时,表示该表面不可见。
主要函数:
* InitParameter():透视变换常数。
* Project(P3d &P):透视变换。
* ReadPoint():读入点坐标。
* ReadFace():读入面坐标。
基本图形的数据结构:
* 在三维坐标系下,描述一个物体需要顶点表、边表和面表,才能完全表达清楚。
* 立体的数据结构包括边表结点、桶、边表的建立等。
旋转变换:
* 主要思想:将视点按一定的角度旋转,实现物体的旋转,期间光源的位置相对视点静止,所以光源位置和视点同步旋转。
* 视点旋转新坐标:改变Thta、Fei角即实现视点位置的改变。
* 光源位置和视点相对静止,求新坐标的基函数:Positionx=430*cos(PI/2+PI*Thta/180); Positiony=430*sin(PI/2+PI*Thta/180); Positionz=430*cos(PI/2+PI*Fei/180);
整体类框架的建立:
* 主要类结构:P2d类、P3d类、Face类、Verter类、ModelColor类、ModelLight类。
* 光照模型的实现:根据用户输入的材质信息、环境光、漫反射光、镜面反射光信息利用两个公式计算出三角面片三个顶点的颜色值,然后利用插值公式得到内部各点的颜色值。
通过本设计,学生可以:
* 加深对计算机图形学的理解,掌握图形学的基本理论和算法。
* 提高软件开发和编程能力。
* 培养团队合作精神。
系统虽然还有很多需要改进的地方,但本设计实现了计算机图形学课程设计的目标,提高了学生的软件开发和编程能力,并加深了对计算机图形学的理解。