标签: voronoi

确定和存储Voronoi细胞邻接

我将处理数以千计的问题。我可以实现或使用Fortunes算法的现有实现来生成点的Voronoi图,但是我的应用程序还要求我了解每个Voronoi单元的邻接关系。

更具体地说,对于任何Voronoi细胞,我需要知道与之相邻的细胞。在这一点上,我不必担心输出或存储方法,因为我很可能可以对实现进行优化以使其对我有利。

有谁知道一种算法,或者更好地意识到一种可以完成小区邻接确定的算法?我将做的工作是在python中进行,但是任何事情都将是很棒的,因为我可以轻松地翻译代码。

谢谢!

python geometry voronoi graph computational-geometry

3
推荐指数
2
解决办法
2632
查看次数

如何制作voronoi树图?

我想制作统计数据的voronoi树图,比如 替代文字 newsgraphy

你知道我怎么能在Perl,PHP,Ruby或Python中做到这一点吗?

statistics voronoi treemaps

2
推荐指数
1
解决办法
4962
查看次数

如何优化此循环?

我正在研究一个使用Voronoi创建地图的Java程序.我正在使用一个生成Voronoi的Java库,它非常快(http://sourceforge.net/projects/simplevoronoi/).

我面临的问题是,然后,我必须扫描每个Voronoi边缘,以了解边缘左边和右边的点,以创建包含每个点的多边形.它是包含每个Voronoi边缘的类:

public class GraphEdge
{
    public double x1, y1, x2, y2;

    public int site1;
    public int site2;
}
Run Code Online (Sandbox Code Playgroud)

坐标x1, y1, x2, y2是边缘开始和结束坐标,site1并且site2是边缘左侧和右侧的点的索引.因此,要创建包含每个点的多边形,我会这样做:

for(int n = 0; n < xValues.length; ++n){
        polygonsList.add(new GPolygon());
        for(GraphEdge mGraphEdge : edgesList){
            if( (xValues[mGraphEdge.site1] == xValues[n] || xValues[mGraphEdge.site2] == xValues[n])
                && (yValues[mGraphEdge.site1] == yValues[n] || yValues[mGraphEdge.site2] == yValues[n]) ){
                polygonsList.get(n).addPoint((int)mGraphEdge.x1, (int)mGraphEdge.y1);
                polygonsList.get(n).addPoint((int)mGraphEdge.x2, (int)mGraphEdge.y2);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在哪里xValuesyValues是我生成Voronoi图的点坐标,并且GPolygon是我创建的Polygon类,它是从java.awt.Polygon.这些是我测量的时间:

  • Voronoi时间: 283 …

java optimization for-loop voronoi polygon

2
推荐指数
1
解决办法
476
查看次数

Scipy 的 voronoi 算法中的 -1 是什么意思?

我正在尝试自定义绘制二维中随机点的Voronoi区域

import matplotlib.pyplot as plt
%matplotlib inline

from scipy.spatial import Voronoi
pt = np.random.random((10,2))
x = sp.spatial.Voronoi(pt)

# trial an error to figure out the type structure of [x]

plt.plot(x.vertices[:,0], x.vertices[:,1], '.', markersize=5)

# how to iterate through the x.regions object?
for poly in x.regions:
    z = np.array([ x.vertices[k] for k in poly])
    print z
    if z.shape[0] > 0:
        plt.plot( z[:,0], z[:,1])

plt.xlim([0,2])
plt.ylim([0,2])
Run Code Online (Sandbox Code Playgroud)

为什么区域重叠?绘制无限区域的任何建议?

在此处输入图片说明


数据点只是随机数:

x.vertices

array([[ 0.59851675,  0.15271572],
       [ 0.24473753,  0.70398382],
       [ 0.10135325,  0.34601724],
       [ 0.42672008, …
Run Code Online (Sandbox Code Playgroud)

python graphics voronoi scipy computational-geometry

2
推荐指数
1
解决办法
241
查看次数

Voronoi 图中的站点搜索/点位置

给定 Voronoi 图,如何定位包含查询点 q 的多边形?如果 q 是 Voronoi 站点之一,那会有什么不同吗?

我们是否遍历每个多边形并检查多边形中的点?这样做既昂贵又缓慢。

voronoi computational-geometry

1
推荐指数
1
解决办法
400
查看次数

图中最外层 Voronoi 多边形的透明或均匀颜色

我正在尝试删除 Voronoi 图中的外部多边形。主要情节是这样的:

require(ggplot2)
require(ggvoronoi)
set.seed(2023)

N <- 80
x <- runif(N)
y <- runif(N)
df <- data.frame(x, y)
df$dist <- rnorm(N)

ggplot(df, aes(x, y, fill = dist)) +
    geom_voronoi() +
    stat_voronoi(geom = "path") +
    theme_void()
Run Code Online (Sandbox Code Playgroud)

主图

如果我对轴设置限制,就会发生接近我想要的情况。然而,仍然填充了一些外部多边形:

ggplot(df, aes(x, y, fill = dist)) +
    geom_voronoi() +
    stat_voronoi(geom = "path") +
    theme_void() + 
    xlim(0.1, 0.9) + 
    ylim(0.1, 0.9)
Run Code Online (Sandbox Code Playgroud)

[有限图片

隔离/识别图形边缘周围最外层的多边形并使它们透明或统一颜色的最佳方法是什么?

voronoi r ggplot2 r-sf

1
推荐指数
2
解决办法
110
查看次数