s***e 发帖数: 911 | 1
首先这两个线段不一定有交点. 我来作个完全的推导:
线段一定义了一个矢量:
L1=((x2-x1),(y2-y1))
线段二定义另外一个适量:
L2=((x2'-x1'),(y2'-y1'))
线段一上的任何一个点R(p)可以这样确定:
R1(p)=(x1,y1)+p*L1
其中p是个参量,在[0,1]间变化. p=0就对应端点(x1,y1);p=1对应(x2,y2)
同理线段二上任何一点被确定为:
R2(q)=(x1',y1')+q*L2
对某个特殊的值(p,q), R1(p)=R2(q). 我们就来求这对(p,q)存在的条件. 如果(p,q)
存在,并且都在[0,1]内, 这两线段就相交,反之就不交. 于是就得两个方程:
(x1-x2)+p*(x2-x1)-q*(x2'-x1')=0
(y1-y2)+p*(y2-y1)-q*(y2'-y1')=0
这就是个二维线性方程组, 你解(p,q)就可以乐... | s***e 发帖数: 911 | 2
这个比较麻烦不系统. 参数的办法可以直接推广到求N条线段相交的条件... |
|