计算机图形学
课程设计报告
题 目: 三维线段的端点编码裁剪及显示
专业班级: 信计 1101班
时 间: 2014 年 1 月 2 日
计算机图形学课程设计报告
一、所选题目
三维线段的端点编码裁剪算法及显示
二、题目要求
对于三维线段,裁剪体为长方体,应用端点编码裁剪算法对线段进行裁剪,
做 XOY 平面的平行投影,要求分别绘制裁剪体、带裁剪线段和裁剪后线段。
三、小组成员及具体分工
薛小娜(组长):算法设计,编译
杨 益:算法分析
张龙娟:完善程序
程军强:报告总结
四、任务分析
本题主要包括两个任务:
(1)长方体及三维线段的显示流程; (2)三维线段的端点编码裁剪算法。
任务( 1)中,包括长方体的定义:三维点结构(齐次坐标,结构中应有
x, y, z, w 分量);面结构,其实为面的外环,即构成该面的顶点序列(逆时针顺
序);三维线段的两个端点;三维几何变换;平行投影变换;窗口 -视区变换;
任务( 2)中,长方体的六个边界定义,三维点的端点编码,三维线段端点
编码裁剪算法
五、核心算法描述
1.裁剪矩形的实现
对于裁剪矩形,可在头文件里定义三维点齐次结构 HOMOCOORD ,三维齐
次结构中有 x,y,z,w 四个分量,分别对应矩形的八个顶点的三维坐标 x,y,z 及其次
坐标 w=1 。定义面结构 PLANE ,面结构中包含该面的四个顶点(逆时针顺序) 。
通过这两个结构可以将实现裁剪矩形顶点的保存。
再定义 PLANE 结构,该结构包含 x,y ,分别用来存储三维坐标转换为二维
坐标后的顶点信息。
2.三维直线的端点编码裁剪算法
⑴ 编码规则:
根据直线的任一端点 P(x,y,z)相对于窗口的位置,可以赋予一组 6 位二进制
区域编码 RC=C C C C C C ,从右到左依次代表左,右,下,上,后,前。
6 5 4 3 2 1
为了保证窗口内直线线段端点编码 RC 的 6 位二进制区域码全部为零, 每位
二进制区域编码编码规则如下:
第一位 C :若端点位于窗口之后侧,则 C =1,否则 C =0;
1 1 1
第一位 C :若端点位于窗口之前侧,则 C =1,否则 C =0 ;
2 2 2
第一位 C :若端点位于窗口之左侧,则 C =1,否则 C =0 ;
3 3 3
第一位 C4 :若端点位于窗口之右侧,则 C4 =1,否则 C4 =0 ;
第一位 C :若端点位于窗口之下侧,则 C =1,否则 C =0 ;
5 5 5
第一位 C :若端点位于窗口之上侧,则 C =1,否则 C =0 ;
6 6 6
⑵裁剪算法:
① 首先需要计算三维直线的俩个端点的编码;并且假设初始化