18 #ifndef itkSymmetricSecondRankTensor_h
19 #define itkSymmetricSecondRankTensor_h
22 #ifdef SymmetricSecondRankTensor
23 #undef SymmetricSecondRankTensor
74 template<
typename TComponent,
unsigned int NDimension = 3 >
76 FixedArray< TComponent, NDimension *( NDimension + 1 ) / 2 >
84 itkStaticConstMacro(
Dimension,
unsigned int, NDimension);
85 itkStaticConstMacro(
InternalDimension,
unsigned int, ( NDimension * ( NDimension + 1 ) / 2 ) );
114 template<
typename TCoordRepB >
124 template<
typename TCoordRepB >
191 template<
typename TMatrixValueType>
193 template<
typename TMatrixValueType>
194 Self Rotate(
const vnl_matrix_fixed<TMatrixValueType, NDimension, NDimension> & m)
const
198 template<
typename TMatrixValueType>
219 template<
typename TComponent,
unsigned int NDimension >
223 template<
typename TComponent,
unsigned int NDimension >
230 #ifndef ITK_MANUAL_INSTANTIATION
231 #include "itkSymmetricSecondRankTensor.hxx"
Self operator-(const Self &vec) const
Self operator+(const Self &vec) const
A templated class holding a M x N size Matrix.
Self & operator=(const SymmetricSecondRankTensor< TCoordRepB, NDimension > &pa)
ValueType & operator()(unsigned int row, unsigned int col)
Find Eigen values of a real 2D symmetric matrix. It serves as a thread-safe alternative to the class:...
FixedArray< TComponent, NDimension > EigenValuesArrayType
Self operator/(const RealValueType &scalar) const
std::istream InputStreamType
Self Rotate(const Matrix< TMatrixValueType, NDimension, NDimension > &m) const
Self operator*(const RealValueType &scalar) const
reference operator[](short index)
SymmetricSecondRankTensor Self
Represent a symmetric tensor of second rank.
std::istream & operator>>(std::istream &is, Point< T, NPointDimension > &v)
SymmetricSecondRankTensor(const ComponentArrayType r)
NumericTraits< ValueType >::RealType AccumulateValueType
void SetNthComponent(int c, const ComponentType &v)
const Self & operator/=(const RealValueType &scalar)
std::ostream & operator<<(std::ostream &os, const Array< TValue > &arr)
const Self & operator+=(const Self &vec)
std::ostream OutputStreamType
AccumulateValueType GetTrace() const
void Fill(const ValueType &)
Simulate a standard C array with copy semnatics.
SymmetricSecondRankTensor(const ComponentType &r)
static const unsigned int InternalDimension
ComponentType GetNthComponent(int c) const
FixedArray< TComponent, itkGetStaticConstMacro(InternalDimension) > BaseArray
static const unsigned int Dimension
SymmetricSecondRankTensor()
void ComputeEigenValues(EigenValuesArrayType &eigenValues) const
MatrixType PreMultiply(const MatrixType &m) const
Self Rotate(const vnl_matrix_fixed< TMatrixValueType, NDimension, NDimension > &m) const
Matrix< TComponent, NDimension, NDimension > EigenVectorsMatrixType
Superclass::ValueType ValueType
FixedArray & operator=(const FixedArray< TFixedArrayValueType, VLength > &r)
ComponentType ComponentArrayType[itkGetStaticConstMacro(InternalDimension)]
NumericTraits< ValueType >::RealType RealValueType
static unsigned int GetNumberOfComponents()
const Self & operator-=(const Self &vec)
const Self & operator*=(const RealValueType &scalar)
Matrix< TComponent, NDimension, NDimension > MatrixType
void ComputeEigenAnalysis(EigenValuesArrayType &eigenValues, EigenVectorsMatrixType &eigenVectors) const
SymmetricEigenAnalysis< MatrixType, EigenValuesArrayType, EigenVectorsMatrixType > SymmetricEigenAnalysisType
MatrixType PostMultiply(const MatrixType &m) const
SymmetricSecondRankTensor(const SymmetricSecondRankTensor< TCoordRepB, NDimension > &pa)
Self Rotate(const vnl_matrix< TMatrixValueType > &m) const