http://blog.youkuaiyun.com/rickliuxiao/article/details/6259322//叉积
double mult(node1 a, node1 b, node1 c)
{
return 1.0*(a.x-c.x)*(b.y-c.y)-1.0*(b.x-c.x)*(a.y-c.y);
}
//aa, bb为一条线段两端点 cc, dd为另一条线段的两端点 相交返回true, 不相交返回false
bool judge(node1 aa, node1 bb, node1 cc, node1 dd)
{
if ( max(aa.x, bb.x)<min(cc.x, dd.x) )
{
return false;
}
if ( max(aa.y, bb.y)<min(cc.y, dd.y) )
{
return false;
}
if ( max(cc.x, dd.x)<min(aa.x, bb.x) )
{
return false;
}
if ( max(cc.y, dd.y)<min(aa.y, bb.y) )
{
return false;
}
if ( mult(cc, bb, aa)*mult(bb, dd, aa)<0 )
{
return false;
}
if ( mult(aa, dd, cc)*mult(dd, bb, cc)<0 )
{
return false;
}
return true;
}
判断线段相交
最新推荐文章于 2019-02-16 19:33:30 发布