Changeset 20895b for molecuilder/src/vector.cpp
- Timestamp:
- Nov 4, 2009, 5:34:05 PM (16 years ago)
- Children:
- 5f1d021
- Parents:
- c1b76e
- File:
-
- 1 edited
-
molecuilder/src/vector.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/vector.cpp
rc1b76e r20895b 275 275 temp.AddVector(this); 276 276 temp.SubtractVector(PlaneOffset); 277 278 return temp.Norm(); 277 double sign = temp.ScalarProduct(PlaneNormal); 278 sign /= fabs(sign); 279 280 return (temp.Norm()*sign); 279 281 }; 280 282 … … 713 715 for (int i=NDIM;i--;) 714 716 x[i] = C.x[i]; 715 };716 717 /** Calculate the inverse of a 3x3 matrix.718 * \param *matrix NDIM_NDIM array719 */720 double * Vector::InverseMatrix( const double * const A)721 {722 double *B = Malloc<double>(NDIM * NDIM, "Vector::InverseMatrix: *B");723 double detA = RDET3(A);724 double detAReci;725 726 for (int i=0;i<NDIM*NDIM;++i)727 B[i] = 0.;728 // calculate the inverse B729 if (fabs(detA) > MYEPSILON) {; // RDET3(A) yields precisely zero if A irregular730 detAReci = 1./detA;731 B[0] = detAReci*RDET2(A[4],A[5],A[7],A[8]); // A_11732 B[1] = -detAReci*RDET2(A[1],A[2],A[7],A[8]); // A_12733 B[2] = detAReci*RDET2(A[1],A[2],A[4],A[5]); // A_13734 B[3] = -detAReci*RDET2(A[3],A[5],A[6],A[8]); // A_21735 B[4] = detAReci*RDET2(A[0],A[2],A[6],A[8]); // A_22736 B[5] = -detAReci*RDET2(A[0],A[2],A[3],A[5]); // A_23737 B[6] = detAReci*RDET2(A[3],A[4],A[6],A[7]); // A_31738 B[7] = -detAReci*RDET2(A[0],A[1],A[6],A[7]); // A_32739 B[8] = detAReci*RDET2(A[0],A[1],A[3],A[4]); // A_33740 }741 return B;742 717 }; 743 718
Note:
See TracChangeset
for help on using the changeset viewer.
