Skip to main content

lotus_script/
math.rs

1//! Mathematik-Hilfen und Vektortypen.
2//!
3//! Math helpers and vector types.
4
5use crate::time::{delta, delta_f64};
6
7pub use lotus_shared::math::*;
8
9/// Nähert `old_value` exponentiell an `target` an (`f32`-Variante).
10///
11/// Exponentially approaches `target` from `old_value` (`f32` variant).
12pub fn exponential_approach(old_value: f32, exponent: f32, target: f32) -> f32 {
13    let factor = 1.0 - (-delta() * exponent).exp();
14    old_value + factor * (target - old_value)
15}
16
17/// Nähert `old_value` exponentiell an `target` an (`f64`-Variante).
18///
19/// Exponentially approaches `target` from `old_value` (`f64` variant).
20pub fn exponential_approach_64(old_value: f64, exponent: f64, target: f64) -> f64 {
21    let factor = 1.0 - (-delta_f64() * exponent).exp();
22    old_value + factor * (target - old_value)
23}