本文介绍了如何计算R中基于曼哈顿距离的Voronoi镶嵌的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用R中的曼哈顿距离计算2D中的Voronoi镶嵌。

理想情况下这是一个获取一组二维点并输出划分空间的多边形列表的函数。我不确定Voronoi镶嵌的标准表示是什么。

当然,使用欧几里得度量有很多方法可以做到这一点(像deldirqhull这样的包使这一点变得非常简单),但我还没有找到一种方法来实现曼哈顿距离。使用sos%sfindFn('voronoi')进行搜索也没有结果。

推荐答案

信息:taxicabgeometry.net

交互:Manhattan-metric Voronoi diagram(Click version)

我一直在滚动my own in python,我可以在这里总结一下基本情况:相邻质心之间是一条垂直线,以曼哈顿公制为单位-如果质心是随机生成的,很可能是两条射线和一条45度对角线,但也可能出现一条直的水平、垂直或45度对角线。对于每个质心对,给出一组这样的线,分隔区域的边就在其中。收集每对直线的交点,这些直线以曼哈顿公制为单位,与其最近的3个质心等距离(在一个爱西里昂内)。还要收集45度对角线的两个中点,这两个中点与它们最近的两个质心的距离类似。外围国家不会关闭。如何处理它们取决于你需要什么。多边形边界和边界顶点将需要排序,因此您的多边形不会是一个曲折的混乱。缠绕顺序可以决定是顺时针还是其他方向。还可以做更多事情,这取决于您需要什么。

不幸的是,涉及的点越多,速度就会成倍地变慢。每条平分线与另一条平分线的相交是瓶颈。我一直在尝试一种插入方法,取得了一些成功,但是。现在,我正在考虑首先尝试在质心之间创建最近邻链接。如果邻居已知,则相交的平分线将是最小的,并且可以快速计算出许多质心。

无论如何,暴力方法确实奏效了:

光标附近的点实际上是一条微小对角线的两个点。这是一种精确的方法,但比乍看起来要复杂得多。来自上面交互链接的Java代码可能会更快,但很难从其中获得坚实和精确的几何体。

对不起,我不知道R。

这篇关于如何计算R中基于曼哈顿距离的Voronoi镶嵌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-03 08:07