文档详情

《ch0二维观察与裁剪0》-课件.ppt

发布:2018-11-17约1.64万字共89页下载文档
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3、求交点,确定P1P2可见部分 斜率测试中的坐标差值和计算结果用于求交计算。 由参数方程式: x=x1+(x2-x1)u;y=y1+(y2-y1) 。 与窗口左边界的x交点位置是: x=xL, u=(xL-x1)/(x2-x1), 所以,y交点的位置是:y=y1+[(y2-y1)/(x2-x1)](xL-x1) 并且与窗口顶部边界的交点是: y=yT, u=(yT-y1)/(y2-y1), 所以,x交点的位置是:x=x1+[(x2-x1)/(y2-y1)](yT-y1) Nicholl-Lee-Nicholl 算法 内裁剪与外裁剪 保留并显示窗口内的线段称为内裁剪 保留并显示窗口外的线段称为外裁剪 用途 (1)用于凹多边形裁剪窗口的线段裁剪 v1 v2 v3 v4 v5 p1 p2 (2)应用与多重窗口显示 显示窗口 窗口1 窗口2 窗口3 内裁剪与外裁剪 多边形裁剪 错觉:直线段裁剪的组合? 新的问题:1)边界不再封闭,需要用窗口边界的恰当部分来封闭它,如何确定其边界? 待裁剪多边形 裁剪窗口 裁剪结果 待裁剪多边形 裁剪结果 裁剪窗口 多边形裁剪 2)一个凹多边形可能被裁剪成几个小的多边形,如何确定这些小多边形的边界? 裁剪窗口 待裁剪多边形 裁剪结果 亦称逐边裁剪算法 Sutherland-Hodgman算法 分割处理策略:将多边形关于矩形窗口的裁剪分解为多边形关于窗口四边所在直线的裁剪。 流水线过程(左上右下):前边的结果是后边的输入。 V0 V1 V2 V3 (a) V0 V2 V3 V4 (b) V1 V1 V3 V4 V5 (c) V2 V0 V2 V4 V6 V7 (d) V3 V1 V5 V0 V1 V2 V4 V7 V0 (e) V3 V6 V5 V8 Sutherland-Hodgman算法 基本思想是一次用窗口的一条边裁剪多边形。 考虑窗口的一条边以及延长线构成的裁剪线该线把平面分成两个部分:可见一侧;不可见一侧 多边形的各条边的两端点S、P。它们与裁剪线的位置关系只有四种 可见侧 S P 可见侧 S P 可见侧 P S 可见侧 P S (1) (2) (3) (4) Sutherland-Hodgman算法 情况(1)仅输出顶点P; 情况(3)输出0个顶点; 情况(2)输出线段SP与裁剪线的交点I; 情况(4)输出线段SP与裁剪线的交点I和终点P 可见侧 S P 可见侧 S P 可见侧 P S 可见侧 P S (1) (2) (3) (4) 两个基本问题 (1) 判定可见性,即判定点位于裁剪线哪一侧 Sutherland-Hodgman算法 假定裁剪窗口沿顺时针方向,取剪裁线e的内法矢量n,从剪裁线上点v到判别点p e p n p v 若:n?vp0, 则p点位于e的可见侧 若:n?vp0, 则p点位于e的不可见侧 例:设上图中剪裁边e为s1(1,-1)到s2(2,1)点的线段,判定点p1(1,2),p2(2,-1)关于裁剪线e的可见性。 解:s1s2=(1,2),法向量n=(2,-1),其为内法向量 v取s1点,则vp1=(0,3),vp2=(1,0),所以n?vp1=-30, n?vp2=20 ,p1在不可见侧,p2在可见侧。 (2) 线段求交问题 Sutherland-Hodgman算法 若线段一端在裁剪线的外侧另一端在裁剪线的内侧,则其必须与裁剪线相交,现就参数方程表示的曲线来讨论其交点。 设两线段的端点分别为p1,p2,q1,q2,则直线的参数方程分别为: p(s)=p1+(p2-p1)s, 0?s?1 q(t)=q1+(q2-q1) t, 0?t?1 在交点处有 p(s)=q(t) 因为 p(s)=(x(s),y(s)),q(t)=(x(t),y(t)) 所以有方程x(s)=x(t), y(s)=y(t)。 方程若无解,则两线段平行,若解在[0,1]在之外,两线段不相交 Sutherland-Hodgman算法 例:求上例中剪裁边e为s1(1,-1)到s2(2,1)点的线段,和点p1(1,2)到p2(2,-1)线段的交点。 q(t)=q1+(q2-q1)t=(1,-1)+(1,2)t p(s)=p1+(p2-p1)s=(1,2)+(1,-3)s t=s; t=s=3/5 交点为(8/5,1/5) -1+2t=2-3s 一般情
显示全部
相似文档