Две функции 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 находится здесь.
|