package org.myrobotlab.oculus.lwjgl; import org.lwjgl.util.vector.Matrix4f; import org.lwjgl.util.vector.Vector3f; import org.myrobotlab.oculus.lwjgl.entities.Camera; public class Maths { public static Matrix4f createTransformationMatrix(Vector3f translation, float rx, float ry, float rz, float scale) { Matrix4f matrix = new Matrix4f(); matrix.setIdentity(); Matrix4f.translate(translation, matrix, matrix); Matrix4f.rotate((float) rx, new Vector3f(1, 0, 0), matrix, matrix); Matrix4f.rotate((float) ry, new Vector3f(0, 1, 0), matrix, matrix); Matrix4f.rotate((float) rz, new Vector3f(0, 0, 1), matrix, matrix); Matrix4f.scale(new Vector3f(scale, scale, scale), matrix, matrix); return matrix; } public static Matrix4f createViewMatrix(Camera camera) { Matrix4f viewMatrix = new Matrix4f(); viewMatrix.setIdentity(); Matrix4f.rotate((float) camera.getPitch(), new Vector3f(1, 0, 0), viewMatrix, viewMatrix); Matrix4f.rotate((float) camera.getYaw(), new Vector3f(0, 1, 0), viewMatrix, viewMatrix); Matrix4f.rotate((float) camera.getRoll(), new Vector3f(0, 0, 1), viewMatrix, viewMatrix); Vector3f cameraPos = camera.getPosition(); Vector3f negativeCameraPos = new Vector3f(-cameraPos.x, -cameraPos.y, -cameraPos.z); Matrix4f.translate(negativeCameraPos, viewMatrix, viewMatrix); return viewMatrix; } }