- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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。
② 变量初始化
在视图类构造函数中给顶点表赋值;给面表赋值(注意顶点序列顺序);给待裁剪线段端点赋值;给待裁剪线段端点赋原点值进行初始化。
③ 在视图类中添加计算端点编码的函数;添加三维线段裁决的函数。定义线段裁剪时用到的六条边界,各边界的取值为长方体相应的值。
④ 分别对长方体、待
您可能关注的文档
最近下载
- 分布式光伏并网调试方案_共3页.pdf VIP
- T∕ZZB 0096-2016 唇膏管标准规范.docx VIP
- 2025天猫皮肤科学美容趋势洞察报告.pdf VIP
- 生物科技·医研共创·精准时代:2025年中国肌肤修护消费市场趋势洞察.pdf VIP
- 立体几何大题综合- 十年(2015-2024)高考真题数学分项汇编(全国).pdf
- 高校协同育人的价值意蕴、现实困境及优化路径.docx VIP
- 仪器管理查房-心电监护.pptx VIP
- 吴咏梅澳门唐小燕香港陈丽英广州-HongKongArtsFestival.PDF VIP
- 《TY/T 2101-2024体育场馆智慧化 信息系统配置要求》.pdf
- 五粮液集团招聘笔试题库2025.pdf
文档评论(0)