计算机图形学课程设计___三维线段的端点编码裁剪及其显示.docVIP

计算机图形学课程设计___三维线段的端点编码裁剪及其显示.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机图形学 课程设计报告 题 目: 三维线段的端点编码裁剪及显示 专业班级: 信计1101班 时 间: 2014年1月2日 计算机图形学课程设计报告 一、所选题目 三维线段的端点编码裁剪算法及显示 二、题目要求 对于三维线段,裁剪体为长方体,应用端点编码裁剪算法对线段进行裁剪,做XOY平面的平行投影,要求分别绘制裁剪体、带裁剪线段和裁剪后线段。 三、小组成员及具体分工 薛小娜(组长):算法设计,编译 杨 益:算法分析 张龙娟:完善程序 程军强:报告总结 四、任务分析 本题主要包括两个任务: 长方体及三维线段的显示流程;(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=,从右到左依次代表左,右,下,上,后,前。 为了保证窗口内直线线段端点编码RC的6位二进制区域码全部为零,每位二进制区域编码编码规则如下: 第一位:若端点位于窗口之后侧,则=1,否则=0; 第一位:若端点位于窗口之前侧,则=1,否则=0; 第一位:若端点位于窗口之左侧,则=1,否则=0; 第一位:若端点位于窗口之右侧,则=1,否则=0; 第一位:若端点位于窗口之下侧,则=1,否则=0; 第一位:若端点位于窗口之上侧,则=1,否则=0; ⑵裁剪算法: ① 首先需要计算三维直线的俩个端点的编码;并且假设初始化的该直线的俩个端点的区域编码不都为零; ②判断该线段若在某条边界外侧,若p0点的编码全为0,说明该点可见,则需要对p1点进行处理; ③如果p1点在左边界外侧情况下需要求线段与左边界交点,否则需要求p1点在右边界外侧的情况下线段与右边界交点; ④在不满足③的情况下需要求p1点在下边界外侧情况下线段与下边界交点,否则求p1点在上边界外侧,求线段与上边界交点; ⑤在不满足③ ④的情况下,需要求p1点在后边界外侧情况下求线段与后边界交点,否则求p1点在前边界外情况下线段与前边界交点。 ⑥若处理的是端点p0,则替换端点,求新的端点编码;若处理的是端点p1,则替换端点,求新的端点编码;直到判断到俩个端点编码都为零。 3、待裁剪线段及裁剪后线段的实现 该程序用数组来保存裁剪线段,其中,来保存裁剪前的线段端点,,来保存裁剪后的两点坐标,最终用蓝色实线画出,用绿色虚线画出及 4、窗—视变换 先分别定义窗口和视区的大小, 视区:vxl,vxr,vyb,vyt 窗口:wxl,wxr,wyb,wyt 利用转换公式 a=(vxr-vxl)/(wxr-wxl); b=vxl-a*wxl; c=(vyt-vyb)/(wyt-wyb); d=vyb-c*wyb; 则转换后的坐标为: pt2D[i].x=pts[i].x*a+b; pt2D[i].y=pts[i].y*c+d; 5、旋转 定义函数RotateX(int angle)及RotateY(int angle),利用转换公式完成转换。 六、算法步骤 ① 定义结构和变量 定义三维齐次坐标结构和面结构;定义长方体表面模型,顶点表为顶点结构数组pts[8],面表为面结构数组faces[6];定义待裁剪线段的两个端点p1,p2和裁剪后线段的两个端点p3,p4。 ② 变量初始化 在视图类构造函数中给顶点表赋值;给面表赋值(注意顶点序列顺序);给待裁剪线段端点赋值;给待裁剪线段端点赋原点值进行初始化。 ③ 在视图类中添加计算端点编码的函数;添加三维线段裁决的函数。定义线段裁剪时用到的六条边界,各边界的取值为长方体相应的值。 ④ 分别对长方体、待

文档评论(0)

liyxi26 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档