4 x 4 symmetric matrix  
 More...
#include <JMatrix4S.hh>
 | 
|   | JMatrix4S () | 
|   | Default constructor.  
  | 
|   | 
|   | JMatrix4S (const JMatrix4D &A) | 
|   | Contructor.  
  | 
|   | 
|   | JMatrix4S (const double __a00, const double __a10, const double __a11, const double __a20, const double __a21, const double __a22, const double __a30, const double __a31, const double __a32, const double __a33) | 
|   | Contructor.  
  | 
|   | 
| void  | invert () | 
|   | Invert matrix.  
  | 
|   | 
| JMatrix4D &  | setIdentity () | 
|   | Set to identity matrix.  
  | 
|   | 
| void  | set (const JMatrix4D &A) | 
|   | Set matrix.  
  | 
|   | 
| JMatrix4D &  | reset () | 
|   | Set matrix to the null matrix.  
  | 
|   | 
| JMatrix4D &  | transpose () | 
|   | Transpose.  
  | 
|   | 
| JMatrix4D &  | negate () | 
|   | Negate matrix.  
  | 
|   | 
| JMatrix4D &  | add (const JMatrix4D &A) | 
|   | Matrix addition.  
  | 
|   | 
| JMatrix4D &  | sub (const JMatrix4D &A) | 
|   | Matrix subtraction.  
  | 
|   | 
| JMatrix4D &  | mul (const double factor) | 
|   | Scale matrix.  
  | 
|   | 
| const JMatrix4D &  | mul (const JMatrix4D &A, const JMatrix4D &B) | 
|   | Matrix multiplication.  
  | 
|   | 
| JMatrix4D &  | mul (const JSecond_t &object) | 
|   | Multiply with object.  
  | 
|   | 
| JMatrix4D &  | div (const double factor) | 
|   | Scale matrix.  
  | 
|   | 
| bool  | equals (const JMatrix4D &A, const double eps=std::numeric_limits< double >::min()) const | 
|   | Equality.  
  | 
|   | 
| bool  | isIdentity (const double eps=std::numeric_limits< double >::min()) const | 
|   | Test identity.  
  | 
|   | 
| double  | getDeterminant () const | 
|   | Get determinant of matrix.  
  | 
|   | 
| void  | transform (double &__x0, double &__x1, double &__x2, double &__x3) const | 
|   | Transform.  
  | 
|   | 
4 x 4 symmetric matrix 
Definition at line 26 of file JMatrix4S.hh.
 
◆ JMatrix4S() [1/3]
  
  
      
        
          | JMATH::JMatrix4S::JMatrix4S  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
Default constructor. 
Definition at line 33 of file JMatrix4S.hh.
   33                :
   35    {}
JMatrix4D()
Default constructor.
 
 
 
 
◆ JMatrix4S() [2/3]
  
  
      
        
          | JMATH::JMatrix4S::JMatrix4S  | 
          ( | 
          const JMatrix4D & |           A | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
 
◆ JMatrix4S() [3/3]
  
  
      
        
          | JMATH::JMatrix4S::JMatrix4S  | 
          ( | 
          const double |           __a00,  | 
         
        
           | 
           | 
          const double |           __a10,  | 
         
        
           | 
           | 
          const double |           __a11,  | 
         
        
           | 
           | 
          const double |           __a20,  | 
         
        
           | 
           | 
          const double |           __a21,  | 
         
        
           | 
           | 
          const double |           __a22,  | 
         
        
           | 
           | 
          const double |           __a30,  | 
         
        
           | 
           | 
          const double |           __a31,  | 
         
        
           | 
           | 
          const double |           __a32,  | 
         
        
           | 
           | 
          const double |           __a33 ) | 
         
       
   | 
  
inline   | 
  
 
Contructor. 
The upper triangle is internally set.
- Parameters
 - 
  
    | __a00 | (0,0)  | 
    | __a10 | (1,0)  | 
    | __a11 | (1,1)  | 
    | __a20 | (2,0)  | 
    | __a21 | (2,1)  | 
    | __a22 | (2,2)  | 
    | __a30 | (3,0)  | 
    | __a31 | (3,1)  | 
    | __a32 | (3,2)  | 
    | __a33 | (3,3)  | 
  
   
Definition at line 63 of file JMatrix4S.hh.
   66                                                                                              :
   68                __a10, __a11, __a21, __a31,
   69                __a20, __a21, __a22, __a32,
   70                __a30, __a31, __a32, __a33)
   71    {}
 
 
 
◆ invert()
  
  
      
        
          | void JMATH::JMatrix4S::invert  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
Invert matrix. 
Definition at line 77 of file JMatrix4S.hh.
   78    {
   79      using std::swap;
   80 
   81      
   82 
   83      int    p0 = 0; 
   85      int    p2 = 0; 
   86 
   87      double val;
   88 
   90 
   91      if (fabs(
a10) > fabs(val)) {
 
   92        p0  = 1;
   94      }
   95 
   96      if (fabs(
a20) > fabs(val)) {
 
   97        p0  = 2;
   99      }
  100 
  101      if (fabs(
a30) > fabs(val)) {
 
  102        p0  = 3;
  104      }
  105 
  106      switch (p0) {
  107 
  108      case 1:
  113        break;
  114 
  115      case 2:
  120        break;
  121 
  122      case 3:
  127        break;
  128      }
  129 
  130      if (val == 0) {
  131        throw JDivisionByZero("LDU decomposition zero pivot");  
  132      }
  133 
  138 
  143 
  148 
  150 
  151      if (fabs(
a21) > fabs(val)) {
 
  154      }
  155 
  156      if (fabs(
a31) > fabs(val)) {
 
  159      }
  160 
  162 
  163      case 2:
  168        break;
  169 
  170      case 3:
  175        break;
  176      }
  177 
  178      if (val == 0) {
  179        throw JDivisionByZero("LDU decomposition zero pivot");
  180      }
  181 
  185 
  189 
  191 
  192      if (fabs(
a32) > fabs(val)) {
 
  193        p2  = 3;
  195      }
  196 
  197      switch (p2) {
  198 
  199      case 3:
  204        break;
  205      }
  206 
  207      if (val == 0) {
  208        throw JDivisionByZero("LDU decomposition zero pivot");
  209      }
  210 
  213 
  214      
  215 
  217        throw JDivisionByZero("D matrix not invertable");
  218      }
  219      
  224 
  225      
  226 
  229 
  233 
  238 
  241 
  245 
  248 
  249      
  250 
  252 
  255 
  259 
  264 
  265      
  266 
  270 
  275 
  281 
  285 
  286      switch (p2) {
  287 
  288      case 3:
  293        break;
  294      }
  295 
  297 
  298      case 2:
  303        break;
  304 
  305      case 3:
  310        break;
  311      }
  312 
  313      switch (p0) {
  314 
  315      case 1:
  320        break;
  321 
  322      case 2:
  327        break;
  328 
  329      case 3:
  334        break;
  335      }
  336    }
 
 
 
◆ getInstance()
  
  
      
        
          | static const JMatrix4D & JMATH::JMatrix4D::getInstance  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinestaticinherited   | 
  
 
Get reference to unique instance of this class object. 
- Returns
 - zero matrix 
 
Definition at line 89 of file JMatrix4D.hh.
   90    {
   92 
   93      return matrix;
   94    }
 
 
 
◆ setIdentity()
  
  
      
        
          | JMatrix4D & JMATH::JMatrix4D::setIdentity  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlineinherited   | 
  
 
Set to identity matrix. 
- Returns
 - this matrix 
 
Definition at line 102 of file JMatrix4D.hh.
  103    {
  108 
  109      return *this;
  110    }
 
 
 
◆ getIdentity()
  
  
      
        
          | static const JMatrix4D & JMATH::JMatrix4D::getIdentity  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinestaticinherited   | 
  
 
Get reference to unique instance of this class object. 
- Returns
 - identity matrix 
 
Definition at line 118 of file JMatrix4D.hh.
  119    {
  121 
  122      return matrix;
  123    }
JMatrix4D & setIdentity()
Set to identity matrix.
 
 
 
 
◆ set()
  
  
      
        
          | void JMATH::JMatrix4D::set  | 
          ( | 
          const JMatrix4D & |           A | ) | 
           | 
         
       
   | 
  
inlineinherited   | 
  
 
 
◆ reset()
Set matrix to the null matrix. 
- Returns
 - this matrix 
 
Definition at line 142 of file JMatrix4D.hh.
  143    {
  145 
  146      return *this;
  147    }
 
 
 
◆ transpose()
Transpose. 
- Returns
 - this matrix 
 
Definition at line 155 of file JMatrix4D.hh.
  156    {
  157      using std::swap;
  158 
  165 
  166      return *this;
  167    }
 
 
 
◆ negate()
Negate matrix. 
- Returns
 - -this matrix 
 
Definition at line 175 of file JMatrix4D.hh.
  176    {
  181 
  182      return *this;
  183    }
 
 
 
◆ add()
Matrix addition. 
- Parameters
 - 
  
  
 
- Returns
 - this matrix + A 
 
Definition at line 192 of file JMatrix4D.hh.
  193    {
  198  
  199      return *this;
  200    }
 
 
 
◆ sub()
Matrix subtraction. 
- Parameters
 - 
  
  
 
- Returns
 - this matrix - A 
 
Definition at line 209 of file JMatrix4D.hh.
  210    {
  215  
  216      return *this;
  217    }
 
 
 
◆ mul() [1/3]
  
  
      
        
          | JMatrix4D & JMATH::JMatrix4D::mul  | 
          ( | 
          const double |           factor | ) | 
           | 
         
       
   | 
  
inlineinherited   | 
  
 
Scale matrix. 
- Parameters
 - 
  
  
 
- Returns
 - this matrix * factor 
 
Definition at line 226 of file JMatrix4D.hh.
  227    {
  228      a00 *= factor; 
a01 *= factor; 
a02 *= factor; 
a03 *= factor;
 
  229      a10 *= factor; 
a11 *= factor; 
a12 *= factor; 
a13 *= factor;
 
  230      a20 *= factor; 
a21 *= factor; 
a22 *= factor; 
a23 *= factor;
 
  231      a30 *= factor; 
a31 *= factor; 
a32 *= factor; 
a33 *= factor;
 
  232 
  233      return *this;
  234    }
 
 
 
◆ mul() [2/3]
Matrix multiplication. 
- Parameters
 - 
  
  
 
- Returns
 - this matrix 
 
Definition at line 261 of file JMatrix4D.hh.
  263    {
  264      a00 = A.a00 * B.a00  +  A.a01 * B.a10  +  A.a02 * B.a20  +  A.a03 * B.a30;
 
  265      a01 = A.a00 * B.a01  +  A.a01 * B.a11  +  A.a02 * B.a21  +  A.a03 * B.a31;
 
  266      a02 = A.a00 * B.a02  +  A.a01 * B.a12  +  A.a02 * B.a22  +  A.a03 * B.a32;
 
  267      a03 = A.a00 * B.a03  +  A.a01 * B.a13  +  A.a02 * B.a23  +  A.a03 * B.a33;
 
  268      
  269      a10 = A.a10 * B.a00  +  A.a11 * B.a10  +  A.a12 * B.a20  +  A.a13 * B.a30;
 
  270      a11 = A.a10 * B.a01  +  A.a11 * B.a11  +  A.a12 * B.a21  +  A.a13 * B.a31;
 
  271      a12 = A.a10 * B.a02  +  A.a11 * B.a12  +  A.a12 * B.a22  +  A.a13 * B.a32;
 
  272      a13 = A.a10 * B.a03  +  A.a11 * B.a13  +  A.a12 * B.a23  +  A.a13 * B.a33;
 
  273      
  274      a20 = A.a20 * B.a00  +  A.a21 * B.a10  +  A.a22 * B.a20  +  A.a23 * B.a30;
 
  275      a21 = A.a20 * B.a01  +  A.a21 * B.a11  +  A.a22 * B.a21  +  A.a23 * B.a31;
 
  276      a22 = A.a20 * B.a02  +  A.a21 * B.a12  +  A.a22 * B.a22  +  A.a23 * B.a32;
 
  277      a23 = A.a20 * B.a03  +  A.a21 * B.a13  +  A.a22 * B.a23  +  A.a23 * B.a33;
 
  278      
  279      a30 = A.a30 * B.a00  +  A.a31 * B.a10  +  A.a32 * B.a20  +  A.a33 * B.a30;
 
  280      a31 = A.a30 * B.a01  +  A.a31 * B.a11  +  A.a32 * B.a21  +  A.a33 * B.a31;
 
  281      a32 = A.a30 * B.a02  +  A.a31 * B.a12  +  A.a32 * B.a22  +  A.a33 * B.a32;
 
  282      a33 = A.a30 * B.a03  +  A.a31 * B.a13  +  A.a32 * B.a23  +  A.a33 * B.a33;
 
  283      
  284      return *this;
  285    }
 
 
 
◆ mul() [3/3]
Multiply with object. 
- Parameters
 - 
  
  
 
- Returns
 - result object 
 
Definition at line 354 of file JMath.hh.
  355    {
  356      return static_cast<JFirst_t&>(*this) = JFirst_t().mul(static_cast<const JFirst_t&>(*this), object);
  357    }
 
 
 
◆ div()
  
  
      
        
          | JMatrix4D & JMATH::JMatrix4D::div  | 
          ( | 
          const double |           factor | ) | 
           | 
         
       
   | 
  
inlineinherited   | 
  
 
Scale matrix. 
- Parameters
 - 
  
  
 
- Returns
 - this matrix / factor 
 
Definition at line 243 of file JMatrix4D.hh.
  244    {
  245      a00 /= factor; 
a01 /= factor; 
a02 /= factor; 
a03 /= factor;
 
  246      a10 /= factor; 
a11 /= factor; 
a12 /= factor; 
a13 /= factor;
 
  247      a20 /= factor; 
a21 /= factor; 
a22 /= factor; 
a23 /= factor;
 
  248      a30 /= factor; 
a31 /= factor; 
a32 /= factor; 
a33 /= factor;
 
  249 
  250      return *this;
  251    }
 
 
 
◆ equals()
  
  
      
        
          | bool JMATH::JMatrix4D::equals  | 
          ( | 
          const JMatrix4D & |           A,  | 
         
        
           | 
           | 
          const double |           eps = std::numeric_limits<double>::min() ) const | 
         
       
   | 
  
inlineinherited   | 
  
 
Equality. 
- Parameters
 - 
  
    | A | matrix  | 
    | eps | numerical precision  | 
  
   
- Returns
 - true if matrices identical; else false 
 
Definition at line 295 of file JMatrix4D.hh.
  297    {
  298      return (fabs(
a00 - A.a00) <= eps  &&
 
  299              fabs(
a01 - A.a01) <= eps  &&
 
  300              fabs(
a02 - A.a02) <= eps  &&
 
  301              fabs(
a03 - A.a03) <= eps  &&
 
  302              fabs(
a10 - A.a10) <= eps  &&
 
  303              fabs(
a11 - A.a11) <= eps  &&
 
  304              fabs(
a12 - A.a12) <= eps  &&
 
  305              fabs(
a13 - A.a13) <= eps  &&
 
  306              fabs(
a20 - A.a20) <= eps  &&
 
  307              fabs(
a21 - A.a21) <= eps  &&
 
  308              fabs(
a22 - A.a22) <= eps  &&
 
  309              fabs(
a23 - A.a23) <= eps  &&
 
  310              fabs(
a30 - A.a30) <= eps  &&
 
  311              fabs(
a31 - A.a31) <= eps  &&
 
  312              fabs(
a32 - A.a32) <= eps  &&
 
  313              fabs(
a33 - A.a33) <= eps);
 
  314    }
 
 
 
◆ isIdentity()
  
  
      
        
          | bool JMATH::JMatrix4D::isIdentity  | 
          ( | 
          const double |           eps = std::numeric_limits<double>::min() | ) | 
           const | 
         
       
   | 
  
inlineinherited   | 
  
 
Test identity. 
- Parameters
 - 
  
  
 
- Returns
 - true if identity matrix; else false 
 
Definition at line 323 of file JMatrix4D.hh.
  324    {
  326    }
static const JMatrix4D & getIdentity()
Get reference to unique instance of this class object.
 
bool equals(const JMatrix4D &A, const double eps=std::numeric_limits< double >::min()) const
Equality.
 
 
 
 
◆ getDeterminant()
  
  
      
        
          | double JMATH::JMatrix4D::getDeterminant  | 
          ( | 
           | ) | 
           const | 
         
       
   | 
  
inlineinherited   | 
  
 
Get determinant of matrix. 
- Returns
 - determinant of matrix 
 
Definition at line 334 of file JMatrix4D.hh.
  335    {
  336      double det = 0.0;
  337 
  341 
  345 
  349 
  353 
  354      return det;
  355    }
 
 
 
◆ transform()
  
  
      
        
          | void JMATH::JMatrix4D::transform  | 
          ( | 
          double & |           __x0,  | 
         
        
           | 
           | 
          double & |           __x1,  | 
         
        
           | 
           | 
          double & |           __x2,  | 
         
        
           | 
           | 
          double & |           __x3 ) const | 
         
       
   | 
  
inlineinherited   | 
  
 
Transform. 
- Parameters
 - 
  
    | __x0 | x0 value  | 
    | __x1 | x1 value  | 
    | __x2 | x2 value  | 
    | __x3 | x3 value  | 
  
   
Definition at line 366 of file JMatrix4D.hh.
  367    {
  368      const double x0 = 
a00 * __x0  +  
a01 * __x1  +  
a02 * __x2  +  
a03 * __x3;
 
  369      const double x1 = 
a10 * __x0  +  
a11 * __x1  +  
a12 * __x2  +  
a13 * __x3;
 
  370      const double x2 = 
a20 * __x0  +  
a21 * __x1  +  
a22 * __x2  +  
a23 * __x3;
 
  371      const double x3 = 
a30 * __x0  +  
a31 * __x1  +  
a32 * __x2  +  
a33 * __x3;
 
  372 
  373      __x0 = x0;
  374      __x1 = x1;
  375      __x2 = x2;
  376      __x3 = x3;
  377    }
 
 
 
◆ a00
  
  
      
        
          | double JMATH::JMatrix4D::a00 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a01
  
  
      
        
          | double JMATH::JMatrix4D::a01 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a02
  
  
      
        
          | double JMATH::JMatrix4D::a02 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a03
  
  
      
        
          | double JMATH::JMatrix4D::a03 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a10
  
  
      
        
          | double JMATH::JMatrix4D::a10 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a11
  
  
      
        
          | double JMATH::JMatrix4D::a11 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a12
  
  
      
        
          | double JMATH::JMatrix4D::a12 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a13
  
  
      
        
          | double JMATH::JMatrix4D::a13 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a20
  
  
      
        
          | double JMATH::JMatrix4D::a20 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a21
  
  
      
        
          | double JMATH::JMatrix4D::a21 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a22
  
  
      
        
          | double JMATH::JMatrix4D::a22 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a23
  
  
      
        
          | double JMATH::JMatrix4D::a23 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a30
  
  
      
        
          | double JMATH::JMatrix4D::a30 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a31
  
  
      
        
          | double JMATH::JMatrix4D::a31 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a32
  
  
      
        
          | double JMATH::JMatrix4D::a32 | 
         
       
   | 
  
inherited   | 
  
 
 
◆ a33
  
  
      
        
          | double JMATH::JMatrix4D::a33 | 
         
       
   | 
  
inherited   | 
  
 
 
The documentation for this class was generated from the following file: