本帖最后由 作者 于 2007-6-17 13:41:10 编辑
设直线的两端点分别A和B, 判断任意点P在直线AB上否? 解: 以直线的一端点A为起点, 另一端点B 和任意点P为终点的矢量分别设为V0和V1. 任意点P 点和在直线AB上的话,外积(V0×V1)的大小为0. 即: ||V0×V1|| =0 --- 任意点P 在直线AB上 ||V0×V1|| <>0 --- 任意点P不在直线AB上 式中: ×为矢量的外积运算符. ************************************************ 具体计算如下: 设直线的端点坐标为 A = (A(0), A(1), A(2) )T, B = (B(0), B(1), B(2) )T, 任意点P = (P(0), P(1), P(2) )T 则, 矢量 V0=B – A, V0的成分为:V0(i) = B(i) – A(i ), i=0,2 V1=P – A, V1的成分为: V1(i) = P(i) – A(i ), i=0,2 又设矢量的外积V = V0×V1, V还是矢量. V = V0×V1 V的成分如下, V(0)= V0 (1) V1 (2) – V0 (2) V1 (1) V(1)= V0 (2) V1 (0) – V0 (0) V1 (2) V(2)= V0 (0) V1 (1) – V0 (1) V1 (0) 则, ||V0×V1||= sqr(V(0)^2+ V(1)^2+ V(2)^2) 然后用上面的结论即可判断出点P在直线AB上否. 以上计算中只要进行简单的加,减,乘,乘方,开方运算即可. 该方法不论是在2维空间还是3维空间,也不论点在线段AB上,还是在其延长线上,都能使用. |