Построение окружностей

Функции circlePPP строят окружность по трём точкам. При этом находится центр o и квадрат радиуса r2 или окружность в виде типа Circle2d:

bool circlePPP ( const Vector2d & a, const Vector2d & b, const Vector2d & c, 
                 Vector2d & o, double & r2 );
Def<Circle2d> circlePPP ( const Vector2d & a, const Vector2d & b, const Vector2d & c );

Программа circlePPL строит окружности по двум точкам и одной прямой. К-во найденных окружностей может быть от 0 до 2. При этом находятся центры o и радиусы r:

unsigned int circlePPL ( const Vector2d & point1, const Vector2d & point2, const Line2d & line,
                         Vector2d o[2], double r[2] );

Программа circlePLL строит окружности по одной точке и двум прямым. К-во найденных окружностей может быть от 0 до 2. При этом находятся центры o и радиусы r:

unsigned int circlePLL ( const Vector2d & point, const Line2d & line1, const Line2d & Line2d,
                         Vector2d o[2], double r[2] );

Функции circleLLL строят окружность по трём прямым. При этом находится центр o и радиус r или окружность в виде типа Circle2d:

bool circleLLL ( const Line2d & line0, const Line2d & line1, const Line2d & Line2d,
                 Vector2d & o, double & r );

Def<Circle2d> circleLLL ( const Line2d & line0, const Line2d & line1, const Line2d & line2 );

Во всех программах, где есть прямые, окружности строятся в отрицательных полуплоскостях. Если это сделать невозможно, то окружность не строится.

Описание шаблона классов Def смотрите здесь.
Описание класса Vector2d смотрите в разделе Вектора на плоскости.
Описание классов Line2d и Circle2d смотрите в разделе Фигуры на плоскости.
Исходники алгоритмов находятся в файле func2d.cpp.

Наверх