LSST Applications g0265f82a02+0e5473021a,g02d81e74bb+0dd8ce4237,g1470d8bcf6+3ea6592b6f,g2079a07aa2+86d27d4dc4,g2305ad1205+5ca4c0b359,g295015adf3+d10818ec9d,g2a9a014e59+6f9be1b9cd,g2bbee38e9b+0e5473021a,g337abbeb29+0e5473021a,g3ddfee87b4+703ba97ebf,g487adcacf7+4fa16da234,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+ffa42b374e,g5a732f18d5+53520f316c,g64a986408d+0dd8ce4237,g858d7b2824+0dd8ce4237,g8a8a8dda67+585e252eca,g99cad8db69+d39438377f,g9ddcbc5298+9a081db1e4,ga1e77700b3+15fc3df1f7,ga8c6da7877+f1d96605c8,gb0e22166c9+60f28cb32d,gb6a65358fc+0e5473021a,gba4ed39666+c2a2e4ac27,gbb8dafda3b+e5339d463f,gc120e1dc64+da31e9920e,gc28159a63d+0e5473021a,gcf0d15dbbd+703ba97ebf,gdaeeff99f8+f9a426f77a,ge6526c86ff+889fc9d533,ge79ae78c31+0e5473021a,gee10cc3b42+585e252eca,gf18bd8381d+7268b93478,gff1a9f87cc+0dd8ce4237,w.2024.16
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | List of all members
lsst::sphgeom::Matrix3d Class Reference

A 3x3 matrix with real entries stored in double precision. More...

#include <Matrix3d.h>

Public Member Functions

 Matrix3d ()
 This constructor creates a zero matrix.
 
 Matrix3d (double m00, double m01, double m02, double m10, double m11, double m12, double m20, double m21, double m22)
 This constructor creates a matrix from its components, where mij specifies the component for row i and column j.
 
 Matrix3d (Vector3d const &v)
 This constructor creates a diagonal matrix with diagonal components set to the components of v.
 
 Matrix3d (double s)
 This constructor returns the identity matrix scaled by s.
 
bool operator== (Matrix3d const &m) const
 
bool operator!= (Matrix3d const &m) const
 
Vector3d getRow (int r) const
 getRow returns the r-th matrix row. Bounds are not checked.
 
Vector3d const & getColumn (int c) const
 getColumn returns the c-th matrix column. Bounds are not checked.
 
double operator() (int r, int c) const
 The function call operator returns the scalar at row r and column c.
 
double inner (Matrix3d const &m) const
 inner returns the Frobenius inner product of this matrix with m.
 
double getSquaredNorm () const
 getSquaredNorm returns the Frobenius inner product of this matrix with itself.
 
double getNorm () const
 getNorm returns the L2 (Frobenius) norm of this matrix.
 
Vector3d operator* (Vector3d const &v) const
 The multiplication operator returns the product of this matrix with vector v.
 
Matrix3d operator* (Matrix3d const &m) const
 The multiplication operator returns the product of this matrix with matrix m.
 
Matrix3d operator+ (Matrix3d const &m) const
 The addition operator returns the sum of this matrix and m.
 
Matrix3d operator- (Matrix3d const &m) const
 The subtraction operator returns the difference between this matrix and m.
 
Matrix3d cwiseProduct (Matrix3d const &m) const
 cwiseProduct returns the component-wise product of this matrix and m.
 
Matrix3d transpose () const
 transpose returns the transpose of this matrix.
 
Matrix3d inverse () const
 inverse returns the inverse of this matrix.
 

Detailed Description

A 3x3 matrix with real entries stored in double precision.

Definition at line 45 of file Matrix3d.h.

Constructor & Destructor Documentation

◆ Matrix3d() [1/4]

lsst::sphgeom::Matrix3d::Matrix3d ( )
inline

This constructor creates a zero matrix.

Definition at line 48 of file Matrix3d.h.

48{}

◆ Matrix3d() [2/4]

lsst::sphgeom::Matrix3d::Matrix3d ( double m00,
double m01,
double m02,
double m10,
double m11,
double m12,
double m20,
double m21,
double m22 )
inline

This constructor creates a matrix from its components, where mij specifies the component for row i and column j.

Definition at line 52 of file Matrix3d.h.

55 {
56 _c[0] = Vector3d(m00, m10, m20);
57 _c[1] = Vector3d(m01, m11, m21);
58 _c[2] = Vector3d(m02, m12, m22);
59 }

◆ Matrix3d() [3/4]

lsst::sphgeom::Matrix3d::Matrix3d ( Vector3d const & v)
inlineexplicit

This constructor creates a diagonal matrix with diagonal components set to the components of v.

Definition at line 63 of file Matrix3d.h.

63 {
64 _c[0] = Vector3d(v.x(), 0.0, 0.0);
65 _c[1] = Vector3d(0.0, v.y(), 0.0);
66 _c[2] = Vector3d(0.0, 0.0, v.z());
67 }

◆ Matrix3d() [4/4]

lsst::sphgeom::Matrix3d::Matrix3d ( double s)
inlineexplicit

This constructor returns the identity matrix scaled by s.

Definition at line 70 of file Matrix3d.h.

70 {
71 _c[0] = Vector3d(s, 0.0, 0.0);
72 _c[1] = Vector3d(0.0, s, 0.0);
73 _c[2] = Vector3d(0.0, 0.0, s);
74 }

Member Function Documentation

◆ cwiseProduct()

Matrix3d lsst::sphgeom::Matrix3d::cwiseProduct ( Matrix3d const & m) const
inline

cwiseProduct returns the component-wise product of this matrix and m.

Definition at line 143 of file Matrix3d.h.

143 {
144 Matrix3d r;
145 for (int i = 0; i < 3; ++i) { r._c[i] = _c[i].cwiseProduct(m._c[i]); }
146 return r;
147 }
int m
Definition SpanSet.cc:48
Matrix3d()
This constructor creates a zero matrix.
Definition Matrix3d.h:48
Vector3d cwiseProduct(Vector3d const &v) const
cwiseProduct returns the component-wise product of this vector and v.
Definition Vector3d.h:157

◆ getColumn()

Vector3d const & lsst::sphgeom::Matrix3d::getColumn ( int c) const
inline

getColumn returns the c-th matrix column. Bounds are not checked.

Definition at line 94 of file Matrix3d.h.

94{ return _c[c]; }

◆ getNorm()

double lsst::sphgeom::Matrix3d::getNorm ( ) const
inline

getNorm returns the L2 (Frobenius) norm of this matrix.

Definition at line 112 of file Matrix3d.h.

112{ return std::sqrt(getSquaredNorm()); }
double getSquaredNorm() const
getSquaredNorm returns the Frobenius inner product of this matrix with itself.
Definition Matrix3d.h:109
T sqrt(T... args)

◆ getRow()

Vector3d lsst::sphgeom::Matrix3d::getRow ( int r) const
inline

getRow returns the r-th matrix row. Bounds are not checked.

Definition at line 89 of file Matrix3d.h.

89 {
90 return Vector3d(getColumn(0)(r), getColumn(1)(r), getColumn(2)(r));
91 }
Vector3d const & getColumn(int c) const
getColumn returns the c-th matrix column. Bounds are not checked.
Definition Matrix3d.h:94

◆ getSquaredNorm()

double lsst::sphgeom::Matrix3d::getSquaredNorm ( ) const
inline

getSquaredNorm returns the Frobenius inner product of this matrix with itself.

Definition at line 109 of file Matrix3d.h.

109{ return inner(*this); }
double inner(Matrix3d const &m) const
inner returns the Frobenius inner product of this matrix with m.
Definition Matrix3d.h:101

◆ inner()

double lsst::sphgeom::Matrix3d::inner ( Matrix3d const & m) const
inline

inner returns the Frobenius inner product of this matrix with m.

Definition at line 101 of file Matrix3d.h.

101 {
103 Vector3d sum = p._c[0] + p._c[1] + p._c[2];
104 return sum(0) + sum(1) + sum(2);
105 }
Matrix3d cwiseProduct(Matrix3d const &m) const
cwiseProduct returns the component-wise product of this matrix and m.
Definition Matrix3d.h:143

◆ inverse()

Matrix3d lsst::sphgeom::Matrix3d::inverse ( ) const
inline

inverse returns the inverse of this matrix.

Definition at line 159 of file Matrix3d.h.

159 {
160 Matrix3d inv;
161 Matrix3d const & m = *this;
162 // Find the first column of Adj(m), the adjugate matrix of m.
163 Vector3d a0(m(1, 1) * m(2, 2) - m(2, 1) * m(1, 2),
164 m(1, 2) * m(2, 0) - m(2, 2) * m(1, 0),
165 m(1, 0) * m(2, 1) - m(2, 0) * m(1, 1));
166 // Find 1.0/det(m), where the determinant of m is the dot product of
167 // the first row of m with the first column of Adj(m).
168 double rdet = 1.0 / (a0(0) * m(0,0) + a0(1) * m(0,1) + a0(2) * m(0,2));
169 // The inverse of m is Adj(m)/det(m); compute it column by column.
170 inv._c[0] = a0 * rdet;
171 inv._c[1] = Vector3d((m(0, 2) * m(2, 1) - m(2, 2) * m(0, 1)) * rdet,
172 (m(0, 0) * m(2, 2) - m(2, 0) * m(0, 2)) * rdet,
173 (m(0, 1) * m(2, 0) - m(2, 1) * m(0, 0)) * rdet);
174 inv._c[2] = Vector3d((m(0, 1) * m(1, 2) - m(1, 1) * m(0, 2)) * rdet,
175 (m(0, 2) * m(1, 0) - m(1, 2) * m(0, 0)) * rdet,
176 (m(0, 0) * m(1, 1) - m(1, 0) * m(0, 1)) * rdet);
177 return inv;
178 }

◆ operator!=()

bool lsst::sphgeom::Matrix3d::operator!= ( Matrix3d const & m) const
inline

Definition at line 82 of file Matrix3d.h.

82 {
83 return _c[0] != m._c[0] ||
84 _c[1] != m._c[1] ||
85 _c[2] != m._c[2];
86 }

◆ operator()()

double lsst::sphgeom::Matrix3d::operator() ( int r,
int c ) const
inline

The function call operator returns the scalar at row r and column c.

Bounds are not checked.

Definition at line 98 of file Matrix3d.h.

98{ return getColumn(c)(r); }

◆ operator*() [1/2]

Matrix3d lsst::sphgeom::Matrix3d::operator* ( Matrix3d const & m) const
inline

The multiplication operator returns the product of this matrix with matrix m.

Definition at line 122 of file Matrix3d.h.

122 {
123 Matrix3d r;
124 for (int i = 0; i < 3; ++i) { r._c[i] = this->operator*(m._c[i]); }
125 return r;
126 }
Vector3d operator*(Vector3d const &v) const
The multiplication operator returns the product of this matrix with vector v.
Definition Matrix3d.h:116

◆ operator*() [2/2]

Vector3d lsst::sphgeom::Matrix3d::operator* ( Vector3d const & v) const
inline

The multiplication operator returns the product of this matrix with vector v.

Definition at line 116 of file Matrix3d.h.

116 {
117 return Vector3d(_c[0] * v(0) + _c[1] * v(1) + _c[2] * v(2));
118 }

◆ operator+()

Matrix3d lsst::sphgeom::Matrix3d::operator+ ( Matrix3d const & m) const
inline

The addition operator returns the sum of this matrix and m.

Definition at line 129 of file Matrix3d.h.

129 {
130 Matrix3d r;
131 for (int i = 0; i < 3; ++i) { r._c[i] = _c[i] + m._c[i]; }
132 return r;
133 }

◆ operator-()

Matrix3d lsst::sphgeom::Matrix3d::operator- ( Matrix3d const & m) const
inline

The subtraction operator returns the difference between this matrix and m.

Definition at line 136 of file Matrix3d.h.

136 {
137 Matrix3d r;
138 for (int i = 0; i < 3; ++i) { r._c[i] = _c[i] - m._c[i]; }
139 return r;
140 }

◆ operator==()

bool lsst::sphgeom::Matrix3d::operator== ( Matrix3d const & m) const
inline

Definition at line 76 of file Matrix3d.h.

76 {
77 return _c[0] == m._c[0] &&
78 _c[1] == m._c[1] &&
79 _c[2] == m._c[2];
80 }

◆ transpose()

Matrix3d lsst::sphgeom::Matrix3d::transpose ( ) const
inline

transpose returns the transpose of this matrix.

Definition at line 150 of file Matrix3d.h.

150 {
151 Matrix3d t;
152 t._c[0] = Vector3d(_c[0].x(), _c[1].x(), _c[2].x());
153 t._c[1] = Vector3d(_c[0].y(), _c[1].y(), _c[2].y());
154 t._c[2] = Vector3d(_c[0].z(), _c[1].z(), _c[2].z());
155 return t;
156 }
double z
Definition Match.cc:44
int y
Definition SpanSet.cc:48

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