您的位置:首页 > 其它

两直线四坐标点判断相交并求交点

2017-11-17 17:39 399 查看
当判定两条线段相交后,可以进行交点的求解。

bool Intersection(double x1, double y1, double x2, double y2,
double x3, double y3, double x4, double y4,
double& dbX, double& dbY)
{
double a=x2-x1;
double b=x3-x4;
double c=y2-y1;
double d=y3-y4;
double g=x3-x1;
double h=y3-y1;
double f=a*d-b*c; //行列式
if(fabs(f)<1.0e-06) // delta=0,表示两线段重合或平行:delta<=(1e-6) && delta>=-(1e-6)
{
//Inverse matrix cannot be computed.
return false;
}
double t=(d*g-b*h)/f;
double s=(-c*g+a*h)/f;
if((0>t)||(t>1))
{
//tow line do not intersect.
return false;
}
if((0>s)||(s>1))
{
//tow line do not intersect.
return false;
}

dbX=x1+t*(x2-x1);
dbY=y1+t*(y2-y1);
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: