now truly isometric
This commit is contained in:
parent
d59e153370
commit
2c80885cf0
|
|
@ -42,6 +42,8 @@ impl OrbitalCamera {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
use std::f32::consts::PI;
|
||||||
|
|
||||||
use approx::{abs_diff_eq, assert_ulps_eq};
|
use approx::{abs_diff_eq, assert_ulps_eq};
|
||||||
use glam::vec3;
|
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) {
|
fn render(&self, output: &wgpu::Texture) {
|
||||||
let camera = OrbitalCamera {
|
let camera = OrbitalCamera {
|
||||||
position_yaw: PI / 4.,
|
position_yaw: PI / 4.,
|
||||||
position_pitch: PI / 6.,
|
position_pitch: 0.5f32.sqrt().atan(),
|
||||||
distance: 3.0,
|
distance: 3.0,
|
||||||
};
|
};
|
||||||
let aspect = {
|
let aspect = {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user