计算线段或直线与线段的交点

1. 使用矢量叉乘积判断线段与线段(或直线)是否相交。若是结果是相交,那么在后面就能够将线段所有看作直线来考虑。.net

2.两条线段共线状况须要单独考虑。blog

3.使用直线或线段方程计算,能够把方程式改成ax + by + c = 0。get

 

设一条线段为L0 = P1P2,另外一条线段或直线为L1 = Q1Q2:(步骤4和步骤5与步骤二、步骤3类似,只是横纵方向不一样)it

第一步:判断L0和L1是否相交,若是没有相交就没有交点,不然L0,L1必定有交点,下面就能够看作直线来考虑。im

第二步:若P1和P2的横坐标相同,即L0平行于y轴:img

1. 若L1也平行于y轴,则L0L1共线或平行。(P1和Q1横坐标相同共线,不相同平行)360

2. 交点横坐标为P1或P2横坐标,带入L1方程求出纵坐标。ps

第三步:若P1P2横坐标不一样,可是Q1Q2的横坐标相同,即L1平行于y轴,则交点横坐标为Q的横坐标,带入到L0的直线方程中便可计算交点纵坐标。tar

第四步:若是P1P2纵坐标相同,即L0平行于x轴:

1. 若L1也平行于x轴,则L0L1平行或共线。

2. 交点纵坐标P1或P2的纵坐标,带入L1方程式求出交点横坐标。

第五步:如P1P2的纵坐标不一样,可是Q1Q2的纵坐标相同,即L1平行于x,则交点纵坐标为Q1的纵坐标,带入L0直线方程计算交点横坐标。

第六步:剩下步骤为L0L1斜率均不为0的状况。

1.计算L0斜率K0,L1斜率K1。

2. 若K0=K1, 若Q1在L0上,则L0L1共线,若是不在L0上则平行。

3. 联立两直线的方程组能够解出交点。

相关文章
相关标签/搜索