This document is for a version of USD that is under development. See this page for the current release.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
GfMatrix2d Class Reference

Stores a 2x2 matrix of double elements. More...

#include <matrix2d.h>

Public Types

typedef double ScalarType
 

Public Member Functions

 GfMatrix2d ()=default
 Default constructor. Leaves the matrix component values undefined.
 
 GfMatrix2d (double m00, double m01, double m10, double m11)
 Constructor.
 
 GfMatrix2d (const double m[2][2])
 Constructor.
 
 GfMatrix2d (double s)
 Constructor.
 
 GfMatrix2d (int s)
 This explicit constructor initializes the matrix to s times the identity matrix.
 
 GfMatrix2d (const GfVec2d &v)
 Constructor.
 
GF_API GfMatrix2d (const std::vector< std::vector< double > > &v)
 Constructor.
 
GF_API GfMatrix2d (const std::vector< std::vector< float > > &v)
 Constructor.
 
GF_API GfMatrix2d (const class GfMatrix2f &m)
 This explicit constructor converts a "float" matrix to a "double" matrix.
 
void SetRow (int i, const GfVec2d &v)
 Sets a row of the matrix from a Vec2.
 
void SetColumn (int i, const GfVec2d &v)
 Sets a column of the matrix from a Vec2.
 
GfVec2d GetRow (int i) const
 Gets a row of the matrix as a Vec2.
 
GfVec2d GetColumn (int i) const
 Gets a column of the matrix as a Vec2.
 
GfMatrix2dSet (double m00, double m01, double m10, double m11)
 Sets the matrix from 4 independent double values, specified in row-major order.
 
GfMatrix2dSet (const double m[2][2])
 Sets the matrix from a 2x2 array of double values, specified in row-major order.
 
GfMatrix2dSetIdentity ()
 Sets the matrix to the identity matrix.
 
GfMatrix2dSetZero ()
 Sets the matrix to zero.
 
GF_API GfMatrix2dSetDiagonal (double s)
 Sets the matrix to s times the identity matrix.
 
GF_API GfMatrix2dSetDiagonal (const GfVec2d &)
 Sets the matrix to have diagonal (v[0], v[1]).
 
GF_API double * Get (double m[2][2]) const
 Fills a 2x2 array of double values with the values in the matrix, specified in row-major order.
 
double * data ()
 Returns raw access to components of matrix as an array of double values.
 
const double * data () const
 Returns const raw access to components of matrix as an array of double values.
 
double * GetArray ()
 Returns vector components as an array of double values.
 
const double * GetArray () const
 Returns vector components as a const array of double values.
 
double * operator[] (int i)
 Accesses an indexed row i of the matrix as an array of 2 double values so that standard indexing (such as m[0][1]) works correctly.
 
const double * operator[] (int i) const
 Accesses an indexed row i of the matrix as an array of 2 double values so that standard indexing (such as m[0][1]) works correctly.
 
GF_API bool operator== (const GfMatrix2d &m) const
 Tests for element-wise matrix equality.
 
GF_API bool operator== (const GfMatrix2f &m) const
 Tests for element-wise matrix equality.
 
bool operator!= (const GfMatrix2d &m) const
 Tests for element-wise matrix inequality.
 
bool operator!= (const GfMatrix2f &m) const
 Tests for element-wise matrix inequality.
 
GF_API GfMatrix2d GetTranspose () const
 Returns the transpose of the matrix.
 
GF_API GfMatrix2d GetInverse (double *det=NULL, double eps=0) const
 Returns the inverse of the matrix, or FLT_MAX * SetIdentity() if the matrix is singular.
 
GF_API double GetDeterminant () const
 Returns the determinant of the matrix.
 
GF_API GfMatrix2doperator*= (const GfMatrix2d &m)
 Post-multiplies matrix m into this matrix.
 
GF_API GfMatrix2doperator*= (double)
 Multiplies the matrix by a double.
 
GF_API GfMatrix2doperator+= (const GfMatrix2d &m)
 Adds matrix m to this matrix.
 
GF_API GfMatrix2doperator-= (const GfMatrix2d &m)
 Subtracts matrix m from this matrix.
 

Static Public Attributes

static const size_t numRows = 2
 
static const size_t numColumns = 2
 

Friends

class GfMatrix2f
 
size_t hash_value (GfMatrix2d const &m)
 Hash.
 
GfMatrix2d operator* (const GfMatrix2d &m1, double d)
 Returns the product of a matrix and a double.
 
GfMatrix2d operator* (double d, const GfMatrix2d &m)
 
GF_API friend GfMatrix2d operator- (const GfMatrix2d &m)
 Returns the unary negation of matrix m.
 
GfMatrix2d operator+ (const GfMatrix2d &m1, const GfMatrix2d &m2)
 Adds matrix m2 to m1.
 
GfMatrix2d operator- (const GfMatrix2d &m1, const GfMatrix2d &m2)
 Subtracts matrix m2 from m1.
 
GfMatrix2d operator* (const GfMatrix2d &m1, const GfMatrix2d &m2)
 Multiplies matrix m1 by m2.
 
GfMatrix2d operator/ (const GfMatrix2d &m1, const GfMatrix2d &m2)
 Divides matrix m1 by m2 (that is, m1 * inv(m2)).
 
GfVec2d operator* (const GfMatrix2d &m, const GfVec2d &vec)
 Returns the product of a matrix m and a column vector vec.
 
GfVec2d operator* (const GfVec2d &vec, const GfMatrix2d &m)
 Returns the product of row vector vec and a matrix m.
 

Detailed Description

Stores a 2x2 matrix of double elements.

A basic type.

Matrices are defined to be in row-major order, so matrix[i][j] indexes the element in the i th row and the j th column.

Definition at line 44 of file matrix2d.h.

Member Typedef Documentation

◆ ScalarType

typedef double ScalarType

Definition at line 47 of file matrix2d.h.

Constructor & Destructor Documentation

◆ GfMatrix2d() [1/9]

GfMatrix2d ( )
default

Default constructor. Leaves the matrix component values undefined.

◆ GfMatrix2d() [2/9]

GfMatrix2d ( double  m00,
double  m01,
double  m10,
double  m11 
)
inline

Constructor.

Initializes the matrix from 4 independent double values, specified in row-major order. For example, parameter m10 specifies the value in row 1 and column 0.

Definition at line 58 of file matrix2d.h.

◆ GfMatrix2d() [3/9]

GfMatrix2d ( const double  m[2][2])
inline

Constructor.

Initializes the matrix from a 2x2 array of double values, specified in row-major order.

Definition at line 66 of file matrix2d.h.

◆ GfMatrix2d() [4/9]

GfMatrix2d ( double  s)
inlineexplicit

Constructor.

Explicitly initializes the matrix to s times the identity matrix.

Definition at line 72 of file matrix2d.h.

◆ GfMatrix2d() [5/9]

GfMatrix2d ( int  s)
inlineexplicit

This explicit constructor initializes the matrix to s times the identity matrix.

Definition at line 78 of file matrix2d.h.

◆ GfMatrix2d() [6/9]

GfMatrix2d ( const GfVec2d v)
inlineexplicit

Constructor.

Explicitly initializes the matrix to diagonal form, with the i th element on the diagonal set to v[i].

Definition at line 84 of file matrix2d.h.

◆ GfMatrix2d() [7/9]

GF_API GfMatrix2d ( const std::vector< std::vector< double > > &  v)
explicit

Constructor.

Initialize the matrix from a vector of vectors of double. The vector is expected to be 2x2. If it is too big, only the first 2 rows and/or columns will be used. If it is too small, uninitialized elements will be filled in with the corresponding elements from an identity matrix.

◆ GfMatrix2d() [8/9]

GF_API GfMatrix2d ( const std::vector< std::vector< float > > &  v)
explicit

Constructor.

Initialize the matrix from a vector of vectors of float. The vector is expected to be 2x2. If it is too big, only the first 2 rows and/or columns will be used. If it is too small, uninitialized elements will be filled in with the corresponding elements from an identity matrix.

◆ GfMatrix2d() [9/9]

GF_API GfMatrix2d ( const class GfMatrix2f m)
explicit

This explicit constructor converts a "float" matrix to a "double" matrix.

Member Function Documentation

◆ data() [1/2]

double * data ( )
inline

Returns raw access to components of matrix as an array of double values.

Components are in row-major order.

Definition at line 177 of file matrix2d.h.

◆ data() [2/2]

const double * data ( ) const
inline

Returns const raw access to components of matrix as an array of double values.

Components are in row-major order.

Definition at line 183 of file matrix2d.h.

◆ Get()

GF_API double * Get ( double  m[2][2]) const

Fills a 2x2 array of double values with the values in the matrix, specified in row-major order.

◆ GetArray() [1/2]

double * GetArray ( )
inline

Returns vector components as an array of double values.

Definition at line 188 of file matrix2d.h.

◆ GetArray() [2/2]

const double * GetArray ( ) const
inline

Returns vector components as a const array of double values.

Definition at line 193 of file matrix2d.h.

◆ GetColumn()

GfVec2d GetColumn ( int  i) const
inline

Gets a column of the matrix as a Vec2.

Definition at line 128 of file matrix2d.h.

◆ GetDeterminant()

GF_API double GetDeterminant ( ) const

Returns the determinant of the matrix.

◆ GetInverse()

GF_API GfMatrix2d GetInverse ( double *  det = NULL,
double  eps = 0 
) const

Returns the inverse of the matrix, or FLT_MAX * SetIdentity() if the matrix is singular.

(FLT_MAX is the largest value a float can have, as defined by the system.) The matrix is considered singular if the determinant is less than or equal to the optional parameter eps. If det is non-null, *det is set to the determinant.

◆ GetRow()

GfVec2d GetRow ( int  i) const
inline

Gets a row of the matrix as a Vec2.

Definition at line 123 of file matrix2d.h.

◆ GetTranspose()

GF_API GfMatrix2d GetTranspose ( ) const

Returns the transpose of the matrix.

◆ operator!=() [1/2]

bool operator!= ( const GfMatrix2d m) const
inline

Tests for element-wise matrix inequality.

All elements must match exactly for matrices to be considered equal.

Definition at line 229 of file matrix2d.h.

◆ operator!=() [2/2]

bool operator!= ( const GfMatrix2f m) const
inline

Tests for element-wise matrix inequality.

All elements must match exactly for matrices to be considered equal.

Definition at line 235 of file matrix2d.h.

◆ operator*=() [1/2]

GF_API GfMatrix2d & operator*= ( const GfMatrix2d m)

Post-multiplies matrix m into this matrix.

◆ operator*=() [2/2]

GF_API GfMatrix2d & operator*= ( double  )

Multiplies the matrix by a double.

◆ operator+=()

GF_API GfMatrix2d & operator+= ( const GfMatrix2d m)

Adds matrix m to this matrix.

◆ operator-=()

GF_API GfMatrix2d & operator-= ( const GfMatrix2d m)

Subtracts matrix m from this matrix.

◆ operator==() [1/2]

GF_API bool operator== ( const GfMatrix2d m) const

Tests for element-wise matrix equality.

All elements must match exactly for matrices to be considered equal.

◆ operator==() [2/2]

GF_API bool operator== ( const GfMatrix2f m) const

Tests for element-wise matrix equality.

All elements must match exactly for matrices to be considered equal.

◆ operator[]() [1/2]

double * operator[] ( int  i)
inline

Accesses an indexed row i of the matrix as an array of 2 double values so that standard indexing (such as m[0][1]) works correctly.

Definition at line 200 of file matrix2d.h.

◆ operator[]() [2/2]

const double * operator[] ( int  i) const
inline

Accesses an indexed row i of the matrix as an array of 2 double values so that standard indexing (such as m[0][1]) works correctly.

Definition at line 205 of file matrix2d.h.

◆ Set() [1/2]

GfMatrix2d & Set ( const double  m[2][2])
inline

Sets the matrix from a 2x2 array of double values, specified in row-major order.

Definition at line 144 of file matrix2d.h.

◆ Set() [2/2]

GfMatrix2d & Set ( double  m00,
double  m01,
double  m10,
double  m11 
)
inline

Sets the matrix from 4 independent double values, specified in row-major order.

For example, parameter m10 specifies the value in row 1 and column 0.

Definition at line 135 of file matrix2d.h.

◆ SetColumn()

void SetColumn ( int  i,
const GfVec2d v 
)
inline

Sets a column of the matrix from a Vec2.

Definition at line 117 of file matrix2d.h.

◆ SetDiagonal() [1/2]

GF_API GfMatrix2d & SetDiagonal ( const GfVec2d )

Sets the matrix to have diagonal (v[0], v[1]).

◆ SetDiagonal() [2/2]

GF_API GfMatrix2d & SetDiagonal ( double  s)

Sets the matrix to s times the identity matrix.

◆ SetIdentity()

GfMatrix2d & SetIdentity ( )
inline

Sets the matrix to the identity matrix.

Definition at line 153 of file matrix2d.h.

◆ SetRow()

void SetRow ( int  i,
const GfVec2d v 
)
inline

Sets a row of the matrix from a Vec2.

Definition at line 111 of file matrix2d.h.

◆ SetZero()

GfMatrix2d & SetZero ( )
inline

Sets the matrix to zero.

Definition at line 158 of file matrix2d.h.

Friends And Related Function Documentation

◆ GfMatrix2f

friend class GfMatrix2f
friend

Definition at line 338 of file matrix2d.h.

◆ hash_value

size_t hash_value ( GfMatrix2d const &  m)
friend

Hash.

Definition at line 208 of file matrix2d.h.

◆ operator* [1/5]

GfVec2d operator* ( const GfMatrix2d m,
const GfVec2d vec 
)
friend

Returns the product of a matrix m and a column vector vec.

Definition at line 321 of file matrix2d.h.

◆ operator* [2/5]

GfMatrix2d operator* ( const GfMatrix2d m1,
const GfMatrix2d m2 
)
friend

Multiplies matrix m1 by m2.

Definition at line 307 of file matrix2d.h.

◆ operator* [3/5]

GfMatrix2d operator* ( const GfMatrix2d m1,
double  d 
)
friend

Returns the product of a matrix and a double.

Definition at line 265 of file matrix2d.h.

◆ operator* [4/5]

GfVec2d operator* ( const GfVec2d vec,
const GfMatrix2d m 
)
friend

Returns the product of row vector vec and a matrix m.

Definition at line 327 of file matrix2d.h.

◆ operator* [5/5]

GfMatrix2d operator* ( double  d,
const GfMatrix2d m 
)
friend

Definition at line 273 of file matrix2d.h.

◆ operator+

GfMatrix2d operator+ ( const GfMatrix2d m1,
const GfMatrix2d m2 
)
friend

Adds matrix m2 to m1.

Definition at line 291 of file matrix2d.h.

◆ operator- [1/2]

GF_API friend GfMatrix2d operator- ( const GfMatrix2d m)
friend

Returns the unary negation of matrix m.

◆ operator- [2/2]

GfMatrix2d operator- ( const GfMatrix2d m1,
const GfMatrix2d m2 
)
friend

Subtracts matrix m2 from m1.

Definition at line 299 of file matrix2d.h.

◆ operator/

GfMatrix2d operator/ ( const GfMatrix2d m1,
const GfMatrix2d m2 
)
friend

Divides matrix m1 by m2 (that is, m1 * inv(m2)).

Definition at line 315 of file matrix2d.h.

Member Data Documentation

◆ numColumns

const size_t numColumns = 2
static

Definition at line 50 of file matrix2d.h.

◆ numRows

const size_t numRows = 2
static

Definition at line 49 of file matrix2d.h.


The documentation for this class was generated from the following file: