Построение сферы

Две функции getSphere строят сферу по трём и четырём точкам. При этом находятся центр o и квадрат радиуса q:

bool getSphere ( Vector3d a, Vector3d b, const Vector3d & c, Vector3d & o, double & q );
bool getSphere ( Vector3d a, Vector3d b, Vector3d c, const Vector3d & d, Vector3d & o, double & q );

Функция spherePPPP строит сферу по четырём плоскостям:

Def<Sphere3d> spherePPPP ( const Plane3d & a, const Plane3d & b, const Plane3d & c, const Plane3d & d );

Центр сферы о должен находится в отрицательных полупространствах для всех плоскостей. Если это сделать невозможно, то тогда сфера не строится ( isDef = false ). Нормали плоскостей должны быть единичными.

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

Наверх