use num::Float;
pub const K_ZERO_SIZE: usize = 0;
pub const K_ZERO_SSIZE: isize = 0;
pub fn zero<T: Float>() -> T {
return T::from(0.0).unwrap();
}
pub const K_ONE_SIZE: usize = 1;
pub const K_ONE_SSIZE: isize = 1;
pub fn one<T: Float>() -> T {
return T::from(1.0).unwrap();
}
pub const K_EPSILON_F: f32 = f32::EPSILON;
pub const K_EPSILON_D: f64 = f64::EPSILON;
pub const K_MAX_SIZE: usize = usize::MAX;
pub const K_MAX_SSIZE: isize = isize::MAX;
pub const K_MAX_F: f32 = f32::MAX;
pub const K_MAX_D: f64 = f64::MAX;
pub const K_PI_F: f32 = std::f32::consts::PI;
pub const K_PI_D: f64 = std::f64::consts::PI;
pub fn pi<T: Float>() -> T {
return T::from(K_PI_D).unwrap();
}
pub const K_HALF_PI_F: f32 = std::f32::consts::FRAC_PI_2;
pub const K_HALF_PI_D: f64 = std::f64::consts::FRAC_PI_2;
pub fn half_pi<T: Float>() -> T {
return T::from(K_HALF_PI_D).unwrap();
}
pub const K_QUARTER_PI_F: f32 = std::f32::consts::FRAC_PI_4;
pub const K_QUARTER_PI_D: f64 = std::f64::consts::FRAC_PI_4;
pub fn quarter_pi<T: Float>() -> T {
return T::from(K_QUARTER_PI_D).unwrap();
}
pub const K_TWO_PI_F: f32 = std::f32::consts::TAU;
pub const K_TWO_PI_D: f64 = std::f64::consts::TAU;
pub fn two_pi<T: Float>() -> T {
return T::from(K_TWO_PI_D).unwrap();
}
pub const K_FOUR_PI_F: f32 = 2.0 * std::f32::consts::TAU;
pub const K_FOUR_PI_D: f64 = 2.0 * std::f64::consts::TAU;
pub fn four_pi<T: Float>() -> T {
return T::from(K_FOUR_PI_D).unwrap();
}
pub const K_INV_PI_F: f32 = std::f32::consts::FRAC_1_PI;
pub const K_INV_PI_D: f64 = std::f64::consts::FRAC_1_PI;
pub fn inv_pi<T: Float>() -> T {
return T::from(K_INV_PI_D).unwrap();
}
pub const K_INV_TWO_PI_F: f32 = std::f32::consts::FRAC_1_PI * 0.5;
pub const K_INV_TWO_PI_D: f64 = std::f64::consts::FRAC_1_PI * 0.5;
pub fn inv_two_pi<T: Float>() -> T {
return T::from(K_INV_TWO_PI_D).unwrap();
}
pub const K_INV_FOUR_PI_F: f32 = std::f32::consts::FRAC_1_PI * 0.25;
pub const K_INV_FOUR_PI_D: f64 = std::f64::consts::FRAC_1_PI * 0.25;
pub fn inv_four_pi<T: Float>() -> T {
return T::from(K_INV_FOUR_PI_D).unwrap();
}
pub const K_GRAVITY: f64 = -9.8;
pub const K_WATER_DENSITY: f64 = 1000.0;
pub const K_SPEED_OF_SOUND_IN_WATER: f64 = 1482.0;
pub const K_DIRECTION_NONE: i32 = 0;
pub const K_DIRECTION_LEFT: i32 = 1 << 0;
pub const K_DIRECTION_RIGHT: i32 = 1 << 1;
pub const K_DIRECTION_DOWN: i32 = 1 << 2;
pub const K_DIRECTION_UP: i32 = 1 << 3;
pub const K_DIRECTION_BACK: i32 = 1 << 4;
pub const K_DIRECTION_FRONT: i32 = 1 << 5;
pub const K_DIRECTION_ALL: i32 = K_DIRECTION_LEFT | K_DIRECTION_RIGHT |
K_DIRECTION_DOWN | K_DIRECTION_UP | K_DIRECTION_BACK |
K_DIRECTION_FRONT;