2D line intersection
From Ogre Wiki
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;
}
l1s is line 1 start, l1f is line 1 finish similarly l2s l2f

