点在线段上判断方法,需满足下面两个条件:
设P1P2为一条线段,Q为需要判断的点,条件可以表示为
(1)(Q-P1)×(P2-P1)=0;
(2)Q在以P1P2为对角顶点的矩形内。
代码如下:
struct point
{
double x;
double y;
};
bool onSegment(point Pi,point Pj,point Q)
{
if((Q.x-Pi.x)*(Pj.y-Pi.y)==(Pj.x-Pi.x)*(Q.y-Pi.y)&&min(Pi.x,Pj.x)<=Q.x&&max(Pi.x,Pj.x)>=Q.x&&min(Pi.y,Pj.y)<=Q.y&&max(Pi.y,Pj.y)>=Q.y)
return true;
else
return false;
}