Пересечение прямых



Даны две прямые
Необходимо найти точку их пересечения
Если прямые параллельные, функция возвращает 0.
Если прямые совпадают, функция возвращает 2.
Иначе, прямые пересекаются и функция возвращет 1.
Координаты точки пересечения:
x = (b2 * c1 - b1 * c2) / (a2 * b1 - a1 * b2)
y = (- a * x - c) / b

y находим из того уравнения прямой, у которого b не равно 0.

Листинг C++

int cross_line (line l1, line l2, point &p)
{
    if (is_equal_line (l1, l2)) return 2;
    if (is_parallel_line (l1, l2)) return 0;

    p.x = (l2.b * l1.c - l1.b * l2.c) / (l2.a * l1.b - l1.a * l2.b);
    p.y = (l1.b != 0 ? (- l1.c - l1.a * p.x) / l1.b : (- l2.c - l2.a * p.x) / l2.b);
    return 1;
}

11.06.2007, 15:57


По всем вопросам обращаться: rumterg@gmail.com