计算Python中SVG弧的确切长度?

问题描述 投票:3回答:1

我希望能够计算SVG弧的确切长度。我可以很轻松地完成所有操作。但是,我不确定是否有解决方案或该解决方案的确切实现。

这是椭圆圆周的精确解。使用流行的库很好。我完全理解,没有简单的解决方案,因为它们将需要精确的超几何函数。 from scipy import pi, sqrt from scipy.special import hyp2f1 def exact(a, b): t = ((a - b) / (a + b)) ** 2 return pi * (a + b) * hyp2f1(-0.5, -0.5, 1, t) a = 2.667950e9 b = 6.782819e8 print(exact(a, b))

我的想法是,如果您恰巧安装了scipy,则将其作为选择加入的代码,它将使用确切的超级幻想解决方案,否则将退回到较弱的近似代码(逐行缩小线段直到误差很小)。问题是这里的数学水平高于我。而且我不知道是否有一些方法可以指定起点和终点。 

大多数逼近解都适用于椭圆,但是我只想要弧。对于我来说,可能还存在一个未知的解决方案,用于计算椭圆上的弧长,但由于开始和结束位置可以在任何地方。说扫掠角为可能的总角度的15%,因此为椭圆周长的15%,似乎并不是立即可行的。

更有效的花式弧近似也可能很好。椭圆近似值越来越好,但是我不能从椭圆周长到圆弧长度,所以这些当前无济于事。


假设圆弧参数化是椭圆上的起点和终点。因为这就是SVG参数化的方式。但是,诸如arc_length参数化之类的没有重言式的东西都是正确的答案。

我希望能够计算SVG弧的确切长度。我可以很轻松地完成所有操作。但是,我不确定是否存在解决方案,或者...

python svg scipy automatic-ref-counting ellipse
1个回答
0
投票
[如果您想用裸手和std lib进行计算,则可以将计算基于following formula。由于acos,这仅对椭圆上半部分的两个点有效,但我们将直接将其与角度一起使用。
© www.soinside.com 2019 - 2024. All rights reserved.