- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机图形学 河南理工大学 Next: 交互技术 5.1 裁剪 0010 1010 1000 0000 0001 1001 0101 0100 0110 L1 L2 L3 L4 L5 区域编码和位置关系示意图 P1 P2 P3 P4 裁剪一条线段时,先求出两端点所在的区号code1和code2,若code1 = 0且code2 = 0,则说明线段的两个端点均在窗口内,那么整条线段必在窗口内,应取之,如图中的线段L3;若code1和code2经按位与运算的结果不为0,则说明两个端点同在窗口的上方、下方、左方或右方。如图中的线段L1,其两端点的编码与运算的结果code1 code2 = 1000,左起第一位不为0说明两端点均在窗口上方,L1肯定在窗口之外。这种情况下,对线段的处理是弃之。 5.1 裁剪 0010 1010 1000 0000 0001 1001 0101 0100 0110 L1 L2 L3 L4 L5 区域编码和位置关系示意图 P1 P2 P3 P4 裁剪一条线段时,先求出两端点所在的区号code1和code2,若code1 = 0且code2 = 0,则说明线段的两个端点均在窗口内,那么整条线段必在窗口内,应取之,如图中的线段L3;若code1和code2经按位与运算的结果不为0,则说明两个端点同在窗口的上方、下方、左方或右方。如图中的线段L1,其两端点的编码与运算的结果code1 code2 = 1000,左起第一位不为0说明两端点均在窗口上方,L1肯定在窗口之外。这种情况下,对线段的处理是弃之。 如果上述两种条件都不成立,则按第三种情况处理。求出线段与窗口某边的交点,在交点处把线段一分为二,其中必有一段完全在窗口外,可弃之,对另一段则重复上述处理。 5.1 裁剪 Cohen-Sutherland编码裁剪算法的C程序如下: #define LEFT 1 #define RIGHT 2 #define BOTTOM 4 #define TOP 8 void encode(float x, float y, float XL, float XR, float YB, float YT, int* code) { int c = 0; if (xXL) c = c|LEFT; else if (xXR) c = c|RIGHT; if (yYB) c = c|BOTTOM; else if(yYT) c = c|TOP; *code=c; return; } 5.1 裁剪 void C_S_LineClip(float *x1, float *y1, float *x2, float *y2, float XL, float XR, float YB, float YT) { int code1,code2,code; float x, y; encode(x1, y1, XL, XR, YB, YT, code1); encode(x2, y2, XL, XR, YB, YT, code1); while (code1!=0 || code2!=0) { if ((code1 code2)!=0) return; code = code1; if (code1==0) code = code2; if ((LEFT code)!=0) { //线段与左边界相交 x = XL; y = y1+(y2-y1)*(XL-x1)/(x2-x1); } 5.1 裁剪 else if ((RIGHT code)!=0) //线段与右边界相交 { x = XR; y = y1+(y2-y1)*(XR-x1)/(x2-x1); } else if ((BOTTOM code)!=0)//线段与下边界相交 { y = YB; x= x1+(x2-x1)*(YB-y1)/(y2-y1); } else if ((TOP code)!=0)//线段与上边界相交 { y = YT; x= x1+(x2-x1)*(YT-y1)/(y2-y1); } 5.1 裁剪 if (code==code1){ *x1 = x; *y1 = y; encode(x, y, XL, XR, YB, YT, code1); } else{ *x2 = x; *y2 = y; encode(x, y, XL, XR, YB, YT, code2); } } return; } 5.1 裁剪 5.5.3 多边形裁剪 多边形的裁剪算法主要要解决两
您可能关注的文档
- 计算机基础 第2版 教学课件 ppt 作者 王丽华 何世勇第五章5.5.ppt
- 计算机基础 第2版 教学课件 ppt 作者 王丽华 何世勇第一章1.1.ppt
- 计算机基础 第2版 教学课件 ppt 作者 王丽华 何世勇第一章1.2.ppt
- 社会工作方法 教学课件 ppt 作者 芮洋 模块三.ppt
- 计算机基础 第2版 教学课件 ppt 作者 王丽华 何世勇第一章1.3.ppt
- 社会工作方法 教学课件 ppt 作者 芮洋 模块四.ppt
- 计算机基础 第2版 教学课件 ppt 作者 王丽华 何世勇第一章1.4.ppt
- 社会工作方法 教学课件 ppt 作者 芮洋 模块五.ppt
- 计算机基础 第2版 教学课件 ppt 作者 王丽华 何世勇第一章1.5.ppt
- 社会工作方法 教学课件 ppt 作者 芮洋 模块一.ppt
最近下载
- 2025年2月党支部“三会一课”会议记录模板(详版).docx VIP
- ISO 9001(DIS)-2026《质量管理体系——要求》(含附录使用指南-中文版-雷泽佳译-2025年9月10日).pdf VIP
- 番茄收获机的设计.doc VIP
- 2025小红书电商双11-大健康保健品行业运营指南.pptx VIP
- 培智六年级上册人教版生活语文第6课《勤劳的双手》4课时教案.doc VIP
- 我爱你中国F调正谱伴奏艺术歌曲.pdf VIP
- 3.2细胞器之间的分工合作 课件(共26张PPT) 人教版(2025)高中生物学必修1(含音频+视频).ppt VIP
- 抗病毒治疗(国家免费艾滋病抗病毒药物治疗手册(第5版)课件).pptx VIP
- 日常生活活动能力评定量表.docx VIP
- 2025年管理百年南昌大学章节答案和期末答案.docx VIP
原创力文档


文档评论(0)