Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2012
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include "Matrix.h"
  2.  
  3. void mat4Inverse(mat4 &m){
  4.     mat4 m2 = m;
  5.  
  6.     m.values[0] = m2.values[0];
  7.     m.values[1] = m2.values[4];
  8.     m.values[2] = m2.values[8];
  9.     m.values[4] = m2.values[1];
  10.     m.values[6] = m2.values[9];
  11.     m.values[8] = m2.values[2];
  12.     m.values[9] = m2.values[6];
  13.  
  14.     m.values[12] = m.values[0]*-m2.values[12]+m.values[4]*-m2.values[13]+m.values[8]*-m2.values[14];
  15.     m.values[13] = m.values[1]*-m2.values[12]+m.values[5]*-m2.values[13]+m.values[9]*-m2.values[14];
  16.     m.values[14] = m.values[2]*-m2.values[12]+m.values[6]*-m2.values[13]+m.values[10]*-m2.values[14];
  17.  
  18.     m.values[3] = 0;
  19.     m.values[7] = 0;
  20.     m.values[11] = 0;
  21.     m.values[15] = 1;
  22. }
  23.  
  24. void mat4Inverse(mat4 &a, mat4 &b){
  25.     b = a;
  26.  
  27.     b.values[0] = a.values[0];
  28.     b.values[1] = a.values[4];
  29.     b.values[2] = a.values[8];
  30.     b.values[4] = a.values[1];
  31.     b.values[6] = a.values[9];
  32.     b.values[8] = a.values[2];
  33.     b.values[9] = a.values[6];
  34.  
  35.     b.values[12] = b.values[0]*-a.values[12]+b.values[4]*-a.values[13]+b.values[8]*-a.values[14];
  36.     b.values[13] = b.values[1]*-a.values[12]+b.values[5]*-a.values[13]+b.values[9]*-a.values[14];
  37.     b.values[14] = b.values[2]*-a.values[12]+b.values[6]*-a.values[13]+b.values[10]*-a.values[14];
  38.  
  39.     b.values[3] = 0;
  40.     b.values[7] = 0;
  41.     b.values[11] = 0;
  42.     b.values[15] = 1;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement