发信人: oneaddone (我叫倒乱,来自乱岛,我是来捣乱的!), 信区: Algorithm
标 题: Re: 请教一个题,觉得这里肯定有人知道
发信站: 日月光华 (2003年06月12日01:23:32 星期四), 站内信件
判断点是否在多边形中
以点P为端点,向左方作射线L,由于多边形是有界的,所以射线L的左端一定在多边形外
,考虑沿着L从无穷远处开始自左向右移动,遇到和多边形的第一个交点的时候,进入到
了多边形的内部,遇到第二个交点的时候,离开了多边形,……所以很容易看出当L和多
边形的交点数目C是奇数的时候,P在多边形内,是偶数的话P在多边形外。
但是有些特殊情况要加以考虑。如果L和多边形的顶点相交,有些情况下交点只能计算一
个,有些情况下交点不应被计算(你自己画个图就明白了);如果L和多边形的一条边重
合,这条边应该被忽略不计。为了统一起见,我们在计算射线L和多边形的交点的时候,
1。对于多边形的水平边不作考虑;2。对于多边形的顶点和L相交的情况,如果该顶点是
其所属的边上纵坐标较大的顶点,则计数,否则忽略;3。对于P在多边形边上的情形,
直接可判断P属于多边行。由