【离散椭圆弧】将椭圆弧按弧长等分为一定数量弧上点

由于椭圆弧长积分的解析解不存在,用数值分析方法近似求解。

下面以第一象限椭圆弧为例说明一种近似求解方法,

(1)首先圆是椭圆的特殊形式,长短轴长相等,对于圆心角为θ的圆弧长为R*θ,

当圆心角足够小时可以认为tanθ≈θ,弧长可以认为L≈R*tanθ≈R*θ,其中明R为圆心到微段弧上点的距离,

这个近似简化对于椭圆弧同样有效。

(2)对于椭圆存在

x=a*cosθ

y=b*sinθ,

在此约定θ为逆时针方向与X轴之间的夹角,

图中点P对应的参数角θ如图所示,α为其对应的扫略角,θ和α之间可以相互转换,方法见博主上篇文章,

圆心O到点P之间距离|OP|=sqrt(x^2+y^2)=sqrt[(a*cosθ)^2+(b*sinθ)^2)],可得θ与|OP|的关系,

(3)当a=50,b=30时,得|OP|在不同θ时值,

以θ为x轴,|OP|为y轴时,曲线图近似为折线段如图中绿色线curve1,

绿色线curve1与x轴之间面积即为θ为0~PI/2时对应椭圆弧长,此时可将绿色线curve1近似为图中白色直线段curve2(为了更精确也可简化为连续折线段),

即白色线curve2与x轴之间面积A=(a+b)*(PI/4),近似为θ为0~PI/2时对应椭圆弧长,

此时将椭圆弧按长度等分即可转化为将面积A按θ等分问题,

curve2斜率为k=(b-a)/(PI/2),方程为y=(2b-2a)/PI*x+a,其与x轴之间面积积分为

∫ydx=∫[(2b-2a)/PI*x+a]dx=(b-a)/PI*x^2+a*x+c,其中c为常数项,

令f(x)=(b-a)/PI*x^2+a*x,若将椭圆弧等分位n份,每份面积为A/n,

f(θ1)-f(0)=f(θ1)=A/n,

f(θ2)-f(θ1)=A/n,

...

f(θn)-f(θn-1)=A/n,

先求θ1,再通过递推即可求得θ2~θn的值,

再按椭圆参数方程即可求得对应离散点。

当n为10时,离散点如下,

误差主要原因为上述将绿色曲线curve1简化为白色直线curve2造成的,

如需更精确,可以将curve1简化为几段相连的直线段。

对于任意其他椭圆弧离散也是相同的道理。

希望可以一块探讨更优方法。