如何基于R中的曼哈顿距离计算Voronoi细分
我试图用如何基于R中的曼哈顿距离计算Voronoi细分,r,geometry,distance,computational-geometry,voronoi,R,Geometry,Distance,Computational Geometry,Voronoi,我试图用R中的Manhattan距离计算二维的Voronoi细分 理想情况下这将是一个函数,它获取一组二维点并输出分割空间的多边形列表。我不确定Voronoi细分的什么表示是标准的 当然,使用欧几里德度量有很多方法可以做到这一点(像deldir和qhull这样的包使这一点非常容易),但我还没有找到一种方法可以在曼哈顿距离上做到这一点。使用sos的findFn('voronoi')进行搜索也没有结果 信息: 交互式: 我一直在滚动,可以在这里总结基本情况: 相邻质心之间是一条垂线,在曼哈顿公制中,
R
中的Manhattan距离计算二维的Voronoi细分
理想情况下这将是一个函数,它获取一组二维点并输出分割空间的多边形列表。我不确定Voronoi细分的什么表示是标准的
当然,使用欧几里德度量有很多方法可以做到这一点(像deldir
和qhull
这样的包使这一点非常容易),但我还没有找到一种方法可以在曼哈顿距离上做到这一点。使用sos
的findFn('voronoi')
进行搜索也没有结果 信息:
交互式:
我一直在滚动,可以在这里总结基本情况:
相邻质心之间是一条垂线,在曼哈顿公制中,如果质心是随机生成的,则最有可能是两条射线和45度对角线,但也可能出现一条直线水平、垂直或45度对角线。对于每个质心对,给定一组这样的线,分隔区域的边就在它们之间。收集每对直线的相交点,这些相交点与最近的3个质心之间的距离相等(在一个ε内),以曼哈顿度量为单位。同时收集45度对角线的两个中点,它们与最近的两个质心的距离相同。外面的警察局不会关闭。如何处理这些问题取决于你需要什么。多边形边界和边界顶点将需要排序,这样您的多边形就不会出现锯齿形混乱。可以确定缠绕顺序是顺时针还是其他方向。更多的事情可以做,这取决于你需要什么
不幸的是,涉及的点越多,速度就越慢。每个平分线与其他平分线的相交是瓶颈。我一直在尝试一种插入方法,取得了一些成功,但是。现在我想先在质心之间创建一个最近邻链接。如果邻域已知,则相交的平分线将是最小的,并且可以快速计算出许多质心
无论如何,蛮力方法确实有效:
光标附近的点实际上是一条小对角线的两点。这是一种精确的方法,但比最初看起来更复杂。上面的交互式链接中的java代码可能更快,但很难从中获得坚实而精确的几何图形
对不起,我不知道R。也许问题是关于求(三角形的)外接圆内正方形的最大面积。这样一个正方形abs(x)+abs(y)=r的方程(www.mathematische-basteleien.de/taxicabgeometry.htm)。当你有一个三角形网格时,voronoi图是对偶的。说得清楚-
findFn('voronoi')
产生了大量的结果,只是没有一个结果与曼哈顿距离相符。Java代码很糟糕:/。几十个虚假的实例变量,像Math.abs和Math.pow这样的函数的奇怪的重新实现,大量的代码,到处都是死的和/或无用的代码和变量。。。如果它对任何人都有用的话,我在编辑时有一个稍微整洁的代码版本:哦,曼哈顿距离的方法被标记为“欧几里德距离”。jfc。