2067718d64
- C3d primo salvataggio.
166 lines
9.1 KiB
C++
166 lines
9.1 KiB
C++
////////////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
\file
|
|
\brief \ru Построение триангуляции тела.
|
|
\en Construction of solid triangulation. \~
|
|
|
|
*/
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __MIP_SOLID_AREA_VOLUME_H
|
|
#define __MIP_SOLID_AREA_VOLUME_H
|
|
|
|
|
|
#include <mesh.h>
|
|
|
|
|
|
class MATH_CLASS MbFace;
|
|
class MATH_CLASS MbSurface;
|
|
class MATH_CLASS MbFaceShell;
|
|
class MATH_CLASS MbSolid;
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Определить площадь.
|
|
\en Determine area. \~
|
|
\details \ru Определить площадь поверхности.
|
|
\en Determine surface area. \~
|
|
\param[in] surface - \ru Поверхность.
|
|
\en The surface. \~
|
|
\param[in] angle - \ru Ограничение углового отклонения при аппроксимации оболочки треугольными пластинами.
|
|
\en Bounding of angular deviation during shell approximation by triangular plates. \~
|
|
\return \ru Площадь поверхности.
|
|
\en Surface area. \~
|
|
\ingroup Inertia_Computation
|
|
*/
|
|
// ---
|
|
MATH_FUNC (double) CalculateArea( const MbSurface & surface,
|
|
double angle = Math::deviateSag );
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Определить объем.
|
|
\en Determine volume. \~
|
|
\details \ru Определить объем тела.
|
|
\en Determine volume of solid. \~
|
|
\param[in] solid - \ru Тело.
|
|
\en A solid. \~
|
|
\param[in] angle - \ru Ограничение углового отклонения при аппроксимации оболочки треугольными пластинами.
|
|
\en Bounding of angular deviation during shell approximation by triangular plates. \~
|
|
\return \ru Значение объема тела.
|
|
\en Value of solid volume. \~
|
|
\ingroup Inertia_Computation
|
|
*/
|
|
// ---
|
|
MATH_FUNC (double) CalculateVolume( const MbSolid &solid,
|
|
double angle );
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Определить объем.
|
|
\en Determine volume. \~
|
|
\details \ru Определить объем полигонального объекта.
|
|
\en Determine volume of polygonal object. \~
|
|
\param[in] mesh - \ru Пполигональный объект.
|
|
\en A polygonal object. \~
|
|
\return \ru Значение объема полигонального объекта.
|
|
\en Value of polygonal object volume. \~
|
|
\ingroup Inertia_Computation
|
|
*/
|
|
// ---
|
|
MATH_FUNC (double) CalculateVolume( const MbMesh & mesh );
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Определить площадь и центр масс.
|
|
\en Determine area and center of mass. \~
|
|
\details \ru Определить площадь поверхности оболочки и центр масс этой поверхности. \n
|
|
В общем случае центр масс объёма объекта не совпадает с центром масс его поверхности. \n
|
|
\en Determine area of shell surface and its center of mass. \n
|
|
Center of mass of volumetric object doesn't coincide with center of mass of its surface. \n \~
|
|
\param[in] shell - \ru Оболочка.
|
|
\en A shell. \~
|
|
\param[in] angle - \ru Ограничение углового отклонения при аппроксимации оболочки треугольными пластинами.
|
|
\en Bounding of angular deviation during shell approximation by triangular plates. \~
|
|
\param[out] centre - \ru Центр масс площади оболочки.
|
|
\en Center of mass of shell area. \~
|
|
\result \ru Площадь поверхности оболочки.
|
|
\en Area of shell surface. \~
|
|
\ingroup Inertia_Computation
|
|
*/
|
|
// ---
|
|
MATH_FUNC (double) CalculateAreaCentre( const MbFaceShell & shell,
|
|
double angle,
|
|
MbCartPoint3D & centre );
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Определить площадь и центр масс.
|
|
\en Determine area and center of mass. \~
|
|
\details \ru Определить площадь поверхности грани и центр масс этой поверхности. \n
|
|
В общем случае центр масс объёма объекта не совпадает с центром масс его пловерхности. \n
|
|
\en Determine area of face surface and its center of mass. \n
|
|
Center of mass of volumetric object doesn't coincide with center of mass of its surface. \n \~
|
|
\param[in] face - \ru Грань.
|
|
\en A face. \~
|
|
\param[in] angle - \ru Ограничение углового отклонения при аппроксимации грани треугольными пластинами.
|
|
\en Bounding of angular deviation during face approximation by triangular plates. \~
|
|
\param[in] byOuter - \ru При true расчет выполняется только по внешней границе без учёта внутренних вырезов грани.
|
|
\en If true calculation is performed only on external boundary without taking internal cuts of face into account. \~
|
|
\param[in] version - \ru Версия, по умолчанию - последняя.
|
|
\en Version, last by default. \~
|
|
\param[out] centre - \ru Центр масс площади грани.
|
|
\en Center of mass of face area. \~
|
|
\result \ru Площадь поверхности грани.
|
|
\en Face surface area. \~
|
|
\ingroup Inertia_Computation
|
|
*/
|
|
// ---
|
|
MATH_FUNC (double) CalculateAreaCentre( const MbFace & face,
|
|
double angle,
|
|
bool byOuter,
|
|
VERSION version,
|
|
MbCartPoint3D & centre );
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Определение площади поверхности граней.
|
|
\en Determination of faces area. \~
|
|
\details \ru Определение площади поверхности граней.
|
|
Определение выполняется методом вычисления масс-центровочных характеристик набора граней.
|
|
\en Determination of area of set of faces. \~
|
|
\note \ru В многопоточном режиме выполняется параллельно.
|
|
\en In multithreaded mode m_Items runs in parallel. \~
|
|
\param[in] faces - \ru Набор граней.
|
|
\en A set of faces. \~
|
|
\param[in] deviateAngle - \ru Параметр управления точностью расчёта - угловое отклонение нормали поверхности или касательных кривой на участке численного интегрирования.
|
|
\en Tolerance - the angular deviation of surface or curve in the neighboring points on the region of numerical integration. \~
|
|
\return \ru Площадь граней.
|
|
\en Faces area. \~
|
|
\ingroup Inertia_Computation
|
|
*/
|
|
// ---
|
|
MATH_FUNC (double) CalculateArea( const RPArray<MbFace> & faces,
|
|
double deviateAngle ); // (0.35 - 0.01)
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \brief \ru Определение площади.
|
|
\en Determination of area. \~
|
|
\details \ru Определение площади поверхности грани.
|
|
\en Determination of face surface area. \~
|
|
\param[in] face - \ru Грань.
|
|
\en A face. \~
|
|
\param[in] deviateAngle - \ru Параметр управления точностью расчёта - угловое отклонение нормали поверхности или касательных кривой на участке численного интегрирования.
|
|
\en Tolerance - the angular deviation of surface or curve in the neighboring points on the region of numerical integration. \~
|
|
\return \ru Площадь грани.
|
|
\en Face area. \~
|
|
\ingroup Inertia_Computation
|
|
*/
|
|
// ---
|
|
MATH_FUNC (double) CalculateArea( const MbFace & face,
|
|
double deviateAngle ); // (0.35 - 0.01)
|
|
|
|
|
|
#endif // __MIP_SOLID_AREA_VOLUME_H
|