private Point FindLineIntersection(Line lineA, Line lineB) { if (lineA == lineB) { return(null); } Point retVal = new Point(); Point P1 = new Point(); Point Q1 = new Point(); P1.X = lineA.X1; P1.Y = lineA.Y1; Q1.X = lineA.X2; Q1.Y = lineA.Y2; double a1 = Q1.Y - P1.Y; double b1 = P1.X - Q1.X; double c1 = a1 * (P1.X) + b1 * (P1.Y); Point P2 = new Point(); Point Q2 = new Point(); P2.X = lineB.X1; P2.Y = lineB.Y1; Q2.X = lineB.X2; Q2.Y = lineB.Y2; double a2 = Q2.Y - P2.Y; double b2 = P2.X - Q2.X; double c2 = a2 * (P2.X) + b2 * (P2.Y); double delta = a1 * b2 - a2 * b1; if (delta == 0) { return(null); } double xx = (b2 * c1 - b1 * c2) / delta; double yy = (a1 * c2 - a2 * c1) / delta; retVal.X = xx; retVal.Y = yy; return(retVal); }
private void FindAllIntersections() { foreach (var a in allDrawnLineObjects) { foreach (var b in allDrawnLineObjects) { Point ix = FindIntersection(a, b); //Point ix = FindLineIntersection(a, b); if (ix != null) { allIntersections.Add(ix); } } } }