图7.9
用弧长法测试点的包含性
表7-1-1 端点的符号对变化与弧长变化的关系
(xi,yi)
|
(xi+1,yi+1)
|
象限变化
|
弧长变化
|
(+,+)
|
(+,+)
|
I→I
|
0
|
(+,+)
|
(-,+)
|
I→II
|
π/2
|
(+,+)
|
(-,-)
|
I→III
|
±π
|
(+,+)
|
(+,-)
|
I→IV
|
-π/2
|
(-,+)
|
(+,+)
|
II→I
|
-π/2
|
(-,+)
|
(-,+)
|
II→II
|
0
|
(-,+)
|
(-,-)
|
II→III
|
π/2
|
(-,+)
|
(+,-)
|
II→IV
|
±π
|
(-,-)
|
(+,+)
|
III→I
|
±π
|
(-,-)
|
(-,+)
|
III→II
|
-π/2
|
(-,-)
|
(-,-)
|
III→III
|
0
|
(-,-)
|
(+,-)
|
III→IV
|
π/2
|
(+,-)
|
(+,+)
|
IV→I
|
π/2
|
(+,-)
|
(-,+)
|
IV→II
|
±π
|
(+,-)
|
(-,-)
|
IV→III
|
-π/2
|
(+,-)
|
(+,-)
|
IV→IV
|
0
|
��至此,我们可以给出改进的弧长法的算法步骤:
��(1) 按照表7-1-1建立端点的符号对与弧长的对应关系表;
��(2) 作平移变换,将坐标系的原点平移到给定点P;
��(3) 根据多边形每一条边的起始点和终止点的符号对查表,得到相应的弧长;
��(4) 累加所有的弧长,如果等于2π,则P位于多边形的内部;如果结果为0,则P位于多边形的外部或边界上。
��当判断点P是否位于多边形内时,上述算法的优点是十分突出的:计算速度很快,算法稳定性好。如果要进一步区别P点是位于多边形的外部还是边界上,也只需增加很少的判断代码即可。这作为作业,留给读者自己完成。
|