Если многогранник надо аппроксимировать сферой, то можно построить сферу, у которой центр масс и объём будут такие же, как у многогранника: Def<Sphere3d> getSpherePlg ( const Polyhedron & poly ); Если многогранник надо аппроксимировать эллипсоидом, то можно воспользоваться моментами 2-го порядка и построить эллипсоид, у которого центр масс и моменты 2-го порядка будут такие же, как у многогранника: Def<Ellipsoid3d> getEllipsoidPlg ( const Polyhedron & poly ); Если же многогранник надо аппроксимировать параллелепипедом, то также можно воспользоваться моментами 2-го порядка и построить параллелепипед, у которого центр масс и моменты 2-го порядка будут такие же, как у многогранника: Def<Cuboid3d> getCuboid ( const Polyhedron & poly ); Описание класса Polyhedron находится здесь.
Примеры использования всех этих функций можно посмотреть в приложении DEMO. Исходники находятся в approx3d.cpp Наверх |