use wasm_bindgen::prelude::*;
#[derive(Debug, Clone, Copy, PartialEq)]
#[wasm_bindgen]
pub enum AyanamshaMode {
FaganBradley = 0,
Lahiri = 1,
DeLuce = 2,
Raman = 3,
Krishnamurti = 5,
Yukteshwar = 7,
JNBhasin = 8,
TrueCitra = 27,
}
impl AyanamshaMode {
pub fn from_i32(val: i32) -> Self {
match val {
0 => AyanamshaMode::FaganBradley,
1 => AyanamshaMode::Lahiri,
2 => AyanamshaMode::DeLuce,
3 => AyanamshaMode::Raman,
5 => AyanamshaMode::Krishnamurti,
7 => AyanamshaMode::Yukteshwar,
8 => AyanamshaMode::JNBhasin,
27 => AyanamshaMode::TrueCitra,
_ => AyanamshaMode::Lahiri,
}
}
pub fn to_swe_mode(&self) -> i32 {
*self as i32
}
}
#[wasm_bindgen]
pub fn get_ayanamsha(mode: AyanamshaMode, jd: f64) -> f64 {
let swe_mode = match mode {
AyanamshaMode::FaganBradley => swiss_eph::safe::SiderealMode::FaganBradley,
AyanamshaMode::Lahiri => swiss_eph::safe::SiderealMode::Lahiri,
AyanamshaMode::DeLuce => swiss_eph::safe::SiderealMode::DeLuce,
AyanamshaMode::Raman => swiss_eph::safe::SiderealMode::Raman,
AyanamshaMode::Krishnamurti => swiss_eph::safe::SiderealMode::Krishnamurti,
AyanamshaMode::Yukteshwar => swiss_eph::safe::SiderealMode::Yukteshwar,
AyanamshaMode::JNBhasin => swiss_eph::safe::SiderealMode::JNBhasin,
AyanamshaMode::TrueCitra => swiss_eph::safe::SiderealMode::TrueCitra,
};
swiss_eph::safe::set_sidereal_mode(swe_mode);
swiss_eph::safe::get_ayanamsa(jd)
}
pub fn tropical_to_sidereal(tropical_long: f64, ayanamsha: f64) -> f64 {
let mut sidereal = tropical_long - ayanamsha;
if sidereal < 0.0 {
sidereal += 360.0;
}
sidereal % 360.0
}