common_tool.cpp
1.18 KB
#include "common_tool.h"
namespace common {
bool is_intersect(jxline myline1, jxline myline2)
{
// 快速排斥实验
if (myline1.get_max_x() < myline2.get_min_x() ||
myline2.get_max_x() < myline1.get_min_x() ||
myline1.get_max_y() < myline2.get_min_y() ||
myline2.get_max_y() < myline1.get_min_y())
return false;
// 跨立实验(叉积异号)
if (((((float)myline1.xa - (float)myline2.xa)*((float)myline2.yb - (float)myline2.ya) - ((float)myline1.ya - (float)myline2.ya)*((float)myline2.xb - (float)myline2.xa))*
(((float)myline1.xb - (float)myline2.xa)*((float)myline2.yb - (float)myline2.ya) - ((float)myline1.yb - (float)myline2.ya)*((float)myline2.xb - (float)myline2.xa))) > 0 ||
((((float)myline2.xa - (float)myline1.xa)*((float)myline1.yb - (float)myline1.ya) - ((float)myline2.ya - (float)myline1.ya)*((float)myline1.xb - (float)myline1.xa))*
(((float)myline2.xb - (float)myline1.xa)*((float)myline1.yb - (float)myline1.ya) - ((float)myline2.yb - (float)myline1.ya)*((float)myline1.xb - (float)myline1.xa))) > 0)
return false;
return true;
}
}