18#ifndef itkSymmetricSecondRankTensor_h
19#define itkSymmetricSecondRankTensor_h
22#ifdef SymmetricSecondRankTensor
23# undef SymmetricSecondRankTensor
74template <
typename TComponent,
unsigned int VDimension = 3>
83 static constexpr unsigned int Dimension = VDimension;
107#ifdef ITK_FUTURE_LEGACY_REMOVE
117 template <
typename TCoordinateB>
130 template <
typename TCoordinateB>
222 template <
typename TMatrixValueType>
225 template <
typename TMatrixValueType>
227 Rotate(
const vnl_matrix_fixed<TMatrixValueType, VDimension, VDimension> & m)
const
231 template <
typename TMatrixValueType>
233 Rotate(
const vnl_matrix<TMatrixValueType> & m)
const
255template <
typename TComponent,
unsigned int VDimension>
259template <
typename TComponent,
unsigned int VDimension>
273#ifndef ITK_MANUAL_INSTANTIATION
274# include "itkSymmetricSecondRankTensor.hxx"
FixedArray & operator=(const FixedArray< TFixedArrayValueType, VLength > &r)
ITK_GCC_PRAGMA_PUSH ITK_GCC_SUPPRESS_Warray_bounds constexpr reference operator[](unsigned int index)
void Fill(const ValueType &)
A templated class holding a M x N size Matrix.
Represent a symmetric tensor of second rank.
void ComputeEigenAnalysis(EigenValuesArrayType &eigenValues, EigenVectorsMatrixType &eigenVectors) const
const Self & operator*=(const RealValueType &r)
static unsigned int GetNumberOfComponents()
Self operator/(const RealValueType &r) const
static constexpr unsigned int InternalDimension
SymmetricSecondRankTensor()=default
MatrixType PostMultiply(const MatrixType &m) const
Self operator*(const RealValueType &r) const
typename NumericTraits< ValueType >::RealType RealValueType
Self & operator=(const SymmetricSecondRankTensor< TCoordinateB, VDimension > &pa)
Self Rotate(const vnl_matrix< TMatrixValueType > &m) const
SymmetricSecondRankTensor(const ComponentType &r)
Self & operator=(const ComponentArrayType r)
Self operator+(const Self &r) const
SymmetricSecondRankTensor(const ComponentArrayType r)
SymmetricSecondRankTensor(const SymmetricSecondRankTensor< TCoordinateB, VDimension > &pa)
Self operator-(const Self &r) const
ComponentType[Self::InternalDimension] ComponentArrayType
FixedArray< TComponent, VDimension > EigenValuesArrayType
Matrix< TComponent, VDimension, VDimension > EigenVectorsMatrixType
AccumulateValueType GetTrace() const
FixedArray< TComponent, Self::InternalDimension > BaseArray
Self Rotate(const Matrix< TMatrixValueType, VDimension, VDimension > &m) const
Self & operator=(const ComponentType &r)
FixedArray< TComponent, VDimension *(VDimension+1)/2 > Superclass
SymmetricEigenAnalysisFixedDimension< Dimension, MatrixType, EigenValuesArrayType, EigenVectorsMatrixType > SymmetricEigenAnalysisType
MatrixType PreMultiply(const MatrixType &m) const
ComponentType GetNthComponent(int c) const
const Self & operator+=(const Self &r)
SymmetricSecondRankTensor Self
void ComputeEigenValues(EigenValuesArrayType &eigenValues) const
const Self & operator-=(const Self &r)
Self Rotate(const vnl_matrix_fixed< TMatrixValueType, VDimension, VDimension > &m) const
const ValueType & operator()(unsigned int row, unsigned int col) const
typename NumericTraits< ValueType >::RealType AccumulateValueType
static constexpr unsigned int Dimension
const Self & operator/=(const RealValueType &r)
Matrix< TComponent, VDimension, VDimension > MatrixType
void SetNthComponent(int c, const ComponentType &v)
ValueType & operator()(unsigned int row, unsigned int col)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
void swap(Array< T > &a, Array< T > &b) noexcept
std::istream & operator>>(std::istream &is, Point< T, VPointDimension > &vct)
ITKCommon_EXPORT std::ostream & operator<<(std::ostream &out, typename AnatomicalOrientation::CoordinateEnum value)
std::istream InputStreamType
std::ostream OutputStreamType