diff options
| author | mat <git@matdoes.dev> | 2023-09-10 18:18:49 -0500 |
|---|---|---|
| committer | mat <git@matdoes.dev> | 2023-09-10 18:18:49 -0500 |
| commit | 5f8704ccc51d75a05a2441fdd1a8cc9e2ff90173 (patch) | |
| tree | 6df7a21a428a99db15438bb2af87de71936bab27 /azalea-core/src | |
| parent | 4885f848a4716987e0e3b30e14952aa9ea0b2647 (diff) | |
| download | azalea-drasl-5f8704ccc51d75a05a2441fdd1a8cc9e2ff90173.tar.xz | |
fix physics bugs
Diffstat (limited to 'azalea-core/src')
| -rwxr-xr-x | azalea-core/src/lib.rs | 1 | ||||
| -rw-r--r-- | azalea-core/src/math.rs | 24 |
2 files changed, 25 insertions, 0 deletions
diff --git a/azalea-core/src/lib.rs b/azalea-core/src/lib.rs index 8ed62b06..6554d71d 100755 --- a/azalea-core/src/lib.rs +++ b/azalea-core/src/lib.rs @@ -1,6 +1,7 @@ #![doc = include_str!("../README.md")] #![feature(int_roundings)] #![feature(const_for)] +#![feature(lazy_cell)] #![allow(incomplete_features)] #![feature(generic_const_exprs)] diff --git a/azalea-core/src/math.rs b/azalea-core/src/math.rs index 2e5e78f6..40d147e4 100644 --- a/azalea-core/src/math.rs +++ b/azalea-core/src/math.rs @@ -1,3 +1,27 @@ +use std::sync::LazyLock; + +pub static SIN: LazyLock<[f32; 65536]> = LazyLock::new(|| { + let mut sin = [0.0; 65536]; + for i in 0..65536 { + sin[i] = f64::sin((i as f64) * 3.141592653589793 * 2.0 / 65536.0) as f32; + } + sin +}); + +/// A sine function that uses a lookup table. +pub fn sin(var0: f32) -> f32 { + let var0 = var0 * 10430.378; + let var0 = var0 as usize; + SIN[var0 & 65535] +} + +/// A cosine function that uses a lookup table. +pub fn cos(var0: f32) -> f32 { + let var0 = var0 * 10430.378 + 16384.0; + let var0 = var0 as usize; + SIN[var0 & 65535] +} + // TODO: make this generic pub fn binary_search(mut min: i32, max: i32, predicate: &dyn Fn(i32) -> bool) -> i32 { let mut diff = max - min; |
