now truly isometric
This commit is contained in:
parent
d59e153370
commit
2c80885cf0
|
|
@ -42,6 +42,8 @@ impl OrbitalCamera {
|
|||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use approx::{abs_diff_eq, assert_ulps_eq};
|
||||
use glam::vec3;
|
||||
|
||||
|
|
@ -106,4 +108,30 @@ mod tests {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_isometric_camera() {
|
||||
let camera = OrbitalCamera {
|
||||
position_yaw: PI / 4.,
|
||||
position_pitch: 0.5f32.sqrt().atan(),
|
||||
distance: 1.0,
|
||||
};
|
||||
|
||||
let s13 = (1.0f32 / 3.).sqrt();
|
||||
assert_ulps_eq!(camera.position(), Vec3::splat(s13), max_ulps = 3);
|
||||
|
||||
let tfm = camera.transform();
|
||||
let o = tfm.transform_point3(vec3(0., 0., 0.));
|
||||
let x = tfm.transform_point3(vec3(1., 0., 0.));
|
||||
let y = tfm.transform_point3(vec3(0., 1., 0.));
|
||||
let z = tfm.transform_point3(vec3(0., 0., 1.));
|
||||
let s16 = (1.0f32 / 6.).sqrt();
|
||||
let s12 = (1.0f32 / 2.).sqrt();
|
||||
let s23 = (2.0f32 / 3.).sqrt();
|
||||
let d = 1.0 - s13;
|
||||
assert_ulps_eq!(o, vec3(0., 0., 1.), max_ulps = 3);
|
||||
assert_ulps_eq!(z, vec3(0., s23, d), max_ulps = 3);
|
||||
assert_ulps_eq!(x, vec3(s12, -s16, d), max_ulps = 3);
|
||||
assert_ulps_eq!(y, vec3(-s12, -s16, d), max_ulps = 3);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ impl MainWindow {
|
|||
fn render(&self, output: &wgpu::Texture) {
|
||||
let camera = OrbitalCamera {
|
||||
position_yaw: PI / 4.,
|
||||
position_pitch: PI / 6.,
|
||||
position_pitch: 0.5f32.sqrt().atan(),
|
||||
distance: 3.0,
|
||||
};
|
||||
let aspect = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user