我希望能够计算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弧的确切长度。我可以很轻松地完成所有操作。但是,我不确定是否存在解决方案,或者...
acos
,这仅对椭圆上半部分的两个点有效,但我们将直接将其与角度一起使用。