Files
OpenGL_Intro/src/toolbox.rs

37 lines
1.1 KiB
Rust

extern crate nalgebra_glm as glm;
use std::f64::consts::PI;
pub struct Heading {
pub x : f32,
pub z : f32,
pub roll : f32, // measured in radians
pub pitch : f32, // measured in radians
pub yaw : f32, // measured in radians
}
pub fn simple_heading_animation(time: f32) -> Heading {
let t = time as f64;
let step = 0.05f64;
let path_size = 15f64;
let circuit_speed = 0.8f64;
let xpos = path_size * (2.0 * (t+ 0.0) * circuit_speed).sin();
let xpos_next = path_size * (2.0 * (t+step) * circuit_speed).sin();
let zpos = 3.0 * path_size * ((t+ 0.0) * circuit_speed).cos();
let zpos_next = 3.0 * path_size * ((t+step) * circuit_speed).cos();
let delta_pos = glm::vec2(xpos_next - xpos, zpos_next - zpos);
let roll = (t * circuit_speed).cos() * 0.5;
let pitch = -0.175 * glm::length(&delta_pos);
let yaw = PI + delta_pos.x.atan2(delta_pos.y);
Heading {
x : xpos as f32,
z : zpos as f32,
roll : roll as f32,
pitch : pitch as f32,
yaw : yaw as f32,
}
}