//////////////////////////////////////////////////////////////////////////////// /** \file \brief \ru Параметры операций над полигональными сетками с топологией. \en Parameters of operations on the polygonal meshes with topology. \~ */ //////////////////////////////////////////////////////////////////////////////// #ifndef __OP_POLYMESH_PARAMETERS_H #define __OP_POLYMESH_PARAMETERS_H #include //------------------------------------------------------------------------------ /** \brief \ru Параметры операции расчета кривизн полигональной сетки. \en Parameters for mesh curvature calculation. \~ \details \ru Параметры операции расчета кривизн полигональной сетки. Возможны два метода - с помощью дискретного дифференциального оператора, и с помощью вписывания полиномиальной поверхности в окрестность вершины. Количество соседей для второго метода должно быть в пределах от 1 до 10. \en Parameters for mesh curvature calculation. There are two methods are possible - by discrete differential operator and by polynomial surface fitting. Number of neighbors for second method must be in the range from 1 to 10. \~ \ingroup Polygonal_Objects */ // --- class MATH_CLASS MbMeshCurvatureParams { public: //------------------------------------------------------------------------------ /** \brief \ru Перечисление методов расчета кривизн полигональной сетки. */ // --- enum class MethodCalcCurvatures { byDiscrDiffOperators, ///< \ru Дискретный дифференциальный оператор. \en Discrete differential operator. byApproxPolynom ///< \ru Аппроксимация полиномиальной поверхностью. \en Polynomial surface fitting. }; private: MethodCalcCurvatures _method; ///< \ru Метод расчета. \en Calculation method. size_t _nNeighborRing; ///< \ru Количество соседей для аппроксимации поверхностью. \en Number of neighbors for surface fitting. public: /// \ru Конструктор. \en Constructor. MbMeshCurvatureParams() : _method ( MethodCalcCurvatures::byDiscrDiffOperators ) , _nNeighborRing( 0 ) {} /// \ru Деструктор. \en Destructor. ~MbMeshCurvatureParams() {} /// \ru Инициализировать метод дискретного оператора. \en Initialize discrete operator method. void InitOperatorMethod() { _method = MethodCalcCurvatures::byDiscrDiffOperators; _nNeighborRing = 0; } /// \ru Инициализировать метод полиномиальной поверхности. \en Initialize polynomial surface method. void InitPolynomMethod( size_t nRing ) { _method = MethodCalcCurvatures::byApproxPolynom; _nNeighborRing = nRing; } ///< \ru Получить способ вычисления. \en Get calculation method. MethodCalcCurvatures GetMethod() const { return _method; } ///< \ru Получить количество соседей. \en Get number of neighbors. size_t GetRingsNumber() const { return _nNeighborRing; } OBVIOUS_PRIVATE_COPY( MbMeshCurvatureParams ) }; #endif // __OP_POLYMESH_PARAMETERS_H