//计算点是否在多边形内
int msIntersectPointPolygon(pointObj *point, shapeObj *poly)
{//主函数1-在 0-不在
 int i;
 int status=MS_FALSE;
 for(i=0; i<poly->numlines; i++)
 {
   if(msPointInPolygon(point, &poly->line[i]) == MS_TRUE) /* ok, the point is in a line */
      status = !status;
  }
  return(status);
}

int msPointInPolygon(pointObj *p, lineObj *c)
{//算法非常奇怪!!!
 int i, j, status = MS_FALSE;
 for (i = 0, j = c->numpoints-1; i < c->numpoints; j = i++)
{ if ((((c->point[i].y<=p->y) && (p->y<c->point[j].y)) || ((c->point[j].y<=p->y) && (p->y<c->point[i].y))) && (p->x < (c->point[j].x - c->point[i].x) * (p->y - c->point[i].y) /(c->point[j].y - c->point[i].y) + c->point[i].x))
      status = !status; 
}
 return status;
}

新发现判断一个点在多边形的最高效率算法 推荐******相关推荐

  1. 如何判断一个点在多边形内

    一.从三角形开始说起---怎么判断一个点在三角形内 三角形是最简单的多边形了.先说说三角形有哪些判断方法. 参考自:判断一个点是否在三角形内部 - 知乎 几种方法判断平面点在三角形内_独L无二的博客- ...

  2. c++判断一个数字是否为buzz number的算法(附完整源码)

    C++判断一个数字是否为buzz number的算法 C++判断一个数字是否为buzz number的算法完整源码(定义,实现,main函数测试) C++判断一个数字是否为buzz number的算法 ...

  3. python判断回文数_Python实现判断一个整数是否为回文数算法示例

    本文实例讲述了Python实现判断一个整数是否为回文数算法.分享给大家供大家参考,具体如下: 第一个思路是先将整数转换为字符串,再将字符串翻转并与原字符串做比较 def isPalindrome(se ...

  4. python判断回文_Python实现判断一个整数是否为回文数算法示例

    本文实例讲述了Python实现判断一个整数是否为回文数算法.分享给大家供大家参考,具体如下: 第一个思路是先将整数转换为字符串,再将字符串翻转并与原字符串做比较 def isPalindrome(se ...

  5. Qt 判断一个点是否落在三角形内(算法)

    利用重心法判断一个点是否落在三角形面积内,三角形的三个点在同一个平面上,如果选中其中一个点,其他两个点不过是相对该点的位移而已,比如选择点A作为起点,那么点B相当于在AB方向移动一段距离得到,而点C相 ...

  6. 判断多个点在多边形内的在线算法

    通常判断一个点在多边形内有五种算法: 1. 叉积法,面积法(适用于凸包) 2. 射线法,直线法, 最坏时间O(n), 通常都可以达到常数基数时间 3.回转数(也叫旋转角)法 4.改进弧长法(转角法的改 ...

  7. 判断点是否位于多边形内(包含凹多边形)

    如果判断点是否在凸多边形内,则有多种方法,方法简单,计算速度也快,直接使用物理引擎做判断也行 但实际问题中遇到的多边形不一定是凸多边形,它可能是凹边行或者复合多边形判断一个点在多边形内或多边形外,射线 ...

  8. HDU1756(判断一个点是否在多边形内)

    以下内容是在自己学习中总结出来了的,如果有什么错误,请指出,谢谢! 判断一个点是否在多边形内: (1)判断方法一(具有一定的局限性):将测试点的Y坐标与多边形的每一个点进行比较,将得到一 个与多边形的 ...

  9. 点在多边形内算法,C#判断一个点是否在一个复杂多边形的内部

    判断一点是否在不规则图像的内部算法,如下图是由一个个点组成的不规则图像,判断某一点是否在不规则矩形内部,先上效果图 算法实现如下,算法简单,亲试有效 public class PositionAlgo ...

最新文章

  1. yield学习续:yield return迭代块在Unity3D中的应用——协程
  2. Eclipse中Maven的安装
  3. CTO 比普通程序员强在哪?
  4. 时隔6年,NASA再造仿人机器人,或将在太空工作,应对严苛环境
  5. C语言实用算法系列之冒泡排序、sizeof与strlen的区别
  6. jira java接口生成问题
  7. 今日博文视点大咖直播伴你读No.3:数据分析学习之道
  8. 利用ArcGIS Pro对疫情数据进行分析并可视化
  9. 苹果手机iOS系统如何降级 数据备份?
  10. Hyper-V虚拟机和虚拟化服务器区别
  11. linux grep多条件查询
  12. centos7 配置虚拟ip
  13. 雕刻效果的实现【OpenCV+QT】
  14. python音标1003python音标_python selenium 爬取百度翻译单词音标
  15. Windows - 两台电脑共享磁盘 / 映射网络驱动器
  16. WP篇 创新实践能力赛(华东南分区赛)线下AWD复现
  17. python pandas读取excel文件
  18. 微信小程序:长按图片识别二维码
  19. 二进制转换十进制实例
  20. 应届生应聘一些要注意的(from http://forum.eet-cn.com/)

热门文章

  1. linux 怎么配置apache,在Linux下配置Apache Web服务
  2. linux系统配置php环境,linux下php环境的搭建
  3. 程序员法律考试(7)-民法(4)
  4. vb.net2019-多线程并行计算(5)
  5. go语言基础到提高(10)- 包及方法
  6. 【机器学习】那些决定模型上限的操作
  7. 科技、体育、创业,三者碰撞是真的野!
  8. 【深度学习】图文并茂!用Keras LSTM构建编码器-解码器模型
  9. 【Python基础】Jupyter Notebook最常用的五大配置技巧
  10. python+xlrd+echarts数据可视化demo