From ab309ae48a183732b9c347dd7a1f7947b1a97a38 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Sat, 26 Apr 2025 12:14:22 +0200 Subject: [PATCH] fix aspectRatio --- .../main/java/chess/view/DDDrender/Camera.java | 15 +++++++-------- .../main/java/chess/view/DDDrender/Window.java | 4 ++++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/chess/view/DDDrender/Camera.java b/app/src/main/java/chess/view/DDDrender/Camera.java index a3bc9ae..08154e6 100644 --- a/app/src/main/java/chess/view/DDDrender/Camera.java +++ b/app/src/main/java/chess/view/DDDrender/Camera.java @@ -5,11 +5,11 @@ import org.joml.Vector3f; public class Camera { public static final float fov = 70.0f; - // should be changed to match screen - public static final float aspect = 1.0f; public static final float zNear = 0.01f; public static final float zFar = 1000.0f; + private float aspectRatio; + private Vector3f pos; private float yaw = 0.0f; @@ -115,14 +115,13 @@ public class Camera { this.pitch = pitch; } - public Matrix4f getMatrix() { - Vector3f forward = new Vector3f( - (float) (Math.cos(yaw) * Math.cos(pitch)), - (float) (Math.sin(pitch)), - (float) (Math.sin(yaw) * Math.cos(pitch))); + public void setAspectRatio(float aspectRatio) { + this.aspectRatio = aspectRatio; + } + public Matrix4f getMatrix() { return new Matrix4f() - .perspective((float) (Math.toRadians(fov)), aspect, zNear, zFar) + .perspective((float) (Math.toRadians(fov)), aspectRatio, zNear, zFar) .lookAt(pos, new Vector3f(0.0f, 0, 0), new Vector3f(0.0f, 1.0f, 0.0f)); } } diff --git a/app/src/main/java/chess/view/DDDrender/Window.java b/app/src/main/java/chess/view/DDDrender/Window.java index d51ea6c..1e7a833 100644 --- a/app/src/main/java/chess/view/DDDrender/Window.java +++ b/app/src/main/java/chess/view/DDDrender/Window.java @@ -102,6 +102,10 @@ public class Window { float y = cam.getPos().z(); cam.setPosition(new Vector3f(x * (float) Math.cos(angle) - y * (float) Math.sin(angle), 1.0f, x * (float) Math.sin(angle) + y * (float) Math.cos(angle))); + int width[] = new int[1]; + int height[] = new int[1]; + glfwGetWindowSize(window, width, height); + cam.setAspectRatio((float) width[0] / (float) height[0]); renderer.Render(cam); renderPieces(); }