From 344a604877823b16fdff7e759b85cd099e2ad3c9 Mon Sep 17 00:00:00 2001 From: numzero Date: Sat, 12 Sep 2026 16:17:07 +0300 Subject: [PATCH] switch to right-handed CS --- src/camera.rs | 12 ++++++------ src/lib.rs | 4 ++-- ui/src/main_window.ui | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/camera.rs b/src/camera.rs index f54059b..3e5930e 100644 --- a/src/camera.rs +++ b/src/camera.rs @@ -9,11 +9,11 @@ pub(crate) fn rotation(yaw: f32, pitch: f32) -> Mat3 { } pub(crate) fn view(yaw: f32, pitch: f32, distance: f32) -> Affine3A { - Affine3A::from_mat3_translation(rotation(yaw, pitch), vec3(0., 0., distance)) + Affine3A::from_mat3_translation(rotation(-yaw, -pitch), vec3(0., 0., -distance)) } pub(crate) fn projection(fovy: f32, aspect: f32) -> Mat4 { - Mat4::perspective_lh(fovy, aspect, 0.1, 10.0) + Mat4::perspective_rh(fovy, aspect, 0.1, 10.0) } #[cfg(test)] @@ -50,10 +50,10 @@ mod tests { fn test_view() { let mut ok = true; for (yaw, pitch, x1, y1, z1) in [ - (0.0, 0.0, [0., 0., 2.], [-1., 0., 3.], [0., 1., 3.]), - (0.5, 0.0, [1., 0., 3.], [0., 0., 2.], [0., 1., 3.]), - (0.0, 0.5, [0., -1., 3.], [-1., 0., 3.], [0., 0., 2.]), - (0.5, 0.5, [1., 0., 3.], [0., -1., 3.], [0., 0., 2.]), + (0.0, 0.0, [0., 0., -4.], [-1., 0., -3.], [0., 1., -3.]), + (0.5, 0.0, [-1., 0., -3.], [0., 0., -2.], [0., 1., -3.]), + (0.0, 0.5, [0., 1., -3.], [-1., 0., -3.], [0., 0., -2.]), + (0.5, 0.5, [-1., 0., -3.], [0., -1., -3.], [0., 0., -2.]), ] { let m = view(yaw * PI, pitch * PI, 3.); for (label, world, expected) in diff --git a/src/lib.rs b/src/lib.rs index 111ea41..08c51c1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -19,7 +19,7 @@ impl Default for RedrawArgs { fn default() -> Self { Self { background: vec4(0.25, 0.49, 0.93, 1.00), - cam_yaw: std::f32::consts::FRAC_PI_4, + cam_yaw: 3. * std::f32::consts::FRAC_PI_4, cam_pitch: std::f32::consts::FRAC_PI_6, cam_distance: 3., cam_fovy: std::f32::consts::FRAC_PI_2, @@ -56,7 +56,7 @@ fn cube(a: f32, b: f32) -> render::mesh::CpuMeshIndexed { ] { for m in [1., -1.] { let base = mesh.vertices.len() as u16; - for offset in [m * v + u, -m * v + u, -m * v - u, m * v - u] { + for offset in [m * v + u, m * v - u, -m * v - u, -m * v + u] { let vertex = render::mesh::Vertex { position: (m * w + offset), color: gray + color_level * m * w, diff --git a/ui/src/main_window.ui b/ui/src/main_window.ui index 71fced1..f6cdd02 100644 --- a/ui/src/main_window.ui +++ b/ui/src/main_window.ui @@ -71,7 +71,7 @@ 5.000000000000000 - 45.000000000000000 + 135.000000000000000