- 1、本文档共79页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章_图形变换与观察概要
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 多边形裁剪 多边形的裁剪算法主要要解决两种情况: (1)一个封闭的多边形被裁剪后通常变得不
您可能关注的文档
- 第5章 受压构件正截面的性能与设计概要.ppt
- 南医大药物分析第18章药物制剂分析概要.ppt
- 第5章 基础知识概要.ppt
- 第5章 存储管理概要.ppt
- 南山防冲示范矿井201401012概要.doc
- 南医大药物分析第17章合成合成抗菌药物的分析(简)概要.ppt
- 第5章 多媒体技术及应用_xbf概要.ppt
- 南四湖生态环境保护试点总体实施方案概要.doc
- 第5章 对话框控件概要.ppt
- 南开15秋学期《DirectX程序设计》在线作业概要.doc
- 2025年桐城市“事编企用”人才引进12人笔试备考题库附答案详解.docx
- 2025年广西百色市西林县司法局招聘3人笔试高频难、易错点备考题库及答案详解一套.docx
- 2025年桂林市公安局第二批警务辅助人员招聘120人笔试高频难、易错点备考题库含答案详解.docx
- 2025年广东韶关乳源瑶族自治县第一小学招聘临聘教师笔试高频难、易错点备考题库带答案详解.docx
- 2025年新疆地质局招聘226名工作人员笔试高频难、易错点备考题库及答案详解1套.docx
- 2025年新疆维吾尔自治区气象局事业单位招聘应届生(第三批第1号)笔试备考题库附答案详解.docx
- 2025年枣阳市专项引进产业紧缺人才笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年昌平区卫生健康委员会第二批招聘21人笔试备考题库附答案详解.docx
- 2025年曲阜师范大学招聘10人(博士辅导员)笔试备考题库及参考答案详解一套.docx
- 2025年惠州市公安局惠城区分局第二批辅警招聘48人笔试高频难、易错点备考题库带答案详解.docx
文档评论(0)