利用齐次坐标处理二次曲线
Dwzj
·
·
算法·理论
虽然这些部分OI没有要求是超纲的,但是了解下并非坏事,默认读者具有同济线代水平。
形如ax^2+by^2+2cxy=1 的二次曲线的处理是显然的,左边是一个二次型,对系数矩阵
\begin{pmatrix}
a & c \\
c & b \\
\end{pmatrix}
对角化即可确定二次曲线的类型。
这里我们考虑更一般的二次曲线ax^2+by^2+2cxy+dx+ey=1的情况,左边并不是一个二次型,要怎么办呢?
这就需要引入齐次坐标:
x & y &1
\end{pmatrix}
把二次曲线写的更好看一些,让d=\frac{d}{2},e=\frac{e}{2},二次曲线变成ax^2+by^2+2cxy+2d\times 1\cdot x+2e\times 1\cdot y+1^2=2,不难看出左边其实就是:
\begin{pmatrix}
x & y &1
\end{pmatrix}
\begin{pmatrix}
a & c &d\\
c& b &e\\
d&e & 1
\end{pmatrix}
\begin{pmatrix}
x \\
y\\
1
\end{pmatrix}
系数矩阵A=\begin{pmatrix}
a & c &d\\
c& b &e\\
d&e & 1
\end{pmatrix}是对称矩阵,一定有A=QDQ^{T},其中Q为正交矩阵,D为对角阵。
做代换\begin{pmatrix}
x' & y' &1
\end{pmatrix}=\begin{pmatrix}
x & y &1
\end{pmatrix}Q,注意这是一个正交变换,意味着椭圆保持为椭圆,双曲线保持为双曲线,抛物线保持为抛物线,圆保持为圆
左边有:
x & y &1
\end{pmatrix}QDQ^T\begin{pmatrix}
x \\
y\\
1
\end{pmatrix}=\begin{pmatrix}
x' & y' &1
\end{pmatrix}D\begin{pmatrix}
x' \\
y'\\
1
\end{pmatrix}=\lambda_1x'^2+\lambda_2y'^2+\lambda_3
带回去就得到了:
\dfrac{\lambda_1}{2-\lambda_3}x'^2+\dfrac{\lambda_2}{2-\lambda_3}y'^2=1(\lambda_1,\lambda_2\ ,\lambda_3-2 \neq0)
若不满足条件\lambda_1,\lambda_2\ ,\lambda_3-2 \neq0,则称该二次曲线是退化的
若\lambda_1,\lambda_2\ ,\lambda_3-2全部为0:
这种情况是不存在的,因为此时方程会覆盖整个平面,违背了二次方程最多两个实数解的要求
若\lambda_1,\lambda_2有一个为0
这时该方程表示一条垂直于x轴或y轴的直线,由于x',y'均是x,y的一次函数,原方程ax^2+by^2+2cxy+2dx+2ey=1表示了一条直线(不一定垂直于坐标轴),比如-x^2-y^2-2xy+2x+2y=1
若\lambda_1,\lambda_2均不为0 ,\lambda_3-2=0:
该方程表示原点(\lambda_1,\lambda_2同号),或两条直线(\lambda_1,\lambda_2异号),原方程ax^2+by^2+2cxy+2dx+2ey=1对应表示了一个点或者两条直线,比如-x^2-y^2+2y=1表示一个点,-x^2+2x+y^2=1表示两条直线