Аппроксимация многогранника

Если многогранник надо аппроксимировать сферой, то можно построить сферу, у которой центр масс и объём будут такие же, как у многогранника:

Def<Sphere3d> getSpherePlg ( const Polyhedron & poly );

Если многогранник надо аппроксимировать эллипсоидом, то можно воспользоваться моментами 2-го порядка и построить эллипсоид, у которого центр масс и моменты 2-го порядка будут такие же, как у многогранника:

Def<Ellipsoid3d> getEllipsoidPlg ( const Polyhedron & poly );

Если же многогранник надо аппроксимировать параллелепипедом, то также можно воспользоваться моментами 2-го порядка и построить параллелепипед, у которого центр масс и моменты 2-го порядка будут такие же, как у многогранника:

Def<Parallelepiped3d> getParallelepipedPlg ( const Polyhedron & poly );

Описание класса Polyhedron находится здесь.
Описание классов Sphere3d, Ellipsoid3d и Parallelepiped3d находится здесь.
Описание шаблона классов Def находится здесь.

Примеры использования всех этих функций можно посмотреть в приложении DEMO.

Исходники находятся в approx3d.cpp

Наверх