椭圆参数的推导过程

一、用一般式方程的系数计算椭圆参数

二次曲线的一般式方程为Ax^2+Bxy+Cy^2+Dx+Ey+F=0,当B^2-4AC<0时所表示的图形为椭圆。

设椭圆的圆心为(x_0,y_0),长半轴长度为 a,短半轴长度为 b,长半轴与 x 轴的夹角为 θ。

通过将坐标做平移和旋转变化,可以得到标准形式的椭圆方程:

\frac{[(x-x_0)\cosθ+(y-y_0)\sinθ]^2}{a^2}+\frac{[-(x-x_0)\sinθ+(y-y_0)\cosθ]^2}{b^2}=1

展开后,与一般式做对比,并且由于一般式方程乘以任意的非零常数 k 仍成立,可得:

\begin{cases} a^2\sin^2θ+b^2\cos^2θ=kA \\ 2(b^2-a^2)\sinθ\cosθ=kB \\ a^2\cos^2θ+b^2\sin^2θ=kC \\ -2Ax_0-By_0=D \\ -Bx_0-2Cy_0=E \\ k(Ax_0^2+Bx_0y_0+Cy_0^2)-a^2b^2=kF \end{cases}

可以先解出:

\begin{cases} x_0 = \cfrac{2CD-BE}{B^2-4AC} \\\\ y_0 = \cfrac{2AE-BD}{B^2-4AC} \end{cases}

利用\sin2θ=2\sinθ\cosθ,\cos2θ=\cos^2θ-\sin^2θ可得:

\begin{cases} (b^2-a^2)\sin2θ=kB \\ (b^2-a^2)\cos2θ=k(A-C) \\ \end{cases}

所以θ = \frac{1}{2}\arctan(\frac{B}{A-C}),利用\tan(\frac{1}{2}\arctan{x})= \frac{\sqrt{x^2+1}-1}{x}可得:
θ = \arctan\frac{\pm\sqrt{(A-C)^2+B^2}-(A-C)}{B}

利用\sin^2θ+\cos^2θ=1,\sin(\arctan{x})=\dfrac{x}{\sqrt{x^2+1}}可得:

\begin{cases} a^2+b^2=k(A+C) \\ b^2-a^2=\pm k\sqrt{(A-C)^2+B^2} \\ a^2b^2=k(Ax_0^2+Bx_0y_0+Cy_0^2-F)=k(\frac{AE^2-BDE+CD^2}{4AC-B^2}-F) \end{cases}

假设 A>0,否则所有系数乘以-1,最后解出:

\begin{cases} a^2 = \cfrac{2(\frac{AE^2-BDE+CD^2}{4AC-B^2}-F)}{A+C-\sqrt{(A-C)^2+B^2}} \\\\ b^2 = \cfrac{2(\frac{AE^2-BDE+CD^2}{4AC-B^2}-F)}{A+C+\sqrt{(A-C)^2+B^2}} \\ \end{cases}

长半轴对应的倾角为θ = \arctan \frac{C-A-\sqrt{(A-C)^2+B^2}}{B}

二、坐标变换的方法可用参数方程来推导

把标准椭圆的参数方程

\begin{cases} x = a\cos t \\ y = b\sin t \end{cases}

旋转 θ 角,再平移到(x_0,y_0),得到的参数方程为:

\begin{cases} x = a\cos t \cosθ - b\sin t \sinθ + x_0 \\\\ y = a\cos t \sinθ + b\sin t \cosθ + y_0 \end{cases}

解出:

\begin{cases} \cos t = \frac{1}{a} [(x-x_0) \cosθ + (y-y_0) \sinθ] \\\\ \sin t = \frac{1}{b} [-(x-x_0) \sinθ + (y-y_0) \cosθ] \end{cases}

\sin^2t+\cos^2t=1可得:

\frac{[(x-x_0)\cosθ+(y-y_0)\sinθ]^2}{a^2}+\frac{[-(x-x_0)\sinθ+(y-y_0)\cosθ]^2}{b^2}=1

三、用矩阵形式推导椭圆参数

形如ax^2+2bxy+cy^2+2dx+2ey+f=0的二次曲线方程可以写成矩阵形式:

^TQ=0

其中=\begin{bmatrix}x\\y\\1\end{bmatrix},称作(x,y)的齐次坐标,Q=\begin{bmatrix}a&b&d\\b&c&e\\d&e&f\end{bmatrix}为系数矩阵。

如果允许=\begin{bmatrix}x\\y\\0\end{bmatrix}, 的定义域从二维欧氏空间扩展到二维投影空间。

\det Q > 0时,Q 表示椭圆。l=Q称作极点 关于椭圆 Q 的极线。当 在 Q 上时,l 经过 ,l^T=0,且 l 是 Q 在 处的切线。当 椭圆外面时, 离椭圆越远,l 越靠近椭圆的圆心。

无穷远点\begin{bmatrix}1\\0\\0\end{bmatrix}的极线ax+by+d=0和无穷远点\begin{bmatrix}0\\1\\0\end{bmatrix}的极线bx+cy+e=0都过圆心。

联立\begin{cases}ax+by+d=0\\\\ bx+cy+e=0\end{cases}可解出椭圆的圆心坐标为:

\begin{cases} x_0 = \cfrac{be-cd}{ac-b^2} \\\\ y_0 = \cfrac{bd-ae}{ac-b^2} \end{cases}

Q 可以分解为:

Q=\begin{bmatrix}1&0&0\\0&1&0\\-x_0&-y_0&1\end{bmatrix}\begin{bmatrix}a&b&0\\b&c&0\\0&0&g\end{bmatrix}\begin{bmatrix}1&0&-x_0\\0&1&-y_0\\0&0&1\end{bmatrix}

其中g=\frac{\det Q}{ac-b^2}= \frac{(ac-b^2)f-(ae^2-2bde+cd^2)}{ac-b^2}

形如E=\begin{bmatrix}a&b&0\\b&c&0\\0&0&g\end{bmatrix}的系数矩阵可表示圆心在原点上的椭圆。

E的本征值和本征向量,Ev=λv,左侧的v是坐标点,右侧的v是极线的参数,即v^T=0v作为向量则表示垂直与极线的方向。所以本征向量v是作为坐标点的v对应的极线垂直于作为向量的v的向量。当坐标点v在椭圆上时,该点的切线垂直于该点到原点的连线。

仅当极点在轴线上时,对应的极线垂直于轴线。仅当轴线过原心时轴线的方向与轴线上点的坐标值一致。当两条轴线都过原点时,椭圆的圆心在原点上。

因为v是齐次坐标,只有前两个维度表示轴线方向所以有

\begin{bmatrix}a&b\\b&c\end{bmatrix}v=λv

解出来的本征向量就是椭圆轴线的方向:

\begin{cases} v_1 = (a-c - \sqrt{(a-c)^2 + 4 b^2},\ 2b) \\\\ v_2 = (a-c + \sqrt{(a-c)^2 + 4 b^2},\ 2b) \end{cases}

本征值为:

\begin{cases} λ_1 = \frac{1}{2}(a+c - \sqrt{(a-c)^2 + 4 b^2}) \\\\ λ_2 = \frac{1}{2}(a+c + \sqrt{(a-c)^2 + 4 b^2}) \end{cases}

两个正交的轴线方向组成一个旋转矩阵,坐标变换后椭圆的系数矩阵变为\begin{bmatrix}λ_1&0&0\\0&λ_2&0\\0&0&g\end{bmatrix},对比椭圆的标准型\begin{bmatrix}\frac{1}{r_1^2}&0&0\\ 0&\frac{1}{r_2^2}&0\\0&0&-1\end{bmatrix},可知\sqrt{\frac{-g}{λ}}为椭圆半轴的长度。本征值与半轴的平方成反比,所以绝对值较小的本征值对应椭圆的长半轴。当 a 和 c 为正数时0<λ_1<λ_2v_1为长轴方向;当 a 和 c 为负数时λ_1<λ_2<0v_2为长轴方向。

半轴长度的平方为:

\begin{cases} r_1^2 = \frac{2(ae^2-2bde+cd^2-(ac-b^2)f)}{(ac-b^2)(a+c - \sqrt{(a-c)^2 + 4 b^2})} \\\\ r_2^2 = \frac{2(ae^2-2bde+cd^2-(ac-b^2)f)}{(ac-b^2)(a+c + \sqrt{(a-c)^2 + 4 b^2})} \end{cases}

r_1与 x 轴的夹角为:

θ = \arctan\frac{2 b}{a-c - \sqrt{(a-c)^2 + 4 b^2}}=\arctan\frac{c-a - \sqrt{(a-c)^2 + 4 b^2}}{2 b}

四、由椭圆参数计算椭圆方程的系数

x_0,y_0,a,b,θ 已知时,根据前面的推导:

\begin{cases} a^2\sin^2θ+b^2\cos^2θ=kA \\ 2(b^2-a^2)\sinθ\cosθ=kB \\ a^2\cos^2θ+b^2\sin^2θ=kC \\ -2Ax_0-By_0=D \\ -Bx_0-2Cy_0=E \\ k(Ax_0^2+Bx_0y_0+Cy_0^2)-a^2b^2=kF \end{cases}

k=1,得:

\begin{cases} A=a^2\sin^2θ+b^2\cos^2θ \\ B=2(b^2-a^2)\sinθ\cosθ \\ C=a^2\cos^2θ+b^2\sin^2θ \\ D=-2Ax_0-By_0 \\ E=-Bx_0-2Cy_0 \\ F=-\frac{1}{2}(Dx_0+Ey_0)-a^2b^2\end{cases}

你可能感兴趣的:(椭圆参数的推导过程)