public static bool Cross(this Line line1, Line line2, out Vector2 cross) { cross = default(Vector2); if (line1.IsParallelWith(line2)) { return(false); } var x = -(line1.C * line2.B - line2.C * line1.B) / (line1.A * line2.B - line2.A * line1.B); var y = -(line1.A * line2.C - line2.A * line1.C) / (line1.A * line2.B - line2.A * line1.B); cross = new Vector2(x, y); return(true); }