坐标为(xp,yp)的点P在直线的哪一侧?
已知直线上两点(x1,y1),(x2,y2),直线方向是由(x1,y1)到(x2,y2)的方向。
假设直线方程为:Ax+By+C=0,则有:
A=y2-y1;
B=x1-x2;
C=x2y1-x1y2;
这时可以通过计算D,来判断点P是在直线的哪一侧:
D=Axp+Byp+C
若D<0,则点P在直线的左侧;若D>0,则点P在直线的右侧;若D=0,则点P在直线上。
【注:这里的直线是有方向性的!】
#xy为直线上的点,xy[:,0]为x坐标,xy[:,1]为y坐标
distjudgeA = xy[0,1] - xy[-1,1] #A=y2-y1
distjudgeB = xy[-1,0] - xy[0,0] #B=x1-x2
distjudgeC = xy[0,0]*xy[-1,1] - xy[-1,0]*xy[0,1] #C=x2*y1-x1*y2
distjudgeD = distjudgeA*xy[:,0] + distjudgeB*xy[:,1] + distjudgeC #D<0代表在斜线下方