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