prepare for camera
This commit is contained in:
parent
a18260a3ae
commit
712110d5c2
11
Cargo.lock
generated
11
Cargo.lock
generated
|
|
@ -67,6 +67,15 @@ dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "approx"
|
||||||
|
version = "0.5.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
|
||||||
|
dependencies = [
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "arrayref"
|
name = "arrayref"
|
||||||
version = "0.3.9"
|
version = "0.3.9"
|
||||||
|
|
@ -481,6 +490,7 @@ version = "0.30.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bd47b05dddf0005d850e5644cae7f2b14ac3df487979dbfff3b56f20b1a6ae46"
|
checksum = "bd47b05dddf0005d850e5644cae7f2b14ac3df487979dbfff3b56f20b1a6ae46"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"approx",
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -1144,6 +1154,7 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
|
||||||
name = "photon-light"
|
name = "photon-light"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"approx",
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
"glam",
|
"glam",
|
||||||
"pollster",
|
"pollster",
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,13 @@ opt-level = 3
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
bytemuck = "1.24.0"
|
bytemuck = "1.24.0"
|
||||||
glam = { version = "0.30.9", features = ["bytemuck"] }
|
glam = { version = "0.30.9", features = ["bytemuck", "approx"] }
|
||||||
pollster = "0.4.0"
|
pollster = "0.4.0"
|
||||||
rand = "0.9.2"
|
rand = "0.9.2"
|
||||||
rand_distr = "0.5.1"
|
rand_distr = "0.5.1"
|
||||||
rand_pcg = "0.9.0"
|
rand_pcg = "0.9.0"
|
||||||
wgpu = "27.0.1"
|
wgpu = "27.0.1"
|
||||||
winit = "0.30.12"
|
winit = "0.30.12"
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
approx = "0.5.1"
|
||||||
|
|
|
||||||
40
src/camera.rs
Normal file
40
src/camera.rs
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
use glam::{Mat3, Vec3};
|
||||||
|
|
||||||
|
pub fn ypr_to_mat(ypr: Vec3) -> Mat3 {
|
||||||
|
glam::Mat3::from_euler(glam::EulerRot::ZXZEx, ypr.x, ypr.y, ypr.z)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use std::f32::consts::PI;
|
||||||
|
|
||||||
|
use approx::assert_ulps_eq;
|
||||||
|
use glam::vec3;
|
||||||
|
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_ypr_to_mat() {
|
||||||
|
assert_ulps_eq!(ypr_to_mat(vec3(0., 0., 0.)), Mat3::IDENTITY, max_ulps = 3);
|
||||||
|
assert_ulps_eq!(
|
||||||
|
ypr_to_mat(vec3(PI / 2., 0., 0.)),
|
||||||
|
Mat3::from_cols_array_2d(&[[0., 1., 0.], [-1., 0., 0.], [0., 0., 1.]]),
|
||||||
|
max_ulps = 3,
|
||||||
|
);
|
||||||
|
assert_ulps_eq!(
|
||||||
|
ypr_to_mat(vec3(0., 0., PI / 2.)),
|
||||||
|
Mat3::from_cols_array_2d(&[[0., 1., 0.], [-1., 0., 0.], [0., 0., 1.]]),
|
||||||
|
max_ulps = 3,
|
||||||
|
);
|
||||||
|
assert_ulps_eq!(
|
||||||
|
ypr_to_mat(vec3(0., PI / 2., 0.)),
|
||||||
|
Mat3::from_cols_array_2d(&[[1., 0., 0.], [0., 0., 1.], [0., -1., 0.]]),
|
||||||
|
max_ulps = 3,
|
||||||
|
);
|
||||||
|
assert_ulps_eq!(
|
||||||
|
ypr_to_mat(vec3(PI / 2., PI / 2., 0.)),
|
||||||
|
Mat3::from_cols_array_2d(&[[0., 0., 1.], [-1., 0., 0.], [0., -1., 0.]]),
|
||||||
|
max_ulps = 3,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -10,6 +10,7 @@ use winit::{
|
||||||
|
|
||||||
use crate::render::lines::{LookParams, Mesh, Pipeline, Vertex};
|
use crate::render::lines::{LookParams, Mesh, Pipeline, Vertex};
|
||||||
|
|
||||||
|
mod camera;
|
||||||
mod render;
|
mod render;
|
||||||
|
|
||||||
const TITLE: &str = "WGPU example";
|
const TITLE: &str = "WGPU example";
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user