我有一组点,我需要将集合转换为(非重叠)三角形(或等效的大多边形)......
申请表:我有一个国家/地区的位置(纬度,经度)列表,我需要找出一个特定点是否在国家内部......
X X *---------* *---------*
| \ / | \ | \
| \ / | \ | \
X x => | * | * = or => | *
| / \ | / | /
| / \ | / | /
X X *---------* *---------*
是否有简单的方法或者我需要博士来编码吗?
还是有一个巨大的多边形?我找到了http://en.wikipedia.org/wiki/Point_in_polygon
THX, JD
答案 0 :(得分:3)
计算最终多边形实际上比从三角形构造多边形更容易。
你要找的是一组点的convex hull。存在许多different algorithms来做到这一点。
在我的算法课上,我们研究了gift-wrapping algorithm(a.k.a:The Jarvis March)。这很简单,但存在更快的解决方案。
如果您想构建完整的polygon mesh,则必须运行triangulation算法,例如Delaunay triangulation。
答案 1 :(得分:1)
您的问题文字和问题标题指向了我们不同的方向。你想弄清楚:
来自一组点的三角测量(谷歌为Delauny三角测量);或
包围您的点集(凸包)或
一个给定的lat,long对是否在一个国家内(指向多边形 - 但这意味着你必须有一个多边形代表你的国家,我保证对于一些国家它赢了'是一个很好的凸多边形。)
不,你不需要一个博士来编码这个,它们在计算几何中都是相当充分记录的问题。您将能够找到上述所有内容的开源软件。你最大的问题可能是找到你感兴趣的每个国家的多边形代表。
答案 2 :(得分:0)
使用Delaunay triangulation或其他。
答案 3 :(得分:0)
有一个名为qhull(http://www.qhull.org/)的库用于完成这类工作。它足够坚固,可以在Blender,OGRE3D以及其他需要认真使用的应用程序中使用,并且拥有API,而不仅仅是C / C ++。它甚至可以在命令行上使用简单的数据文本文件进行手动实验。
无需博士学位,只需安装8D许可
还有其他一些,但主要用于研究人员或特殊应用。