-         private Point Cross(double a1, double b1, double c1, double a2, double b2, double c2) 
-         { 
-             Point pCross = new Point(); 
-   
-   
-             pCross.X = (b1 * c2 - b2 * c1) / (a1 * b2 - a2 * b1); 
-   
-             pCross.Y = (a2 * c1 - a1 * c2) / (a1 * b2 - a2 * b1); 
-   
-             return pCross; 
-         } 
-   
-         public bool LineLine(Point pABDot1, Point pABDot2, Point pCDDot1, Point pCDDot2, out Point pCross, out Info info) 
-         { 
-             info = new Info(); 
-   
-             double a1 = pABDot2.Y - pABDot1.Y; 
-             double b1 = pABDot1.X - pABDot2.X; 
-             double c1 = -pABDot1.X * pABDot2.Y + pABDot1.Y * pABDot2.X; 
-   
-   
-             double a2 = pCDDot2.Y - pCDDot1.Y; 
-             double b2 = pCDDot1.X - pCDDot2.X; 
-             double c2 = -pCDDot1.X * pCDDot2.Y + pCDDot1.Y * pCDDot2.X; 
-   
-   
-             //// Обе прямые неопределенны 
-             //if (a1 == 0 && b1 == 0 && a2 == 0 && b2 == 0) 
-             //{ 
-             //    info.Id = 10; 
-             //    info.Message = "Обе прямые не определены"; 
-   
-             //    return false; 
-             //} 
-   
-   
-             //// Направление первой прямой неопределенно 
-             //if (a1 == 0 && b1 == 0) 
-             //{ 
-             //    info.Id = 11; 
-             //    info.Message = "Первая прямая не определена"; 
-   
-             //    return false; 
-             //} 
-   
-   
-             //// Направление второй прямой неопределенно 
-             //if (a2 == 0 && b2 == 0) 
-             //{ 
-             //    info.Id = 12; 
-             //    info.Message = "Вторая прямая не определена"; 
-   
-             //    return false; 
-             //} 
-   
-             //// Прямые параллельны 
-             //if ((a1 * b2 - a2 * b1) == 0) 
-             //{ 
-   
-             //    info.Id = 40; 
-             //    info.Message = "Прямые параллельны"; 
-   
-             //    if (a1 == 0) 
-             //    { 
-             //        // Прямые паралельны оси Х 
-             //        info.Id = 41; 
-             //        info.Message = "Прямые паралельны оси Х"; 
-             //    } 
-   
-             //    if (b1 == 0) 
-             //    { 
-             //        // Прямые паралелльны оси Y 
-             //        info.Id = 42; 
-             //        info.Message = "Прямые паралельны оси Y"; 
-             //    } 
-   
-             //    if (a1 * b2 == b1 * a2 && a1 * c2 == a2 * c1 && b1 * c2 == c1 * b2) 
-             //    { 
-             //        info.Id = 43; 
-             //        info.Message = "Прямые совпадают"; 
-             //    } 
-   
-             //    return false; 
-             //} 
-   
-             pCross = Cross(a1, b1, c1, a2, b2, c2); 
-   
-   
-             // Прямые перпендикулярны 
-             //if ((a1 * a2 + b1 * b2) == 0) 
-             //{ 
-             //    info.Id = 50; 
-             //    info.Message = "Прямые перпендикулярны"; 
-   
-             //    return true; 
-             //} 
-   
-   
-   
-             // Первая прямая паралельна оси Х 
-             //if (a1 == 0) 
-             //{ 
-             //    info.Id = 60; 
-             //    info.Message = "Первая прямая параллельна оси Х"; 
-   
-             //    return true; 
-             //} 
-   
-             //// Вторая прямая паралельна оси Х 
-             //if (a2 == 0) 
-             //{ 
-             //    info.Id = 61; 
-             //    info.Message = "Вторая прямая параллельна оси Х"; 
-   
-             //    return true; 
-             //} 
-   
-   
-             //// Первая прямая параллельна оси Y 
-             //if (b1 == 0) 
-             //{ 
-             //    info.Id = 70; 
-             //    info.Message = "Первая прямая параллельна оси Y"; 
-   
-             //    return true; 
-             //} 
-   
-             //// Вторая прямая параллельна оси Y 
-             //if (b2 == 0) 
-             //{ 
-   
-             //    info.Id = 71; 
-             //    info.Message = "Вторая прямая параллельна оси Y"; 
-   
-             //    return true; 
-             //} 
-   
-   
-             info.Id = 0; 
-             info.Message = "Общий случай"; 
-             return true; 
-         } 
-     } 
-   
-     public class Info 
-     { 
-         public string Message; 
-         public int Id; 
-     }