Browse Source

Fix sin and cos handling for negative degrees

master
Georg Hopp 6 years ago
parent
commit
35ec5d3614
Signed by: ghopp GPG Key ID: 4C5D226768784538
  1. 12
      fractional/src/trigonometry.rs

12
fractional/src/trigonometry.rs

@ -45,7 +45,9 @@ pub trait Trig {
91 ..=180 => Self::sintab()[180 - d as usize], 91 ..=180 => Self::sintab()[180 - d as usize],
181..=270 => -Self::sintab()[d as usize - 180], 181..=270 => -Self::sintab()[d as usize - 180],
271..=359 => -Self::sintab()[360 - d as usize], 271..=359 => -Self::sintab()[360 - d as usize],
_ => Self::sin(d % 360),
_ => {
Self::sin(if d < 0 { d % 360 + 360 } else { d % 360 })
},
} }
} }
@ -56,7 +58,9 @@ pub trait Trig {
91 ..=180 => -Self::sintab()[90 - (180 - d as usize)], 91 ..=180 => -Self::sintab()[90 - (180 - d as usize)],
181..=270 => -Self::sintab()[90 - (d as usize - 180)], 181..=270 => -Self::sintab()[90 - (d as usize - 180)],
271..=359 => Self::sintab()[90 - (360 - d as usize)], 271..=359 => Self::sintab()[90 - (360 - d as usize)],
_ => Self::cos(d % 360),
_ => {
Self::cos(if d < 0 { d % 360 + 360 } else { d % 360 })
},
} }
} }
@ -64,7 +68,9 @@ pub trait Trig {
match d { match d {
0 ..=179 => Self::tantab()[d as usize], 0 ..=179 => Self::tantab()[d as usize],
180..=359 => Self::tantab()[d as usize - 180], 180..=359 => Self::tantab()[d as usize - 180],
_ => Self::tan(d % 360),
_ => {
Self::tan(if d < 0 { d % 360 + 360 } else { d % 360 })
},
} }
} }
} }

Loading…
Cancel
Save