项目描述:
有目标移动,在世界坐标系上洒满了候选点,还有障碍墙,判断并预测目标将到达哪个候选点?
我们把障碍墙看成线段,由两个点来表示(P3,P4)
障碍物—用线段的两点表示 P3,P4
目标点与候选点 P1,P2
class point(): #定义类
def __init__(self,x,y):
self.x=x
self.y=y
def cross(p1,p2,p3):#跨立实验
x1=p2.x-p1.x
y1=p2.y-p1.y
x2=p3.x-p1.x
y2=p3.y-p1.y
return x1*y2-x2*y1
def IsIntersec(p1,p2,p3,p4): #判断两线段是否相交
#快速排斥,以l1、l2为对角线的矩形必相交,否则两线段不相交
if(max(p1.x,p2.x)>=min(p3.x,p4.x) #矩形1最右端大于矩形2最左端
and max(p3.x,p4.x)>=min(p1.x,p2.x) #矩形2最右端大于矩形最左端
and max(p1.y,p2.y)>=min(p3.y,p4.y) #矩形1最高端大于矩形最低端
and max(p3.y,p4.y)>=min(p1.y,p2.y)): #矩形2最高端大于矩形最低端
#若通过快速排斥则进行跨立实验
if(cross(p1,p2,p3)*cross(p1,p2,p4)<=0
and cross(p3,p4,p1)*cross(p3,p4,p2)<=0):
D=1
else:
D=0
else:
D=0
return D