Blame view

src/helpers/common_tool.cpp 1.18 KB
39b31e88   Hu Chunming   添加人员攀爬、人员越线、车辆压线
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  #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;
      }
  }