- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章_二维观察
第六章 二维观察;主要内容;6.1 观察流程; 要将窗口内的图形在视区中显示出来,必须经过将窗口到视区的变换(Window-Viewport Transformation)处理,这种变换就是观察变换(Viewing Transformation)。;(1)、模型坐标系(局部坐标系):当构造单个对象的数字模型
时,为了方便,可以将其置于一个特定的坐标系下,即模型坐
标系或局部坐标系.;观察坐标系(View Coordinate)和规格化坐标系(Normalized Device Coordinate)
观察坐标系是依据窗口的方向和形状在世界坐标平面中定义的直角坐标系。
规格化坐标系也是直角坐标系,它是将二维的坐标系规格化到(0.0,0.0)到(1.0,1.0)的坐标范围内形成的。
;; 引入了观察坐标系和规格化设备坐标系后,观察变换分为如下图所示的几个步骤,通常称为二维观察流程,或者二维观察变换流水线。;二维图形的显示流程图;?变焦距效果;?整体放缩效果;6.2 世界坐标系到观察坐标系的变换
世界坐标系到观察坐标系的变换分由两个变换步骤合成:
1. 将观察坐标系原点移动到世界坐标系原点
;
2. 绕原点旋转使两坐标系重合
;窗口到视区的变换;
要将窗口内的点(xw,yw)映射到相对应的视区内的点(xv,yv)需进行以下步骤:
(1) 将窗口左下角点移至世界系统系的坐标原点
(2) 针对原点进行比例变换
(3) 进行反平移
;?窗口内的点(xw,yw)映射到对应视口的点(xv,yv),为保证视区与窗口中相同对象具有同样的相对位置,需满足:
;;;窗口到视区的变换;6.3 裁剪;假设窗口是标准矩形,即边与坐标轴平行的矩形,由上(y=ywmax)、下(y=ywmin)、左(x= xwmin)、右(x= xwmax)四条边描述。
一、点的裁剪;;实交点是直线段与窗口矩形边界的交点。
虚交点则是直线段与窗口矩形边界延长线或直线段的延长线与窗口矩形边界的交点。;直接求交算法;;1、算法的的基本思想:对于每条线段P1P2分为三种情况处理。
(1)若P1P2完全在窗口内,则显示该线段P1P2简称“取”之。
(2)若P1P2明显在窗口外,则丢弃该线段,简称“弃”之。
(3)若线段既不满足“取”的条件,也不满足“弃”的条件,则在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。 ;2、Sutherland–Cohen算法分成两部分:
第一步是判定:
1) 完全在窗口内的直线段,称为
完全可见的线段;
2) 完全在窗口外的线段,称为
完全不可见线段。
第二步处理不能断定为完全可见或完全不可见的线段。
*这时需要计算出直线段和窗口边界的一个交点,这个交点把直线分成两段,其中一条为完全不可见的线段,被抛弃。
*对余下部分再作第一步的判断,重复上述过程,直到直线段余下的部分可用第一步的判断得出肯定的结论为止。;a:算法的第一步 判断完全可见/不可见;b:算法的第二步;程序代码 ;程序代码 ;算法的步骤:
(1) 输入直线段的两端点坐标:p1(x1,y1)、p2(x2,y2),以及窗口的四条边界坐标:xwmin、xwmax、ywmin、ywmax。
(2) 对p1、p2进行编码:点p1的编码为code1,点p2的编码为code2。
(3) 若code1|code2=0,对直线段应简取之,转(6);否则,若code1code2≠0,对直线段可简弃之,转(7);当上述两条均不满足时,进行步骤(4)。
(4) 确保p1在窗口外部:若p1在窗口内,则交换p1和p2的坐标值和编码。
(5) 按左、右、下、上的顺序求出直线段与窗口边界的交点,并用该交点的坐标值替换p1的坐标值。也即在交点s处把线段一分为二,并去掉p1s这一段。考虑到p1是窗口外的一点,因此可以去掉p1s。转(2)。
(6) 用直线扫描转换算法画出当前的直线段p1p2。
(7) 算法结束。;;Sutherland–Cohen直线裁剪算法小结;基本思想:从P0点出发找出离P0最近的可见点,和从P1点出发找出离P1最近的可见点。这两个可见点的连线就是原线段的可见部分。
与Cohen-Sutherland算法一样首先对线段端点进行编码,并把线段与窗口的关系分为三种情况,对前两种情况,进行一样的处理;对于第三种情况,用中点分割的方法求出线段与窗口的交点。A、B分别为距P0 、 P1最近的可见点,Pm为P0P1中点。
;中点分割算法-求线段与窗口的交点;算法步骤:
(1)输入直线段的两端点坐标:p1(x1,y1)、p2(x2,y2),以及窗口的四条边界坐标:xwmin、xwmax、ywmin、ywmax。
(2)对p1、p2
文档评论(0)