14 lines
315 B
Rust

use super::types::Vector3;
extern crate nalgebra as na;
/// Reflects a vector `v` around a normal `n`.
pub fn reflect(v: Vector3, n: Vector3) -> Vector3 {
v - 2.0 * v.dot(&n) * n
}
/// Mirrors a vector `v` around a normal `n`.
pub fn mirror(v: Vector3, n: Vector3) -> Vector3 {
2.0 * v.dot(&n) * n - v
}