我有一组点可以画出一条路径。
let path=svg.append("path").attr("id","path")
.data([points])
.attr("d",d3.line()
.curve(d3.curveCatmullRom));
我现在想要获取点之间路径的距离,以便可以将其分为多个部分。我尝试增加距离并检查点(四舍五入)是否与初始点集匹配,从而在有匹配时获取距离。然后,我将这些点保存到列表中。
在这里,xyArray
包含我要附加的d
点列表以及列表seg
。
function distanceBetween2Points(path,xyArray) {
let distance = 0;
xyArray.forEach(function(d,i)
{
let flag=1;
seg=[];
while(flag)
{let pt=path.getPointAtLength(distance);
if(round5(pt.x)==round5(d.x) && round5(pt.y)==round5(d.y))
{console.log("d",i);
d.d=distance;
d.seg=seg;
flag=0;
break;}
seg.push([pt.x,pt.y]);
distance++;}
return 0;
});
}
根据数据,有时有时会起作用(即使不是很准确),但有时却不起作用。有没有更好的方法来获取距离?