Files
Extern/C3d/Include/op_polymesh_parameter.h
T
SaraP acc582883a Extern :
- C3d aggiornamento librerie ( 118002).
2024-07-22 08:33:27 +02:00

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