判断一个点P是否在多边形内部算法

时间:2011-09-17 14:02:46
【文件属性】:
文件名称:判断一个点P是否在多边形内部算法
文件大小:2KB
文件格式:CPP
更新时间:2011-09-17 14:02:46
点P 多边形 算法 本例使用:从P作水平向左的射线的话,如果P在多边形内部,那么这条射线与多边形的交点必为奇数,如果P在多边形外部,则交点个数必为偶数(0也在内)

网友评论

  • 算法是关键,想嵌入到其他程序中还要自己重写一下函数的好。非常不错,谢谢
  • 很好,就是得费些力气集成到代码中,如果楼主有个直接能用的程序就好了,加油
  • 还有一些特殊情况要考虑。 假如考虑边(P1,P2) 1)如果射线正好穿过P1或者P2,那么这个交点会被算作2次,处理办法是如果P的从坐标与P1,P2中较小的纵坐标相同,则直接忽略这种情况 2)如果射线水平,则射线要么与其无交点,要么有无数个,这种情况也直接忽略。 3)如果射线竖直,而P0的横坐标小于P1,P2的横坐标,则必然相交。 4)再判断相交之前,先判断P是否在边(P1,P2)的上面,如果在,则直接得出结论:P再多边形内部。
  • 很好 可以使用 是纯粹的算法 呵呵 得自己建工程调试
  • 感觉一般,而且之后一个CPP文件,无法再MFC下运行
  • 很好,很适合学习,从P作水平向左的射线的话,如果P在多边形内部,那么这条射线与多边形的交点必为奇数,如果P在多边形外部,则交点个数必为偶数(0也在内)
  • 很好,很适合学习,从P作水平向左的射线的话,如果P在多边形内部,那么这条射线与多边形的交点必为奇数,如果P在多边形外部,则交点个数必为偶数(0也在内)
  • 很好,可以用,但如果需要用在MFC中,还要再改动一下