- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我偶然发现了一个用于 Voronoi 图解算器的 Fortunes 算法的实现,但我不确定发布的 Edge
类的 __construct
方法中实际发生了什么下面(为清楚起见删除了一些片段)。
class Edge
{
//removed member vars
function __construct($start, $left_site_event, $right_site_event)
{
//removed property assignment
//this->start = $start //etc etc
$this->f = ($right_site_event->position->x - $left_site_event->position->x) / ($left_site_event->position->y - $right_site_event->position->y);
$this->g = $start->y - $this->f * $start->x;
$this->direction = new Vector(($right_site_event->position->y - $left_site_event->position->y), ($right_site_event->position->x - $left_site_event->position->x));
}
};
我有兴趣理解的三行是f
、g
和direction
的赋值左右站点事件。
首先,f
和 g
变量的命名似乎很糟糕,除非它们遵循某种公式化的命名法?这些属于什么以及这里实际计算/确定的是什么?
在我看来,方向表示左右站点事件之间的边缘斜率。再说一次,这里计算的是什么?
任何有助于理解这一点的帮助将不胜感激,因为当两个站点事件位于同一 y 轴上时(即:左右站点事件 y 坐标相同),我发现的实现似乎会出现问题.
更新
我添加了从我找到的源(见下文)移植的实现的当前结果的屏幕截图。此外,如果它对任何人有帮助,您可以从 github 获取最新的(不是很有效)求解器副本。 .
最佳答案
它看起来很像 f
和 g
是用来计算 slope & intercept of a straight line through the points 的,但作者把它搞砸了。如果您允许我滥用符号,f
定义为 x 坐标值与 y 坐标值的比率,我将其写为 f ~ x/y
。这意味着在 g
的定义中,您要从 y
项中减去 f*x ~ x^2/y
项。
现在,如果 f
实际上是要定义为 f ~ y/x
,那么在 g
的定义中你将是从 y
项中减去 f*x ~ y
项,这会更有意义。我还认为作者可能不小心在 f
的定义中丢失了一个 -1(这就是为什么分母与分子相反),但我不能肯定地说没有看到其余的代码。
此外,当左右站点的 y 坐标相同时,您会在 f
的定义中除以零,这可能就是它搞砸的原因。
如果您能解释一下 start
点代表什么,以及该算法是从左扫还是从右扫,我也许就能弄清楚它到底想做什么。
关于algorithm - Voronoi Solver - 这种边缘构造方法有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20243668/
我有一个让我想起 Voronoi 的问题,但我希望我的变体能让我避免使用 Voronoi 算法,并更快地写一些东西。 这是我在 Paint 中制作的一个可怕的图像来说明我的问题: 假设我有一个 map
上午下午 或晚上。 # Reproducible data df % filter(years == i) # # plot % filter(years == i)
我正在生成一个简单的 2D Voronoi 曲面分割,使用 scipy.spatial.Voronoi功能。我使用点的随机二维分布(参见下面的 MCVE)。 我需要一种方法来遍历每个定义的区域(由 s
我现在花了很多时间试图从 scipy.spatial.Voronoi 图中获取边,但无济于事。这是主要文档: http://docs.scipy.org/doc/scipy-dev/reference
我正在使用 voronoi 镶嵌。我有不同的多边形代表分割中的区域。 下面的点用于绘制图中的曲面分割。 tessdata [,1] [,2] 1 -0.4960583 -0.35
我有一个可折叠的力导向布局,我从 here 中引用了它. 我修改了代码,在图中的每个节点后面添加了 Voronoi 单元。目前,它看起来像是在工作,因为我可以看到 Voronoi 单元格根据折叠状态出
我创建了一个无法正常工作的 voronoi 代码。 我真的想不出错误!!! 我调用的函数是: void Voronoi( const int NbPoints, const int h
给定 voronoi 边列表,如何在合理的时间内获得每个单元格的质心?请注意,我只有 Voronoi 图的边,但我必须确定质心。 Voronoi 图是给定 Delaunay 三角剖分构造的,因此三角剖
到目前为止,我有一个程序采用一组随机点、站点,并围绕这些点形成适当的 Voronoi 图,表示为角和边的图形。它还为我提供了 Delaunay 三角剖分作为另一个以所有站点为节点的图形(尽管我不知道这
我正在寻找一种简单的(如果存在的话)算法来查找球体表面上一组点的 Voronoi 图。源代码会很棒。我是 Delphi 人(是的,我知道...),但我也吃 C 代码。 最佳答案 2016 年 7 月更
我需要生成一个 Voronoi diagram围绕多边形内部的凹(非凸)。我在网上找过方法,但我一直无法弄清楚如何做到这一点。基本上,我生成点的凸包,计算对偶点并在这些点之间构建边缘网络。然而,当遇到
我正在尝试使用 scipy.spatial.Voronoi 计算 Voronoi 图每个区域的确切边界,前提是所有点都在预定义的多边形内。例如,使用此 documentation 中的示例. 如果我需
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是
我正在使用 Voronoi 图进行图像处理 ( procedurally generated stippling )。 为了做到这一点,我需要创建一个元组(x,y 像素位置)列表(coords_wit
我有两个 geopandas 数据框 dfMd 和 centers。 dfMd 由多边形组成,而 centers 由点组成。 Here文件的链接。 f,ax=plt.subplots() dfMd.p
我正在使用 scipy.spatial用于 Voronoi 图的可视化。但是,这里使用的距离度量是欧几里得 (L2)。我正在我的 Voronoi 图上寻找一种曼哈顿 (L1) 度量方式。有没有一种简单
据我了解,R 缺少一种方法来以空间独占的方式缓冲多边形,以保留相邻多边形的拓扑结构。所以我正在试验一种生成原始多边形顶点的 voronoi 多边形的方法。除了 voronoi 生成中的明显错误外,结果
我一直在尝试为各州创建自定义区域。我想通过使用点的影响区域来填充状态图。 下图代表了我一直在尝试的东西。左图显示了点,我只想像右图一样填充所有区域。我使用了 Voronoi/Thiesen,但它在区域
我想弄清楚如何为两个不同的点绘制 Voronoi 图。 有人可以帮我吗。 谢谢 最佳答案 如我的图片所示,你应该只连接你的点,然后画一条穿过中心的线,与该线段正交。 关于draw - 如何绘制两个不同
我正在尝试在固定地理区域内为一组点创建 Voronoi 多边形(又名 Dirichlet 镶嵌或泰森多边形)。但是,我无法在 R 中找到一种将多边形绑定(bind)在 map 边界内的方法。我的主要目
我是一名优秀的程序员,十分优秀!