Точки пересечения двух окружностей



Даны две окружности
Найти точки их пересечения
Если попробовать решить аналитически эту задачу, то после сокращений можно получить уравнение прямой, проходящей через две точки пересечения окружностей. Далее находим точки пересечения этой прямой и любой окружноси.

Листинг C++

int cross_circle (double x1, double y1, double r1, double x2, double y2, double r2, point &p1, point &p2)
{
    if (abs (x1 - x2) <= eps && abs (y1 - y2) <= eps && abs (r1 - r2) <= eps)
        return 3;
    double a = 2.0 * (x2 - x1);
    double b = 2.0 * (y2 - y1);
    double c = x1 * x1 + y1 * y1 - r1 * r1 - (x2 * x2 + y2 * y2 - r2 * r2);
    return cross_line_circle (line (a, b, c), circle (x1, y1, r1), p1, p2);
}

27.06.2007, 15:19

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