Math 如何获取.net DrawArc方法的弧长

Math 如何获取.net DrawArc方法的弧长,math,drawing,trigonometry,Math,Drawing,Trigonometry,我想知道如何获得我在位图上绘制的这两个形状的弧长。使用以下方法绘制曲线: 'Half Round: Dim gfxpath As New GraphicsPath gfxpath.AddArc(outRect, 180, 180) gfxpath.AddArc(inRect, 180, 180) gfxpath.CloseFigure() gfx.FillPath(b, gfxpath) gfx.DrawPath(p, gfxpath) 'Quarter Round: Dim gfxpath

我想知道如何获得我在位图上绘制的这两个形状的弧长。使用以下方法绘制曲线:

'Half Round:
Dim gfxpath As New GraphicsPath
gfxpath.AddArc(outRect, 180, 180)
gfxpath.AddArc(inRect, 180, 180)
gfxpath.CloseFigure()
gfx.FillPath(b, gfxpath)
gfx.DrawPath(p, gfxpath)

'Quarter Round:
Dim gfxpath As New GraphicsPath
gfx.DrawArc(p, outRect, 270, 90)
gfx.DrawArc(p, inRect, 270, 90)
我只需要外弧的弧长(外矩形所包围的弧)。谢谢


椭圆弧长度没有闭合公式。它通过所谓的“椭圆积分”来表示

可以计算弧长积分的数值解

如果圆弧是全椭圆的一半和四分之一(从图片上看不清楚),可以使用一些近似值,例如

第一张照片

len = p / 2 = 1.5708 * (3*(36+18)+Sqrt((3*36+18)*(36+3*18)))

这看起来更像是一个数学问题,而不是一个编程问题。你在椭圆的周长/周长上做过网络搜索吗?周长没有简单的闭合形式表达式。你想要的近似值有多接近?谢谢你的链接!
len = p / 2 = 1.5708 * (3*(36+18)+Sqrt((3*36+18)*(36+3*18)))