理论教育 数字测图技术:直线段裁剪

数字测图技术:直线段裁剪

时间:2023-10-09 理论教育 版权反馈
【摘要】:图2-8直线段与窗口的相互位置关系直线段裁剪是二维图形裁剪的主要内容之一,其目的是要确定直线段与窗口的交点坐标。c表示直线段与窗口有两个交点的情况;需要进行裁剪。图2-9线段裁剪线段的裁剪算法就是要找出位于窗口内部的线段的起始点和终止点的坐标。若起点位于2区时,求解线段与窗口边界的交点公式为,若在8区时,用式计算。

数字测图技术:直线段裁剪

图2-8 直线段与窗口的相互位置关系

直线段裁剪是二维图形裁剪的主要内容之一,其目的是要确定直线段与窗口的交点坐标。直线段的裁剪算法有多种,如矢量裁剪法、编码裁剪法、中点分割裁剪法等,这里介绍矢量裁剪算法。

直线段与窗口的相互位置关系如图2-8所示。

图中:a表示直线段与窗口相交的情况;需要进行裁剪。

b表示直线段与窗口无交点并全部位于窗口内的情况;不需要进行裁剪。

c表示直线段与窗口有两个交点的情况;需要进行裁剪。d、e表示直线段与窗口无交点并全部位于窗口外面的情况;不需要进行裁剪。

图2-9 线段裁剪

线段的裁剪算法就是要找出位于窗口内部的线段的起始点和终止点的坐标。因为矢量裁剪法对寻找起点和终点坐标的处理方法相同,下面仅以求始点坐标为例来说明线段矢量裁剪方法。

为了讨论方便,把窗口的四条边延伸将屏幕分为九个区域,分别用1~9数字编号,5区为窗口内可见区,窗口左下角坐标为(min Xg,min Yg),窗口右上角的坐标为(max Xg,max Yg)。如图2-9所示。现有直线段a,其起点、终点坐标分别为(x1,y1)和(x2,y2),则对其进行矢量法裁剪步骤如下:

(1)线段a不在窗口内的判断

若线段的两端点坐标满足下列条件之一:

则线段a不在窗口内,不需要作进一步的求交点处理,裁剪过程结束,否则转入下一步。

(2)若线段a满足:

(www.daowen.com)

则线段的起点在窗口内,新的起点坐标(X,Y)即为(X1,Y1);否则,按以下各步判断线段a与窗口的关系以及解算其新起点坐标(X,Y)。

(3)若X1<min X,即起点(X1,Y1)位于窗口左边界的左边,则新的起点坐标为:

此时要作以下判断:

①若min Y≤Y≤max Y,则(X,Y)求解有效;即(X,Y)为新线段可见段的新起点坐标。

②若起点(X1,Y1)位于4区,且Y<min Y或Y>max Y,则线段a与窗口无交点;

③若Y>max Y且Y1>max Y或者Y<min Y且Y1<min Y,则线段起点位于1或7区内,这时还有两种情况:

(a)当线段起点在1区且Y2>max Y或当起点在7区且Y<min Y时,线段与窗口没有交点;否则还需作如下判别:

(b)若Y1<min Y,则:

若Y1>max Y,则:

用(2-24)和(2-25)式求出的X若满足min X≤X≤max X,则(X,Y)的求解有效,否则线段与窗口仍无交点。

(4)当X1>max X,即线段起点位于窗口右边界的右边,可仿照上述过程求出线段与右边界的交点。

(5)若起点(X1,Y1)位于2区时,求解线段与窗口边界的交点公式为(2-25),若在8区时,用(2-24)式计算。求解的X在满足min X≤X≤max X时才有效,否则线段不在窗口内。

同理,将起点用终点代替可求解出线段在窗口内新的终点坐标。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈