本文介绍计算几何中常用的直线方程和直线性质。下面用圆括号(x,y)表示点的坐标,用方括号[x,y]表示方向矢量。
一、平面直线
1. 两点式
过两点和的直线方程是:
2.点向式
过点且平行于的直线方程是:
3.点法式
过点且垂直于的直线方程可由得到:
4.角距式
设法向的方向角为θ,原点到直线的距离为ρ。由点法式可推出直线方程为:
5.一般式
上述直线方程都可以写成一般式:
6.参数方程
过点,倾角α为直线方程为:
二、直线性质
1.点到直线的距离
点到直线的距离为:
两条平行线和的距离为:
所以可以看作是过原点的直线平移了,并且垂直于点(A,B)和原点之间的连线。
2.归一化
取,可得归一化的一般式方程:
点到直线的距离为:
3.两条直线的夹角
两条直线和的倾角分别为α和β,夹角θ=α-β的计算方法如下:
4.直线的交点
4.1 两条直线的交点
将两个直线方程联立,得到一个方程组:
可以解出交点坐标为:, .
当时,两条直线平行,或者说交点在无穷远处。
4.2 多条直线的交点
当多条直线不严格地交于一点时,找一个点使得点到这些直线的距离平方和最小。
设直线方程为,并且。点(x,y)到直线的距离为,最小化正好是方程组的最小二乘解,由可得:
若直线方程为,上述方程组则相当于求直线和的交点。
5.点到直线的垂足
联立直线ax+by+c=0和过点(m,n)的垂线:
可得垂足坐标为:
6. 点关于直线的对称点
点(m,n)到关于直线ax+by+c=0的对称点的有向距离为,连线的单位方向为.
对称点坐标为.
7.拟合直线
给定n个点,拟合一条直线使得这些点到该直线的距离平方和最小。
7.1 直接线性变换法
假设直线的系数为(a,b,c),将点的坐标代入可以得到一组线性方程:
写成矩阵形式为:
当点的个数≤3时,可以求矩阵A的零向量得到拟合的直线;
当点的个数>3时,可以求的最小本征值对应的本征向量作为拟合的结果。
直接线性变换法的本质是在3维空间拟合一个过原点的平面ax+by+cz=0,使得样本点(xᵢ,yᵢ,1)投影到该平面法线方向上的长度平方和∑(axᵢ+byᵢ+c)²最小,拟合的直线为该平面与z=1平面的交线,所以并不能最小化点到直线的距离平方和。
7.2 最小二乘法,最小化点到直线的竖直距离
设 y=ax+b,最小化 S(a,b)=∑(axᵢ+b-yᵢ)²。
写成矩阵形式为:
记为 .
用最小二乘法可得.
还有一种推导是用偏微分求极值:
最小二乘法最小化 y 坐标到直线的竖直距离的平方和,且不适用于 x=c 的直线。
7.3 主成分分析法,最小化点到直线的垂直距离
先计算n个点的中心点的坐标(x₀,y₀),即x坐标和y坐标的平均值。
各个点到中心点的差值组成一个矩阵:
计算
求S的本征值和本征向量,最大的本征值对应的本征向量就是拟合直线的方向,即“主成分”。另一个本征向量的方向垂直于直线方向,使得点到直线的垂直距离和最小,同时这个较小的本征值就等于点到直线的距离的方差。
根据拟合直线的方向和中心点坐标,可求出直线的方程系数。
8. 线性组合
两条直线和的线性组合:
是通过这两条直线的交点的一簇直线。
两个点的线性组合是过这两点的直线上的点。
三、空间直线
1. 两点式
经过点a和b的直线为:
2. 两向式
直线方向为m,过原点和直线的平面法向为n,直线方程为:
3. 点向式
过点a,方向为n的直线为:
4. 点到直线的距离
点b到直线距离是b-a与n组成平行四边形,以n为底求高:
5. 两条直线的距离
两条异面直线和最短距离是三个向量组成的平行六面体的高:
距离最近处的连线同时垂直与这两条直线,所以
解出λ和µ,就可以得到两条直线上距离最近的两个点。