百度地图API-PHP算法:判断一个坐标是否在多边形范围内。
坐标点已知:110.284492,25.273488
多边形各顶点坐标:110.260058|25.28342110.287079|25.268783110.29369|25.284466110.295702|25.295181110.275293|25.304851110.264944|25.304328110.254596|25.295443
如何使用PHP语言进行判断
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
建议开一个数学的模块
这就是一个基本的解析几何问题,鉴于你有伸手党的嫌疑,我这里不提供php原版代码(连数据格式什么样子我都不知道……怎么提供源代码?)……只讲算法……
1、如何判断一个多边形是凸多边形还是凹多边形?
根据简单的数学知识可以知道,如果多边形上存在两个点在多边形上其他任意相邻的两个点的连线的两侧(就是多边形的一条边所在直线),那么这就是个凹多边形。
2、由以上可以知道,对于凸多边形,如果一个点在多边形外,那么一定存在多边形上一个点与这个点的连线使多边形其他的点在连线的一侧。
3、关键的问题是凹多边形,可以将凹多边形分割成多个凸多边形,然后检测这个点是否在上述多个凸多边形内……
总结:您的高等数学没学好,甚至解析集合也需要复习啊亲……
========================更新============================================
上面的内容我已经进行了更改……发现我的一些细节没有注意到……已经更改
事实上,如果你直接通过上述方法计算会发现很多性能问题,建议使用向量的方法:
对于凸多边形,如果一个点在多边形外,那么从这个点到多边形上各个点的向量的和一定不为0……说的有点烂,直接上公式……
设:一个点到多边形上的点的向量为x1,x2,x3……xi……
如果这个点在多边形内一定存在
x1×a1+x2×a2+……+xi×ai……=0
(a1、a2……ai……均是正数)
这就可以把问题的规模压缩到O(n)了吧……(我不是科班出身,请研究算法的同学指正)