线段矢量裁剪法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.2.1 线段的矢量裁剪法

在右图中,窗口的四条边界把XOY平

面分成九个区域,分别用1到9对这九个

窗口编号,设5号区域为相应的可见窗口

区,窗口的左下角点坐标(minX,minY),

右上角点坐标为(maxX,maxY)。有一条

矢量线段S,其起、终点的坐标分别为

(X

s ,Y

s

)和(X

e

,Y

e

),则对线段S按矢量

裁剪的算法步骤如下:

1.若线段完全位于区域5以外的任意区域内或落在(1,2,3)、(3,6,9)、(7,8,9)、(1,4,7)中任意一区域组内,即满足下述条件之一:

X

s

e

X

s >minX且X

e

>minX,

Y

s

e

Y

s >minY且Y

e

>minY

则线段S不在窗口内,不必作进一步的求交点处理,否则转下一步。

2.若线段S满足minX≤X

s ≤maxX且minX≤Y

s

≤maxY ,则线段的起点在窗口内,

新的起点坐标(X,Y)即为(X

s ,Y

s

);否则,按以下各步判断S与窗口的关系以及解算

其新起点坐标(X,Y)。

3.若X

s

s

,Y

s

)位于窗口左边界的左边,则:

(4-2-1)

此时要作以下判断:

(1) 若起点(mi nY≤Y≤maxY),则(X,Y)求解有效;

(2) 若起点(X

s ,Y

s

)位于4区,且X

s

>minY或Y>maxY ,则线段S与窗口无交点;

(3) 若Y>maxY且Y

s >maxY或者Y>minY且Y

s

这时还有两种情况:

(a)当起点在1区且Y

e >maxY或当起点在7区且Y

e

交点;否则还需作下面的判别;

(b)若Y

s

(4-2-2)

若Y

s

>maxY,则:

(4-2-3)

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

4. 当X

s

>maxX ,即线段起点位于窗口右界的右边,可仿照上述过程求出线段与右边界的交点。

5.若起点(X

s ,Y

s

)位于2或8区时,求解线段与窗口边界的交点公式为(4-2-4)

和(4-2-5)式。

(4-2-4)

(4-2-5)

用式(4-2-4)和(4-2-5)求解得X在满足minX≤X≤maxX时才有效,否则线段不在窗口内。

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

相关文档
最新文档