求出交点之后 为什么还判断交点是否在线段上啊?//交点是线段无线延长的交点呀?
问题描述:
求出交点之后 为什么还判断交点是否在线段上啊?//交点是线段无线延长的交点呀?
求两多边形的交点可以用判定点在多边形内部的方法,如果有一个多边形的一个边的两个顶点中有一个在另一个多边形内或边上,另一个顶点在边上或在外部,则这条边有交点.具体求线段的交点可以用下面的方法求:
已知一条线段的两个端点为A(x1,y1),B(x2,y2),另一条线段的两个端点为C(x3,y3),D(x4,y4),要判断AB与CD是否有交点,若有求出.
首先判断d = (y2-y1)(x4-x3)-(y4-y3)(x2-x1),
若d=0,则直线AB与CD平行或重合,
若d!=0,则直线AB与CD有交点,且交点(x0,y0)为:
x0 = [(x2-x1)*(x4-x3)*(y3-y1)+(y2-y1)*(x4-x3)*x1-(y4-y3)*(x2-x1)*x3]/d
y0 = [(y2-y1)*(y4-y3)*(x3-x1)+(x2-x1)*(y4-y3)*y1-(x4-x3)*(y2-y1)*y3]/(-d)
求出交点后在判断交点是否在线段上,即判断以下的式子:
(x0-x1)*(x0-x2)
答
不平行的两条直线一定会有交点,但是不平行的两条线段不一定有交点,因为可能是线段延长之后才会相交.
所以用联立两线段所在的两直线方程,求出的交点不一定会在线段上.