trig.rs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. use macros::insert_lookup_tables;
  2. pub use shared::consts::trig::*;
  3. pub use shared::radian;
  4. insert_lookup_tables!();
  5. pub fn cos(degrees: i32) -> i32 {
  6. COS[degrees as usize]
  7. }
  8. pub fn sin(degrees: i32) -> i32 {
  9. SIN[degrees as usize]
  10. }
  11. pub fn tan(degrees: i32) -> i32 {
  12. TAN[degrees as usize]
  13. }
  14. pub fn icos(degrees: i32) -> i32 {
  15. ICOS[degrees as usize]
  16. }
  17. pub fn isin(degrees: i32) -> i32 {
  18. ISIN[degrees as usize]
  19. }
  20. pub fn itan(degrees: i32) -> i32 {
  21. ITAN[degrees as usize]
  22. }
  23. pub fn x_step(degrees: i32) -> i32 {
  24. X_STEP[degrees as usize]
  25. }
  26. pub fn y_step(degrees: i32) -> i32 {
  27. Y_STEP[degrees as usize]
  28. }
  29. pub fn fisheye_correction(degrees: i32) -> i32 {
  30. FISHEYE[degrees as usize]
  31. }
  32. pub fn wall_height(distance: i32) -> i32 {
  33. WALL_HEIGHT[distance.min(shared::consts::MAX_RAY_LENGTH) as usize]
  34. }
  35. pub fn wall_texture_index(height: i32) -> &'static [usize] {
  36. let true_i = height - shared::consts::render::WALL_HEIGHT_MIN;
  37. let head: usize = (true_i * shared::consts::display::PROJECTION_PLANE_HEIGHT) as usize;
  38. let tail: usize = head + shared::consts::display::PROJECTION_PLANE_HEIGHT as usize;
  39. &WALL_TEXTURE_INDEX[head..tail]
  40. }