ChristianGaerter

Untitled

Mar 8th, 2014
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.48 KB | None | 0 0
  1. public class Matrix4f {
  2.  
  3. private float[][] m;
  4.  
  5. public Matrix4f() {
  6. m = new float[4][4];
  7. }
  8.  
  9. public Matrix4f initIdentiy() {
  10.  
  11. m[0][0] = 1; m[0][1] = 0; m[0][2] = 0; m[0][3] = 0;
  12. m[1][0] = 0; m[1][1] = 1; m[1][2] = 0; m[1][3] = 0;
  13. m[2][0] = 0; m[2][1] = 0; m[2][2] = 1; m[2][3] = 0;
  14. m[3][0] = 0; m[3][1] = 0; m[3][2] = 0; m[3][3] = 1;
  15.  
  16. return this;
  17. }
  18.  
  19. public Matrix4f initTranslation(float x, float y, float z) {
  20. m[0][0] = 1; m[0][1] = 0; m[0][2] = 0; m[0][3] = x;
  21. m[1][0] = 0; m[1][1] = 1; m[1][2] = 0; m[1][3] = y;
  22. m[2][0] = 0; m[2][1] = 0; m[2][2] = 1; m[2][3] = z;
  23. m[3][0] = 0; m[3][1] = 0; m[3][2] = 0; m[3][3] = 1;
  24.  
  25. return this;
  26. }
  27.  
  28. public Matrix4f initRotation(float x, float y, float z) {
  29.  
  30. Matrix4f mx = new Matrix4f();
  31. Matrix4f my = new Matrix4f();
  32. Matrix4f mz = new Matrix4f();
  33.  
  34. x = (float) Math.toRadians(x);
  35. y = (float) Math.toRadians(x);
  36. z = (float) Math.toRadians(x);
  37.  
  38. mx.m[0][0] = (float) Math.cos(z); mx.m[0][1] = (float) - Math.sin(z); mx.m[0][2] = 0; mx.m[0][3] = 0;
  39. mx.m[1][0] = (float) Math.sin(z); mx.m[1][1] = (float) + Math.cos(z); mx.m[1][2] = 0; mx.m[1][3] = 0;
  40. mx.m[2][0] = 0; mx.m[2][1] = 0; mx.m[2][2] = 1; mx.m[2][3] = 0;
  41. mx.m[3][0] = 0; mx.m[3][1] = 0; mx.m[3][2] = 0; mx.m[3][3] = 1;
  42.  
  43. my.m[0][0] = 1; my.m[0][1] = 0; my.m[0][2] = 0; my.m[0][3] = 0;
  44. my.m[1][0] = 0; my.m[1][1] = (float) Math.cos(x); my.m[1][2] = (float) - Math.sin(x); my.m[1][3] = 0;
  45. my.m[2][0] = 0; my.m[2][1] = (float) Math.sin(x); my.m[2][2] = (float) + Math.cos(x); my.m[2][3] = 0;
  46. my.m[3][0] = 0; my.m[3][1] = 0; my.m[3][2] = 0; my.m[3][3] = 1;
  47.  
  48. mz.m[0][0] = (float) Math.cos(y); mz.m[0][1] = 0; mz.m[0][2] = (float) - Math.sin(y); mz.m[0][3] = 0;
  49. mz.m[1][0] = 0; mz.m[1][1] = 1; mz.m[1][2] = 0; mz.m[1][3] = 0;
  50. mz.m[2][0] = (float) Math.sin(y); mz.m[2][1] = 0; mz.m[2][2] = (float) + Math.cos(y); mz.m[2][3] = 0;
  51. mz.m[3][0] = 0; mz.m[3][1] = 0; mz.m[3][2] = 0; mz.m[3][3] = 1;
  52.  
  53. m = mz.mul(my.mul(mx)).getM();
  54.  
  55. return this;
  56. }
  57.  
  58. public Matrix4f mul(Matrix4f ma) {
  59.  
  60. Matrix4f ret = new Matrix4f();
  61.  
  62. for (int i = 0; i < 4; i++) {
  63.  
  64. for (int j = 0; j < 4; j++) {
  65. ret.set(i, j, m[i][0] * ma.get(0, j) +
  66. m[i][0] * ma.get(1, j) +
  67. m[i][0] * ma.get(2, j) +
  68. m[i][0] * ma.get(3, j));
  69. }
  70. }
  71.  
  72.  
  73. return ret;
  74. }
  75.  
  76. public float get(int x, int y) {
  77. return m[x][y];
  78. }
  79.  
  80. public void set(int x, int y, float val) {
  81. m[x][y] = val;
  82. }
  83.  
  84. public float[][] getM() {
  85. return m;
  86. }
  87.  
  88. public void setM(float[][] m) {
  89. this.m = m;
  90. }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment