Моменты в пространстве можно вычислять относительно точек, прямых или плоскостей.
В данном разделе будут рассматриваться моменты относительно плоскостей.
Моментом первого порядка множества точек называется сумма произведений расстояний точек до плоскости на массу точки.
Расстояние берётся со знаком ( положительные и отрицательные полупространства ). В том случае, когда знак не учитывается
момент называется абсолютным. Если множество точек непрерывно, то сумма заменяется на интегрирование.
typedef unsigned int nat; Def<Vector3d> centerOfMass ( CArrRef<Vector3d> point ); // Центр масс набора точек Def<Vector3d> centerOfMass ( CArrRef<Vector3d> point, CArrRef<double> mass ); // то же с весами Def<Vector3d> centerOfMass ( CArrRef<Segment3d> segm ); // Центр масс набора отрезков Def<Vector3d> centerOfMass ( nat i, const Polyhedron & poly ); // Центр масс i-той грани Def<Vector3d> centerOfMass ( const Facet & facet, CArrRef<Vector3d> vert ); // Центр масс грани Def<Vector3d> centerOfMass ( const Polyhedron & poly ); // Центр масс многогранника У всех функций результат не вычисляется в случае, когда сумма масс равна нулю. Моментом второго порядка множества точек называется сумма произведений квадратов расстояний точек до плоскости на массу точки: double momentum2pnt ( CArrRef<Vector3d> point, const Plane3d & plane ); double momentum2pnt ( CArrRef<Vector3d> point, CArrRef<double> mass, const Plane3d & plane ); double momentum2sgm ( CArrRef<Segment3d> segm, const Plane3d & plane ); double momentum2fct ( nat i, const Polyhedron & poly, const Plane3d & plane ); double momentum2plh ( const Polyhedron & poly, const Plane & plane );Следующие функции вычисляют основные моменты второго порядка и нормали плоскостей проходящих через центр масс, которые всегда взаимно-ортогональны: struct Mom3d { double minMom, midMom, maxMom; Vector3d minNorm, midNorm, maxNorm; Vector3d o; }; Def<Mom3d> momentum2pnt ( CArrRef<Vector3d> point ); Def<Mom3d> momentum2pnt ( CArrRef<Vector3d> point, CArrRef<double> mass ); Def<Mom3d> momentum2sgm ( CArrRef<Segment3d> segm ); Def<Mom3d> momentum2fct ( nat i, const Polyhedron & poly ); Def<Mom3d> momentum2plh ( const Polyhedron & poly ); Выходные параметры для всех функций: o - это центр масс, minMom ( минимальный момент 2-го порядка ), minNorm ( направление нормали минимального момента ), midMom ( средний момент 2-го порядка ), midNorm ( направление нормали среднего момента ), maxMom ( максимальный момент 2-го порядка ), maxNorm ( направление нормали максимального момента ). Функция getEllipsoid вычисляет параметры эллипсоида по моментам 2-го порядка:Def<Ellipsoid3d> getEllipsoid ( const Def<Mom3d> & mom );Функция getCuboid вычисляет параметры параллелепипеда по моментам 2-го порядка: Def<Cuboid3d> getCuboid ( const Def<Mom3d> & mom ); Описание классов Segment3d, Plane3d, Ellipsoid3d и Cuboid3d находится здесь.
|