【发布时间】:2014-07-12 00:18:46
【问题描述】:
假设我有一个任意的 SVG 路径,并且用户在该路径上选择了两个点。如何计算这两点之间子路径的确切长度?
我对@987654321@ 有点熟悉,但不知道如何使用任何调用来计算路径的部分长度。
我正在使用 D3,因此 D3 API 调用会非常好。
【问题讨论】:
-
两个选定的点 - 关于它们的已知数据是什么? x, y 坐标是不够的,因为一条路径可以多次通过点 (x, y)。
-
这是一个开放的非重叠路径。但即便如此,这无关紧要:这些点保证在路径空间中,而不是用户空间中。我本质上是在寻找
SVGPathElement#getPointAtLength的倒数。 -
不幸的是,您必须遍历路径才能找到您的
x坐标与getPointAtLength坐标匹配的确切长度,这是类似bl.ocks.org/duopixel/3824661 的实现 -
如果可以使用 Snap.svg,Snap.path.intersection 方法很有用。 jsdo.it/defghi1977/cNvB 这是通过光标获取子路径长度的示例。
标签: javascript svg