// This file is generated by WOK (CPPExt). // Please do not edit this file; modify original file instead. // The copyright and license terms as defined for the original file apply to // this header file considered to be the "object code" form of the original source. #ifndef _gp_Mat_HeaderFile #define _gp_Mat_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _Standard_Storable_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Standard_PrimitiveTypes_HeaderFile #include #endif class Standard_ConstructionError; class Standard_OutOfRange; class gp_XYZ; class gp_Trsf; class gp_GTrsf; Standard_EXPORT const Handle(Standard_Type)& STANDARD_TYPE(gp_Mat); //! Describes a three column, three row matrix. This sort of
//! object is used in various vectorial or matrix computations.
class gp_Mat { public: void* operator new(size_t,void* anAddress) { return anAddress; } void* operator new(size_t size) { return Standard::Allocate(size); } void operator delete(void *anAddress) { if (anAddress) Standard::Free((Standard_Address&)anAddress); } //! creates a matrix with null coefficients.
gp_Mat(); gp_Mat(const Standard_Real a11,const Standard_Real a12,const Standard_Real a13,const Standard_Real a21,const Standard_Real a22,const Standard_Real a23,const Standard_Real a31,const Standard_Real a32,const Standard_Real a33); //! Creates a matrix.
//! Col1, Col2, Col3 are the 3 columns of the matrix.
Standard_EXPORT gp_Mat(const gp_XYZ& Col1,const gp_XYZ& Col2,const gp_XYZ& Col3); //! Assigns the three coordinates of Value to the column of index
//! Col of this matrix.
//! Raises OutOfRange if Col < 1 or Col > 3.
Standard_EXPORT void SetCol(const Standard_Integer Col,const gp_XYZ& Value) ; //! Assigns the number triples Col1, Col2, Col3 to the three
//! columns of this matrix.
Standard_EXPORT void SetCols(const gp_XYZ& Col1,const gp_XYZ& Col2,const gp_XYZ& Col3) ; //! Modifies the matrix M so that applying it to any number
//! triple (X, Y, Z) produces the same result as the cross
//! product of Ref and the number triple (X, Y, Z):
//! i.e.: M * {X,Y,Z}t = Ref.Cross({X, Y ,Z})
//! this matrix is anti symmetric. To apply this matrix to the
//! triplet {XYZ} is the same as to do the cross product between the
//! triplet Ref and the triplet {XYZ}.
//! Note: this matrix is anti-symmetric.
Standard_EXPORT void SetCross(const gp_XYZ& Ref) ; //! Modifies the main diagonal of the matrix.
//! .Value (1, 1) = X1
//! .Value (2, 2) = X2
//! .Value (3, 3) = X3
//! The other coefficients of the matrix are not modified.
void SetDiagonal(const Standard_Real X1,const Standard_Real X2,const Standard_Real X3) ; //! Modifies this matrix so that applying it to any number
//! triple (X, Y, Z) produces the same result as the scalar
//! product of Ref and the number triple (X, Y, Z):
//! this * (X,Y,Z) = Ref.(X,Y,Z)
//! Note: this matrix is symmetric.
Standard_EXPORT void SetDot(const gp_XYZ& Ref) ; //! Modifies this matrix so that it represents the Identity matrix.
void SetIdentity() ; //! Modifies this matrix so that it represents a rotation. Ang is the angular value in
//! radians and the XYZ axis gives the direction of the
//! rotation.
//! Raises ConstructionError if XYZ.Modulus() <= Resolution()
Standard_EXPORT void SetRotation(const gp_XYZ& Axis,const Standard_Real Ang) ; //! Assigns the three coordinates of Value to the row of index
//! Row of this matrix. Raises OutOfRange if Row < 1 or Row > 3.
Standard_EXPORT void SetRow(const Standard_Integer Row,const gp_XYZ& Value) ; //! Assigns the number triples Row1, Row2, Row3 to the three
//! rows of this matrix.
Standard_EXPORT void SetRows(const gp_XYZ& Row1,const gp_XYZ& Row2,const gp_XYZ& Row3) ; //! Modifies the the matrix so that it represents
//! a scaling transformation, where S is the scale factor. :
//! | S 0.0 0.0 |
//! = | 0.0 S 0.0 |
//! | 0.0 0.0 S |
void SetScale(const Standard_Real S) ; //! Assigns to the coefficient of row Row, column Col of this matrix.
//! Raises OutOfRange if Row < 1 or Row > 3 or Col < 1 or Col > 3
void SetValue(const Standard_Integer Row,const Standard_Integer Col,const Standard_Real Value) ; //! Returns the column of Col index.
//! Raises OutOfRange if Col < 1 or Col > 3
Standard_EXPORT gp_XYZ Column(const Standard_Integer Col) const; //! Computes the determinant of the matrix.
Standard_Real Determinant() const; //! Returns the main diagonal of the matrix.
Standard_EXPORT gp_XYZ Diagonal() const; //! returns the row of Row index.
//! Raises OutOfRange if Row < 1 or Row > 3
Standard_EXPORT gp_XYZ Row(const Standard_Integer Row) const; //! Returns the coefficient of range (Row, Col)
//! Raises OutOfRange if Row < 1 or Row > 3 or Col < 1 or Col > 3
const Standard_Real& Value(const Standard_Integer Row,const Standard_Integer Col) const; const Standard_Real& operator()(const Standard_Integer Row,const Standard_Integer Col) const { return Value(Row,Col); } //! Returns the coefficient of range (Row, Col)
//! Raises OutOfRange if Row < 1 or Row > 3 or Col < 1 or Col > 3
Standard_Real& ChangeValue(const Standard_Integer Row,const Standard_Integer Col) ; Standard_Real& operator()(const Standard_Integer Row,const Standard_Integer Col) { return ChangeValue(Row,Col); } //! The Gauss LU decomposition is used to invert the matrix
//! (see Math package) so the matrix is considered as singular if
//! the largest pivot found is lower or equal to Resolution from gp.
Standard_Boolean IsSingular() const; void Add(const gp_Mat& Other) ; void operator +=(const gp_Mat& Other) { Add(Other); } //! Computes the sum of this matrix and
//! the matrix Other for each coefficient of the matrix :
//! .Coef(i,j) + .Coef(i,j)
gp_Mat Added(const gp_Mat& Other) const; gp_Mat operator +(const gp_Mat& Other) const { return Added(Other); } void Divide(const Standard_Real Scalar) ; void operator /=(const Standard_Real Scalar) { Divide(Scalar); } //! Divides all the coefficients of the matrix by Scalar
gp_Mat Divided(const Standard_Real Scalar) const; gp_Mat operator /(const Standard_Real Scalar) const { return Divided(Scalar); } Standard_EXPORT void Invert() ; //! Inverses the matrix and raises if the matrix is singular.
//! - Invert assigns the result to this matrix, while
//! - Inverted creates a new one.
//! Warning
//! The Gauss LU decomposition is used to invert the matrix.
//! Consequently, the matrix is considered as singular if the
//! largest pivot found is less than or equal to gp::Resolution().
//! Exceptions
//! Standard_ConstructionError if this matrix is singular,
//! and therefore cannot be inverted.
Standard_EXPORT gp_Mat Inverted() const; //! Computes the product of two matrices *
gp_Mat Multiplied(const gp_Mat& Other) const; gp_Mat operator *(const gp_Mat& Other) const { return Multiplied(Other); } //! Computes the product of two matrices = * .
void Multiply(const gp_Mat& Other) ; void operator *=(const gp_Mat& Other) { Multiply(Other); } void PreMultiply(const gp_Mat& Other) ; gp_Mat Multiplied(const Standard_Real Scalar) const; gp_Mat operator *(const Standard_Real Scalar) const { return Multiplied(Scalar); } //! Multiplies all the coefficients of the matrix by Scalar
void Multiply(const Standard_Real Scalar) ; void operator *=(const Standard_Real Scalar) { Multiply(Scalar); } Standard_EXPORT void Power(const Standard_Integer N) ; //! Computes = * * .......* , N time.
//! if N = 0 = Identity
//! if N < 0 = .Invert() *...........* .Invert().
//! If N < 0 an exception will be raised if the matrix is not
//! inversible
gp_Mat Powered(const Standard_Integer N) const; void Subtract(const gp_Mat& Other) ; void operator -=(const gp_Mat& Other) { Subtract(Other); } //! cOmputes for each coefficient of the matrix :
//! .Coef(i,j) - .Coef(i,j)
gp_Mat Subtracted(const gp_Mat& Other) const; gp_Mat operator -(const gp_Mat& Other) const { return Subtracted(Other); } void Transpose() ; //! Transposes the matrix. A(j, i) -> A (i, j)
gp_Mat Transposed() const; Standard_Real& _CSFDB_Getgp_Matmatrix(const Standard_Integer i1,const Standard_Integer i2) { return matrix[i1][i2]; } friend class gp_XYZ; friend class gp_Trsf; friend class gp_GTrsf; protected: private: Standard_Real matrix[3][3]; }; #include // other Inline functions and methods (like "C++: function call" methods) #endif