前言
在平面几何中通常我们判断或求直线的相交方法是:用两直线的表达方程,判断其斜率或求二元方法解;但是这种方法经常要考虑很多特殊情况,例如:与坐标轴X平行时(斜率 k = 0 k=0 k=0),与坐标轴Y平行时(斜率 k = ∞ k=\infty k=∞)等等;这些代数几何的方法处理起来都比较琐碎,不好统一解法,因此应当考虑图形学的处理方法来解决,用向量处理解决,这样就无需考虑斜率等问题,会更加便利。具体原理可以查看参考文献,以下为本人对原理的总结。
参考文献:《计算机图形学——用OpenGL实现(第2版)》 清华大学出版社
平面直线的相交
-
平面直线的表达方式
两点A( a x , a y a_{x},a_{y} ax,ay),B( b x , b y b_{x},b_{y} bx,by)在直线L上,
向量 a ⃗ = B − A = B A → \vec a = B - A = \overrightarrow {BA} a=B−A=BA,
则直线方程 L ( t ) L(t) L(t)为: L ( t ) = A + a ⃗ t L(t) = A + \vec a t L(t)=A+at
直线的法向量(垂直于直线的向量或称为与直线正交的向量)为: n ⃗ \vec n n;
设点R为直线上任意位置一点,则有直线L的点-法向量形式为:
n ⃗ ⋅ ( R − A ) = 0 \vec n \cdot(R - A) = 0 n⋅(R−A)=0
另外,向量 a ⃗ ⊥ \vec a^\perp a⊥表示为向量 a ⃗ \vec a a的逆时针正交向量, a ⃗ ⊥ = ( − a y , a x ) \vec a^\perp = (-a_y,a_x) a⊥=(−ay,ax) -
平面直线的相交
假定点A,B确定一直线,点C,D确定一直线,
那么向量 a ⃗ = B − A \vec a = B- A a=