路径由一组点按顺序定义,以便每两个连续点形成路径边缘。路径始终关闭。标记的点表示它们是来自边缘还是曲线。 我正在尝试编写一个函数来获得三条路径,如下所示。
我尝试了以下内容。
create temp path Object path_C
go through every edge in path_A
go through every edge in path_B
if current edge of path_A intersects edge of path_B
find the intersection
store the intersection point in path_C
inner loop ends here
outer loop ends here
go through every point in path_A
if a point lies within the path_B
add it to the path_C
and remove it from path_A
end of loop
go through every point in path_B
if a point lies within the path_A
add it to the path_C
and remove it from path_B
end the loop
在我运行它之前,我的一位朋友指出,无法保证path_C的点数正确。现在我无法弄清楚如何解决这个问题。 如果你能提出一些更好的优化建议。
旁注:我实际上是尝试在adobe illustrator的路径查找器面板中实现划分功能。
答案 0 :(得分:0)
您要查找的术语是“图形循环”,请查看此堆栈溢出线程:finding all cycles in graph。基本上你想从两条路径构建一个图形。这是通过连接两个路径(带来所有边和顶点),并在每个交叉点引入新顶点来完成的。交点是图形合并的位置。在实现过程中,考虑所有边缘情况,即交叉点可能发生在通过顶点的边缘,共线边缘/顶点等之间。还要注意,对于某些形状,例如U形和矩形,可以产生几个周期。