现在的位置: 首页 > 综合 > 正文

Test intersection between two lines

2013年08月31日 ⁄ 综合 ⁄ 共 569字 ⁄ 字号 评论关闭
l1s is line 1 start, l1f is line 1 finish, the rest goes accordingly.

bool vec2LinesIntersect ( Vector2 l1s, Vector2 l1f, Vector2 l2s, Vector2 l2f ){
 
Vector2 v1 = l1f - l1s;
 
Vector2 v2 = l2s - l1s;
Vector2 v3 = l2f - l1s;
 
Real crossProd1 = v1.crossProduct(v2);
Real crossProd2 = v1.crossProduct(v3);
 
if ((crossProd1 > 0 && crossProd2 < 0) || (crossProd1 < 0 && crossProd2 > 0) || (crossProd1 == 0 && crossProd2 == 0))
{
    v1 = l2s - l2f;
 
    v2 = l1s - l2f;
    v3 = l1f - l2f;
 
    crossProd1 = v1.crossProduct(v2);
    crossProd2 = v1.crossProduct(v3);    
 
    if ((crossProd1 > 0 && crossProd2 < 0) || (crossProd1 < 0 && crossProd2 > 0) || (crossProd1 == 0 && crossProd2 == 0))
    {
      return true;
    }
  }
  return false;
}

抱歉!评论已关闭.