Skip to main content

anput_physics/
utils.rs

1use crate::Scalar;
2use vek::{Quaternion, Vec3};
3
4pub fn quat_from_axis_angle(axis: Vec3<Scalar>, angle: Scalar) -> Quaternion<Scalar> {
5    let half_angle = angle * 0.5;
6    let (sin_half, cos_half) = half_angle.sin_cos();
7    let axis = axis.normalized();
8
9    Quaternion {
10        x: axis.x * sin_half,
11        y: axis.y * sin_half,
12        z: axis.z * sin_half,
13        w: cos_half,
14    }
15}