///
/// (x1,y1) and (x2,y2) stand for beeline segment 1;
/// (x3,y3) and (x4,y4) stand for beeline segment 2.
/// This method will help us to check whether the two line segments will cross with each other.
///
///
static bool IsCorssLine( double x1, double y1, double x2, double y2,
double x3, double y3, double x4, double y4)
{
// we assume the beeline as
// 1: y = ax + b (y1=ax1+b, y2=ax2+b)
// 2: y = mx + n (y3=mx3+n, y4=mx4+n)
double a, b, m, n;
a = (y1 - y2) / (x1 - x2);
b = y1 - a * x1;
m = (y3 - y4) / (x3 - x4);
n = y3 - m * x3;
if (a == m) // means the two beelines are parallel
{
return false ;
}
// now, let's get the corss point of the two lines
double X, Y;
X = (n - b) / (a - m);
Y = a * X + b;
// now, let's check whether (X,Y) is between (x1,y1) and (x2,y2), and between (x3,y3) and (x4,y4)
bool xBetweenLine1 = false ;
bool yBetweenLine1 = false ;
bool xBetweenLine2 = false ;
bool yBetweenLine2 = false ;
if ( ((X >= x1) && (x2 >= X)) || ((X <= x1) && (x2 <= X)) )
{
xBetweenLine1 = true ;
}
if (((Y >= y1) && (y2 >= Y)) || ((Y <= y1) && (y2 <= Y)))
{
yBetweenLine1 = true ;
}
if (((X >= x3) && (x4 >= X)) || ((X <= x3) && (x4 <= X)))
{
xBetweenLine2 = true ;
}
if (((Y >= y3) && (y4 >= Y)) || ((Y <= y3) && (y4 <= Y)))
{
yBetweenLine2 = true ;
}
return xBetweenLine1 && yBetweenLine1 && xBetweenLine2 && yBetweenLine2;
}
/// (x1,y1) and (x2,y2) stand for beeline segment 1;
/// (x3,y3) and (x4,y4) stand for beeline segment 2.
/// This method will help us to check whether the two line segments will cross with each other.
///
///
static bool IsCorssLine( double x1, double y1, double x2, double y2,
double x3, double y3, double x4, double y4)
{
// we assume the beeline as
// 1: y = ax + b (y1=ax1+b, y2=ax2+b)
// 2: y = mx + n (y3=mx3+n, y4=mx4+n)
double a, b, m, n;
a = (y1 - y2) / (x1 - x2);
b = y1 - a * x1;
m = (y3 - y4) / (x3 - x4);
n = y3 - m * x3;
if (a == m) // means the two beelines are parallel
{
return false ;
}
// now, let's get the corss point of the two lines
double X, Y;
X = (n - b) / (a - m);
Y = a * X + b;
// now, let's check whether (X,Y) is between (x1,y1) and (x2,y2), and between (x3,y3) and (x4,y4)
bool xBetweenLine1 = false ;
bool yBetweenLine1 = false ;
bool xBetweenLine2 = false ;
bool yBetweenLine2 = false ;
if ( ((X >= x1) && (x2 >= X)) || ((X <= x1) && (x2 <= X)) )
{
xBetweenLine1 = true ;
}
if (((Y >= y1) && (y2 >= Y)) || ((Y <= y1) && (y2 <= Y)))
{
yBetweenLine1 = true ;
}
if (((X >= x3) && (x4 >= X)) || ((X <= x3) && (x4 <= X)))
{
xBetweenLine2 = true ;
}
if (((Y >= y3) && (y4 >= Y)) || ((Y <= y3) && (y4 <= Y)))
{
yBetweenLine2 = true ;
}
return xBetweenLine1 && yBetweenLine1 && xBetweenLine2 && yBetweenLine2;
}