我试图实施Delaunay Triangulation。但是,我似乎遇到了边缘创建重叠三角形的问题:
我基于this网站上描述的实施方式。我只是使用暴力循环来检查集合中是否已存在边缘。
v = vertex to be added
edgeBuffer = [];
for each triangle
if v is in the triangle's circumscribed circle
for each edge in the triangle
check if it's already in edgeBuffer
if not, add it
remove triangle
我怀疑它是我的算法的另一部分出错并导致这种情况发生,但我已经以非常简单的方式实现了所有内容。这段代码有什么问题? Fiddle
答案 0 :(得分:0)
如果边缘已经存在于边缘缓冲区中并且它不是超级三角形之后的第一个三角形,则需要从边缘缓冲区中移除它而不是跳过循环。新计算需要此边的顶点。只需将顶点重新插入另一个缓冲区或从边缘缓冲区中删除边缘。