Python 将路径转换为多边形
我正在尝试使用Python来确定一个点是否位于SVG路径中。Python 将路径转换为多边形,python,svg,raycasting,Python,Svg,Raycasting,我正在尝试使用Python来确定一个点是否位于SVG路径中。 我将使用的算法是 但是对于这个算法,我需要多边形边,但是我只有svg路径的pathdata: <path d="m 362.26878,978.51017 c 20.15947,-20.15479 23.0826,-25.35876 20.51836,-36.58367 -5.62899,-24.66928 -8.85902,-84.94939 -4.6845,-87.51832 2.295
我将使用的算法是 但是对于这个算法,我需要多边形边,但是我只有svg路径的pathdata:
<path
d="m 362.26878,978.51017 c 20.15947,-20.15479 23.0826,-25.35876
20.51836,-36.58367 -5.62899,-24.66928 -8.85902,-84.94939
-4.6845,-87.51832 2.29504,-1.43086 25.27371,2.13445 51.0669,7.87678
39.48315,8.80707 50.0611,13.213 66.91495,27.88988 11.39966,9.91685
25.01402,17.41113 31.62525,17.41113 12.91547,0 24.69288,-11.04544
19.95645,-18.71919 -1.68587,-2.73893 4.50508,-38.63785 13.76077,-79.78795
12.41964,-55.21781 16.82552,-85.81829 16.82552,-116.84379 0,-23.12039 … z" />
对应于此图像的:
那么,有没有办法获得路径的边呢?您可以将路径转换为多边形,如我在这里的示例所示:
该页面中较简单的算法(JavaScript)是: 函数polygonSampledFromPath(路径,样本){ var doc=path.ownerDocument; var poly=doc.createElements('http://www.w3.org/2000/svg'多边形'; var点=[]; var len=path.getTotalLength(); var步骤=步骤=长度/样本;
对于(var i=0;i不幸的是,我的python绑定没有任何对SVGPatheElement的访问权限。我将等待更多的答案,同时我将看看是否可以用python重新实现我需要的函数。我用javascript完成了,这里是:)再次感谢Phrogz
function polygonSampledFromPath(path,samples){
var doc = path.ownerDocument;
var poly = doc.createElementNS('http://www.w3.org/2000/svg','polygon');
var points = [];
var len = path.getTotalLength();
var step = step=len/samples;
for (var i=0;i<=len;i+=step){
var p = path.getPointAtLength(i);
points.push( p.x+','+p.y );
}
poly.setAttribute('points',points.join(' '));
return poly;
}