Guest User

FrustrumImpl

a guest
Dec 10th, 2012
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.11 KB | None | 0 0
  1. package co.uk.n3network.Meatis;
  2.  
  3. import java.nio.FloatBuffer;
  4.  
  5. import org.lwjgl.BufferUtils;
  6. import org.lwjgl.opengl.GL11;
  7.  
  8. public class FrustrumImpl extends Frustrum {
  9.  
  10. public static FrustrumImpl instance = new FrustrumImpl();
  11. public FloatBuffer projectionBuff = BufferUtils.createFloatBuffer(16);
  12. public FloatBuffer modelviewBuff = BufferUtils.createFloatBuffer(16);
  13. public FloatBuffer unused = BufferUtils.createFloatBuffer(16);
  14.  
  15.  
  16. public static Frustrum update() {
  17. FrustrumImpl var0 = instance;
  18. instance.projectionBuff.clear();
  19. var0.modelviewBuff.clear();
  20. var0.unused.clear();
  21. GL11.glGetFloat(2983, var0.projectionBuff);
  22. GL11.glGetFloat(2982, var0.modelviewBuff);
  23. var0.projectionBuff.flip().limit(16);
  24. var0.projectionBuff.get(var0.projection);
  25. var0.modelviewBuff.flip().limit(16);
  26. var0.modelviewBuff.get(var0.modelview);
  27. var0.clipping[0] = var0.modelview[0] * var0.projection[0] + var0.modelview[1] * var0.projection[4] + var0.modelview[2] * var0.projection[8] + var0.modelview[3] * var0.projection[12];
  28. var0.clipping[1] = var0.modelview[0] * var0.projection[1] + var0.modelview[1] * var0.projection[5] + var0.modelview[2] * var0.projection[9] + var0.modelview[3] * var0.projection[13];
  29. var0.clipping[2] = var0.modelview[0] * var0.projection[2] + var0.modelview[1] * var0.projection[6] + var0.modelview[2] * var0.projection[10] + var0.modelview[3] * var0.projection[14];
  30. var0.clipping[3] = var0.modelview[0] * var0.projection[3] + var0.modelview[1] * var0.projection[7] + var0.modelview[2] * var0.projection[11] + var0.modelview[3] * var0.projection[15];
  31. var0.clipping[4] = var0.modelview[4] * var0.projection[0] + var0.modelview[5] * var0.projection[4] + var0.modelview[6] * var0.projection[8] + var0.modelview[7] * var0.projection[12];
  32. var0.clipping[5] = var0.modelview[4] * var0.projection[1] + var0.modelview[5] * var0.projection[5] + var0.modelview[6] * var0.projection[9] + var0.modelview[7] * var0.projection[13];
  33. var0.clipping[6] = var0.modelview[4] * var0.projection[2] + var0.modelview[5] * var0.projection[6] + var0.modelview[6] * var0.projection[10] + var0.modelview[7] * var0.projection[14];
  34. var0.clipping[7] = var0.modelview[4] * var0.projection[3] + var0.modelview[5] * var0.projection[7] + var0.modelview[6] * var0.projection[11] + var0.modelview[7] * var0.projection[15];
  35. var0.clipping[8] = var0.modelview[8] * var0.projection[0] + var0.modelview[9] * var0.projection[4] + var0.modelview[10] * var0.projection[8] + var0.modelview[11] * var0.projection[12];
  36. var0.clipping[9] = var0.modelview[8] * var0.projection[1] + var0.modelview[9] * var0.projection[5] + var0.modelview[10] * var0.projection[9] + var0.modelview[11] * var0.projection[13];
  37. var0.clipping[10] = var0.modelview[8] * var0.projection[2] + var0.modelview[9] * var0.projection[6] + var0.modelview[10] * var0.projection[10] + var0.modelview[11] * var0.projection[14];
  38. var0.clipping[11] = var0.modelview[8] * var0.projection[3] + var0.modelview[9] * var0.projection[7] + var0.modelview[10] * var0.projection[11] + var0.modelview[11] * var0.projection[15];
  39. var0.clipping[12] = var0.modelview[12] * var0.projection[0] + var0.modelview[13] * var0.projection[4] + var0.modelview[14] * var0.projection[8] + var0.modelview[15] * var0.projection[12];
  40. var0.clipping[13] = var0.modelview[12] * var0.projection[1] + var0.modelview[13] * var0.projection[5] + var0.modelview[14] * var0.projection[9] + var0.modelview[15] * var0.projection[13];
  41. var0.clipping[14] = var0.modelview[12] * var0.projection[2] + var0.modelview[13] * var0.projection[6] + var0.modelview[14] * var0.projection[10] + var0.modelview[15] * var0.projection[14];
  42. var0.clipping[15] = var0.modelview[12] * var0.projection[3] + var0.modelview[13] * var0.projection[7] + var0.modelview[14] * var0.projection[11] + var0.modelview[15] * var0.projection[15];
  43. var0.frustrum[0][0] = var0.clipping[3] - var0.clipping[0];
  44. var0.frustrum[0][1] = var0.clipping[7] - var0.clipping[4];
  45. var0.frustrum[0][2] = var0.clipping[11] - var0.clipping[8];
  46. var0.frustrum[0][3] = var0.clipping[15] - var0.clipping[12];
  47. normalize(var0.frustrum, 0);
  48. var0.frustrum[1][0] = var0.clipping[3] + var0.clipping[0];
  49. var0.frustrum[1][1] = var0.clipping[7] + var0.clipping[4];
  50. var0.frustrum[1][2] = var0.clipping[11] + var0.clipping[8];
  51. var0.frustrum[1][3] = var0.clipping[15] + var0.clipping[12];
  52. normalize(var0.frustrum, 1);
  53. var0.frustrum[2][0] = var0.clipping[3] + var0.clipping[1];
  54. var0.frustrum[2][1] = var0.clipping[7] + var0.clipping[5];
  55. var0.frustrum[2][2] = var0.clipping[11] + var0.clipping[9];
  56. var0.frustrum[2][3] = var0.clipping[15] + var0.clipping[13];
  57. normalize(var0.frustrum, 2);
  58. var0.frustrum[3][0] = var0.clipping[3] - var0.clipping[1];
  59. var0.frustrum[3][1] = var0.clipping[7] - var0.clipping[5];
  60. var0.frustrum[3][2] = var0.clipping[11] - var0.clipping[9];
  61. var0.frustrum[3][3] = var0.clipping[15] - var0.clipping[13];
  62. normalize(var0.frustrum, 3);
  63. var0.frustrum[4][0] = var0.clipping[3] - var0.clipping[2];
  64. var0.frustrum[4][1] = var0.clipping[7] - var0.clipping[6];
  65. var0.frustrum[4][2] = var0.clipping[11] - var0.clipping[10];
  66. var0.frustrum[4][3] = var0.clipping[15] - var0.clipping[14];
  67. normalize(var0.frustrum, 4);
  68. var0.frustrum[5][0] = var0.clipping[3] + var0.clipping[2];
  69. var0.frustrum[5][1] = var0.clipping[7] + var0.clipping[6];
  70. var0.frustrum[5][2] = var0.clipping[11] + var0.clipping[10];
  71. var0.frustrum[5][3] = var0.clipping[15] + var0.clipping[14];
  72. normalize(var0.frustrum, 5);
  73. return instance;
  74. }
  75.  
  76. public static void normalize(float[][] var0, int var1) {
  77. float var2 = (float) Math.sqrt(var0[var1][0] * var0[var1][0] + var0[var1][1] * var0[var1][1] + var0[var1][2] * var0[var1][2]);
  78. var0[var1][0] /= var2;
  79. var0[var1][1] /= var2;
  80. var0[var1][2] /= var2;
  81. var0[var1][3] /= var2;
  82. }
  83.  
  84. }
Advertisement
Add Comment
Please, Sign In to add comment