问题标签 [voronoi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
314 浏览

r - R deldir 和自定义名称而不是数字

我正在尝试使用 R 生成 voronoi 图。图表本身的绘制工作正常,但是在标记绘图的不同图块时遇到了问题。

我正在使用的代码如下:

在绘制图表之前是否可以将数字交换为自定义标签?

0 投票
1 回答
2897 浏览

d3.js - 尝试在 D3JS 中修改 Voronoi 地图

我正在尝试修改此 D3 示例以与我的数据集一起使用

http://mbostock.github.io/d3/talk/20111116/airports.html

在此处输入图像描述

我认为我的问题是创建用于计算 Voronoi 多边形的坐标数组,但此时我不确定。

我收到一个Uncaught TypeError: Cannot read property '0' of undefined错误,指向我调用数组的行。代码是实时的,请看这里

http://cds.library.brown.edu/projects/mapping-genres/symbol-maps/brown-voronoi-map.html

地图显示得很好,但没有出现数据点、单选按钮和 voronoi 线(我不想显示数据点之间的线,因此代码已被删除)。

任何想法或建议将不胜感激。非常感谢!

0 投票
1 回答
2276 浏览

3d - Java 7 的 Spherical Voronoi Tessellation:需要修复在面周围缠绕顶点

我正在研究一个问题,该问题涉及找到分布在球体表面上的点的 Voronoi 镶嵌。据我所知,我的蛮力方法有效,因为在视觉上它似乎找到了点的 Delaunay 三角剖分。但是,在使用顶点定义每个面的边缘顺序时,我的算法似乎失败了。

作为我想要做的一个例子,这里是一个版本的图片,该版本使用一种通过确定两个顶点是否共享多个形成点来确定边缘的方法来正确确定边缘。请注意,我想使用曲面细分来计算面的立体角并为像 OpenGL 这样的 3D 渲染 API 生成几何图形,所以这个 hack 还不够好。

不成功的球形 Voronoi 镶嵌

红色圆圈是分布在球体表面上的点。黄线显示​​这些点的 Delaunay 三角剖分,绿线显示用于定义 Voronoi 单元之间的顶点的点,黑线显示由顶点形成的边缘。通过将不靠近点或线的每个像素设置为通过将单元格的定义点转换为颜色来确定的颜色,为每个单元格着色;这是与镶嵌过程分开执行的。可能需要使用工具来比较面部颜色值,但可以显示面部正确地被面部包围。这似乎表明我的代码正确地确定了 Delaunay 三角剖分和 Voronoi 细分的顶点。

当我删除黑客并使用我编写的逆时针排序面部点的函数时,我得到了我无法解释的结果。请注意,我的程序的每次运行都会生成一组不同的随机点,因此这两个图表并非旨在表示相同的点分布。

不成功的球形 Voronoi 镶嵌

我已经在展示问题的面孔周围绘制了红色框。请注意,这些单元格的表面有黑线,并可能导致根本不显示某些边缘(请参见右下角的框)。

我正在使用这个 StackOverflow 问题中描述的算法来确定点的逆时针顺序。我使用相同的函数来确定单元格周围的顶点顺序和确定三个点的外心。如果代码中存在错误,人们会认为代码在三点情况下会失败,从而引入 Delaunay 镶嵌问题(因为顺序错误会导致将外心放置在sphere),但数十次运行从未崩溃,也没有发现 Delaunay 镶嵌的任何缺陷。我已经与我的代码搏斗了几个小时,但我找不到问题所在。有人能明白为什么会出现这个问题吗?

以下是代码的摘要列表,我希望列出所有要点。这是我编写的多个文件的代码组合,试图让某些东西正常工作;在我的算法有效之前,我倾向于不尝试清理代码。如果不使用它们,我也没有放入包含或必需的接口方法实现。

任何有关解决此特定问题的见解将不胜感激。

0 投票
0 回答
975 浏览

javascript - 如何使用 d3.js 从 json 中绘制 voronoi 图

以上是我的脚本。我正在使用顶点中的点生成图表。如何使用 json 生成这样的东西。但是 json 包含每个框的点和名称。名称应显示在每个盒子上。

0 投票
1 回答
306 浏览

algorithm - 将多边形细分为不同大小的框

我想指出用于创建算法的信息/资源,如本博客所示,它是将多边形(在我的情况下为 voronoi 单元)细分为几个不同大小的框:

http://procworld.blogspot.nl/2011/07/city-lots.html

在评论中可以找到博客作者的一篇论文,但是列出的唯一公式是关于候选位置的适用性:

http://www.groenewegen.de/delft/thesis-final/ProceduralCityLayoutGeneration-Preprint.pdf

任何语言都可以,但如果可以给出示例,首选 Javascript(因为它是我目前正在使用的语言)

一个类似的问题是:https ://gamedev.stackexchange.com/questions/27055/what-is-an-efficient-packing-algorithm-for-packing-rectangles-into-a-polygon

[编辑]:我找到了一些可以开始的东西,但这不是我完全想要的: http ://www2.stetson.edu/~efriedma/squintri/

0 投票
0 回答
473 浏览

javascript - 传单地图上的 Voronoi 位置不正确

我正在努力在传单地图上定位和缩放 voronoi 图。voronoi 多边形在添加到地图后会正确显示,但在调整大小后,它们无法正确缩放和平移。我试图在平移和缩放到特征元素后重置路径。但看起来新值已传递给其父元素。如果我在 feature.selectAll('path).attr('d',path) 上设置路径,则缩放和平移是绝对正确的,但它显示的是 voronoi 意味着而不是 voronoi 多边形。任何想法?

此致,

弗洛

0 投票
1 回答
1164 浏览

d3.js - 如何使用 D3.js 限制 Voronoi 图中的多边形文本?

我已经看到了 D3.js- Voronoi Tessellation的示例。但是我想在每个多边形而不是圆形中放置一些文本,这是我的 js 代码:

我在这里有一个基本示例的 JSFiddle: 我的 voronoi 代码

现在,我希望每个多边形的文本都位于多边形的中心,并且不要与多边形的边界相交。如果多边形没有足够的空间来包含所有文本,只包含它的第一部分!如果有什么办法可以解决这个问题,请告诉我,谢谢!

PS:对不起我的英语,是的,太差了!:)

0 投票
2 回答
10667 浏览

python-2.7 - Voronoi 细胞的体积(python)

我在 Python 2.7 中使用 Scipy 0.13.0 来计算 3d 中的一组 Voronoi 单元。我需要获取每个单元格的体积,以便(去)加权专有模拟的输出。是否有任何简单的方法可以做到这一点 - 当然这是一个常见问题或 Voronoi 细胞的常见用途,但我找不到任何东西。以下代码运行,并转储scipy.spatial.Voronoi 手册所知道的所有内容。

0 投票
1 回答
4445 浏览

java - 是否有用于计算线段集的 2D Voronoi 图的 java 库?

计算用于收集线段的 Voronoi 图通常被认为是计算机科学中研究最多的问题之一,并具有许多实际应用。

然而我无法在 java 库中找到它的任何实现(是我找到的最好的库,它是用 C++ 编写的)。JTS是 java 中最好的几何 API 之一,仅包含从一组点计算 Voronoi 图的算法。

目前我正在阅读有关计算此图的几种算法的文章,如果其他一切都失败了,我将尝试自己实现其中一个 - 但如果可以重用一些已经编写的代码,我会更开心并经过测试。

也许有一些用于计算一组线段的 Voronoi 图的库,我在搜索中忽略了这些库?

0 投票
1 回答
943 浏览

c++ - 使用 boost::polygon 遍历 Voronoi 图边缘的非递归算法

什么是使用boost而不递归遍历Voronoi图边缘的好算法?

我知道它必须检查单元格中的无限边缘,然后检查其邻居并从那里重复,但我更喜欢不需要递归的方法,因为我正在处理大量数据。

这可能没有递归吗?

编辑,以获得更多说明:

这是一种获取所有边缘单元的方法:

上述方法的问题是它不会以任何特定的顺序遍历边缘单元格,例如顺时针方向。

递归实现会做类似于这个(仓促编写和未经测试的)代码的事情:

这将遍历 Voronoi 图的边缘,直到它回溯到第一个单元格,然后停止,一路填满堆栈。

非递归实现将对第二个示例进行建模,以顺时针或逆时针顺序生成边缘单元的列表,而不使用递归。