acc582883a
- C3d aggiornamento librerie ( 118002).
75 lines
3.7 KiB
C++
75 lines
3.7 KiB
C++
////////////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
\file
|
|
\brief \ru Параметры операций над полигональными сетками с топологией.
|
|
\en Parameters of operations on the polygonal meshes with topology. \~
|
|
|
|
*/
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __OP_POLYMESH_PARAMETERS_H
|
|
#define __OP_POLYMESH_PARAMETERS_H
|
|
|
|
#include <math_define.h>
|
|
|
|
//------------------------------------------------------------------------------
|
|
/** \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
|