j_webgl/structs/camera/
basic.rs1use super::*;
2
3#[wasm_bindgen::prelude::wasm_bindgen]
4pub struct Basic {
5 matrix: algebra::Mat4,
6}
7
8#[wasm_bindgen::prelude::wasm_bindgen]
9impl Basic {
10 #[wasm_bindgen(constructor)]
11 pub fn new(width: f32, height: f32) -> Result<Self> {
12 let projection = algebra::Mat4::new_perspective(
13 width / height,
14 45.0 * std::f32::consts::PI / 180f32, 0.1f32,
16 200f32,
17 );
18
19 let eye = algebra::Point3::new( EYE_X, EYE_Y, EYE_Z);
20 let target = algebra::Point3::new(0.0, 0.0, 0.0);
21 let up = algebra::Vector3::new(0.0, 1.0, 0.0);
22 let view = algebra::Mat4::look_at_rh(&eye, &target, &up);
23
24 let matrix = &projection * &view;
25 Ok(Basic { matrix })
26 }
27}
28
29impl traits::Camera for Basic {
30 fn as_f32_array(&self) -> Result<&[f32]> {
31 Ok(self.matrix.as_slice())
32 }
33}