public static sIntersectPos GetLinesIntersectBetween(XYInt a1, XYInt a2, XYInt b1, XYInt b2) { var result = new sIntersectPos(); if ((a1.X == a2.X & a1.Y == a2.Y) || (b1.X == b2.X & b1.Y == b2.Y)) { result.Exists = false; } else { double y1dif = 0; double x1dif = 0; double adifx = 0; double adify = 0; double bdifx = 0; double bdify = 0; double m = 0; double ar = 0; double br = 0; y1dif = b1.Y - a1.Y; x1dif = b1.X - a1.X; adifx = a2.X - a1.X; adify = a2.Y - a1.Y; bdifx = b2.X - b1.X; bdify = b2.Y - b1.Y; m = adifx * bdify - adify * bdifx; if (m == 0.0D) { result.Exists = false; } else { ar = (x1dif * bdify - y1dif * bdifx) / m; br = (x1dif * adify - y1dif * adifx) / m; if (ar <= 0.0D | ar >= 1.0D | br <= 0.0D | br >= 1.0D) { result.Exists = false; } else { result.Pos.X = a1.X + (ar * adifx).ToInt(); result.Pos.Y = a1.Y + (ar * adify).ToInt(); result.Exists = true; } } } return(result); }
public static sIntersectPos GetLinesIntersectBetween(XYInt A1, XYInt A2, XYInt B1, XYInt B2) { var Result = new sIntersectPos(); if ( (A1.X == A2.X & A1.Y == A2.Y) || (B1.X == B2.X & B1.Y == B2.Y) ) { Result.Exists = false; } else { double y1dif = 0; double x1dif = 0; double adifx = 0; double adify = 0; double bdifx = 0; double bdify = 0; double m = 0; double ar = 0; double br = 0; y1dif = B1.Y - A1.Y; x1dif = B1.X - A1.X; adifx = A2.X - A1.X; adify = A2.Y - A1.Y; bdifx = B2.X - B1.X; bdify = B2.Y - B1.Y; m = adifx * bdify - adify * bdifx; if ( m == 0.0D ) { Result.Exists = false; } else { ar = (x1dif * bdify - y1dif * bdifx) / m; br = (x1dif * adify - y1dif * adifx) / m; if ( ar <= 0.0D | ar >= 1.0D | br <= 0.0D | br >= 1.0D ) { Result.Exists = false; } else { Result.Pos.X = A1.X + (int)(ar * adifx); Result.Pos.Y = A1.Y + (int)(ar * adify); Result.Exists = true; } } } return Result; }