沙龙之《判断点与多边形的位置关系》解题报告
   
                       福州一中 张中亮

一、 题目分析:

  判断点在多边形的内部、外部还是边上是非常常见的几何问题,可用射线法解决(图1)。根据射线与多边形的交点个数判断点的位置。

二、 算法:

  判断点P是否在多边形的边上比较容易,可以逐一对每条边进行检查,判断P是否在多边形的边上。关键问题在于解决点P在多边形的内部还是外部。
  首先过点P做一条足够长的射线,如果这条射线与多边形的交点个数为奇数,那么点P在多边形的内部,如果交点为偶数(包括0个),那么点P在多边形的外部。
  当然还要对一些特殊情况进行处理。如以下2种情况:

       

  图2中点P与多边形其中一点相交,图2中点P与多边形的一边重合。对这2种特殊情况往往有以下2种处理方法:

  1、 再任意取一条射线,判断点P与多边形的交点个数,直到不出现特殊情况为止。
  2、 对2种情况另作处理:
  (1) 交点在点上:
    a、 如果在射线的同侧,则这点不算。
    b、 如果在射线的两侧,则这点要算。
  (2) 和多边形一条边重合:
    a、 如果在射线的同侧,则应看成没有交点。
    b、 如果在射线的两侧,则应看成一个交点。

  在实际情况中,出现特殊情况的可能性很小,因此用第一种方法比较简便,可以使程序比较简洁。
  从以上分析,得出下列算法:(下列采用第1种方法)
  (1) 输入数据。
  (2) 逐一判断点P是否在多边形的边上,如果是,则输出"bian",退出。
  (3) 随机产生一点Q,作出射线PQ。直到射线PQ不与多边形的点和任一边不相交为止。
  (4) 计算射线PQ与多边形边的交点数,如果交点数为奇数,则点P在多边形的内部(in),否则点P在多边形的外部(out)。

三、以下为参考程序:

  


  
  

 

   

 
网站导航 | 关于曙光 | 联系我们 | 请提意见
Copyright © FuJian Sunshine Educational Info. Co.,Ltd.
福建曙光教育资讯有限公司 版权所有