我需要优化一个由贝塞尔曲线构成的填充形状的矢量图像。输入图像和分离后形状如下:
我要通过删除不必要的线条并依靠形状的堆叠来优化图像,但要少得多的顶点数。结果形状应该是这样的:
这个问题可以分解为以下步骤:
1. 检测堆叠的线条。 2. 找到其他形状填充区域的贝塞尔路径。 3. 找到最佳的堆叠顺序,使顶点数最小。 4. 如果形状中有孔,则表示其内部所有内容都应该堆叠在其上。
总体而言,第二步似乎是最麻烦的,因此我需要一点指引。
就样例图片而言,如何找到贝塞尔路径,让绿色形状的被遮挡部分穿过蓝色形状(和可选的黄色形状),反之亦然?我不需要最短的路径,我需要其中顶点最少的路径。
实质上,我需要找到这些路径,顶点数最少。
![](https://istack.dev59.com/GeQzv.webp)
![](https://istack.dev59.com/2gNhn.webp)
![](https://istack.dev59.com/bCWOf.webp)
1. 检测堆叠的线条。 2. 找到其他形状填充区域的贝塞尔路径。 3. 找到最佳的堆叠顺序,使顶点数最小。 4. 如果形状中有孔,则表示其内部所有内容都应该堆叠在其上。
总体而言,第二步似乎是最麻烦的,因此我需要一点指引。
就样例图片而言,如何找到贝塞尔路径,让绿色形状的被遮挡部分穿过蓝色形状(和可选的黄色形状),反之亦然?我不需要最短的路径,我需要其中顶点最少的路径。
实质上,我需要找到这些路径,顶点数最少。
[A p₁ p₂ B p₁ p₂ C ... Y p₁ p₂ Z]
,带有相同方式定义的可选孔。如果您不想处理孔,请随意跳过它,这种情况可以单独处理。 - Athari