我有一组点和线连接一些点。我想通过这些线绘制垂直平分线,找到这些平分线的连接点,形成像voronoi图的图像。
但是,由于没有考虑创建图表的所有点,我决定不使用d3.geom.voronoi()
。
相反,我编写了代码来自己绘制垂直平分线。但是,我在找到平分器本身相交的位置时遇到问题,以便它们可以停止扩展以形成多边形。
这是目前的样子......
黑线表示点之间的连接,红线表示与它们垂直的平分线。
因为,我的要求非常接近voronoi图,我想知道我是否能以某种方式使用d3.geom.voronoi()
来完成它。
答案 0 :(得分:0)
如果您可以在图表的任何边缘的两侧找到两个三角形,则可以尝试以下伪代码。我已经在完全delaunay三角测量中尝试了它并且它有效。
"purple"
这将为您提供所需的所有边缘,即具有起点和终点。
需要注意的一个案例是边缘是顶点凸包的一部分,在这种情况下,一侧只有一个有限三角形。你可以像现在这样做 - 获得这样一条直线的方向向量 - 垂直向量到原始边缘。
如果您可以访问常用于表示平面镶嵌的几何数据结构之一(半边,翼边,四边等等 - 我不确定d3使用的是什么。),这应该是实现相当简单(在四边形的情况下,这是微不足道的,因为您已经拥有了所需的所有信息)。