检测SVG路径中的孔

时间:2016-12-07 17:00:57

标签: javascript svg paperjs

我正在尝试自动检测Path中生成的paper.js中的漏洞。这是从paper.js path

导出的SVG路径的示例
M515,366c-2.09642,0 -9.78222,7.0868 -12,8c-17.99572,7.41 -40.11172,9.64117 -59,14c-56.24553,12.97974 -114.37749,17 -172,17c-26.16443,0 -55.89581,3.5635 -81,-6c-29.41378,-11.20525 -42.97557,-23.19689 -64,-45c-4.74749,-4.92332 -9.98811,-9.3461 -15,-14c-4.32148,-4.0128 -15.00528,-6.45414 -13,-12c20.6382,-57.07751 47.34464,-112.044 77,-165c2.74649,-4.90444 41.77922,-17.03377 45,-18c43.05975,-12.91792 85.36776,-14 130,-14c35.90112,0 68.15669,7.609 103,15c5.30817,1.12597 10.85218,1.28406 16,3c20.36756,6.78919 39.25741,19.77677 58,30c12.72407,6.9404 26.85966,13.19549 39,21c13.66622,8.78543 26.61256,25.02093 35,39c1.62698,2.71163 1.43107,6.25437 3,9c6.96779,12.19363 18.2447,19.77039 33,21c7.48131,0.62344 18.71281,1.68166 26,0c17.13095,-3.9533 48.5867,-30.24003 61,-42c3.09891,-2.93581 4.89656,-7.06898 8,-10c7.65351,-7.22831 17.74709,-12.08774 25,-20c20.03331,-21.85452 13.41755,-48.46996 -10,-65c-19.67166,-13.88588 -50.02314,-18.24868 -73,-22c-18.71417,-3.05538 -37.21,-7.4522 -56,-10c-30.23976,-4.10031 -61.58884,-2 -92,-2c-9.66667,0 -19.41656,-1.26574 -29,0c-42.62772,5.63008 -89.90819,41.77048 -106,82c-1.73138,4.32845 -4.28751,19.25137 -1,24c8.52445,12.31309 41.01357,23.46985 54,28c7.9622,2.77751 15.87957,5.72628 24,8c8.56503,2.39821 17.27234,4.28564 26,6c9.94784,1.95404 19.97064,3.52026 30,5c42.15738,6.21994 84.45487,8.62758 127,10c30.14274,0.97235 61.93654,3.5074 92,0c27.97076,-3.26326 53.56633,-10.38188 82,-11c32.52494,-0.70706 81.39532,-6.20936 99,29c3.91534,7.83068 6.51402,45.59814 8,56c4.38078,30.66544 6.68039,67.2181 -18,90c-21.12684,19.5017 -55.54179,16.23612 -82,18c-58.33491,3.88899 -118.00502,5.77648 -175,-9c-9.48988,-2.46034 -18.41399,-6.94585 -28,-9c-10.18092,-2.18163 -21.63708,-2.20285 -32,-3c-3.12635,-0.24049 -8.23541,-3 -10,-3z

这个SVG路径有一些填充区域和一些洞,但它只是一条路径,我想要实现的是分离填充路径和表示内部空白空间的路径。我找不到任何我不知道的东西,如果有一些算法或我可以在paper.js内使用或直接在SVG字符串上使用的东西。

1 个答案:

答案 0 :(得分:1)

这不重要。

也许对你而言,确定路径是否自相交是足够的?不是每个自相交都会导致一个'#34;洞'"。它取决于填充规则和路径方向。

但这是一个提供计算路径自交点的解决方案的问题。这至少可能是一个很好的起点。

Find intersection of SVG path