pub trait Anglewhere
Self: Copy + Clone + PartialEq + PartialOrd + AbsDiffEq<Epsilon = Self::Unitless> + RelativeEq<Epsilon = Self::Unitless> + UlpsEq<Epsilon = Self::Unitless> + Zero + Neg<Output = Self> + Add<Self, Output = Self> + Sub<Self, Output = Self> + Rem<Self, Output = Self> + Mul<Self::Unitless, Output = Self> + Div<Self, Output = Self::Unitless> + Div<Self::Unitless, Output = Self> + Sum,{
type Unitless: BaseFloat;
Show 20 methods
// Required methods
fn full_turn() -> Self;
fn sin(self) -> Self::Unitless;
fn cos(self) -> Self::Unitless;
fn tan(self) -> Self::Unitless;
fn sin_cos(self) -> (Self::Unitless, Self::Unitless);
fn asin(ratio: Self::Unitless) -> Self;
fn acos(ratio: Self::Unitless) -> Self;
fn atan(ratio: Self::Unitless) -> Self;
fn atan2(a: Self::Unitless, b: Self::Unitless) -> Self;
// Provided methods
fn normalize(self) -> Self { ... }
fn normalize_signed(self) -> Self { ... }
fn opposite(self) -> Self { ... }
fn bisect(self, other: Self) -> Self { ... }
fn turn_div_2() -> Self { ... }
fn turn_div_3() -> Self { ... }
fn turn_div_4() -> Self { ... }
fn turn_div_6() -> Self { ... }
fn csc(self) -> Self::Unitless { ... }
fn cot(self) -> Self::Unitless { ... }
fn sec(self) -> Self::Unitless { ... }
}
Expand description
Angles and their associated trigonometric functions.
Typed angles allow for the writing of self-documenting code that makes it clear when semantic violations have occured - for example, adding degrees to radians, or adding a number to an angle.
Required Associated Types§
Required Methods§
sourcefn sin(self) -> Self::Unitless
fn sin(self) -> Self::Unitless
Compute the sine of the angle, returning a unitless ratio.
use cgmath::prelude::*;
use cgmath::Rad;
let angle = Rad(35.0);
let ratio: f32 = Rad::sin(angle);
sourcefn cos(self) -> Self::Unitless
fn cos(self) -> Self::Unitless
Compute the cosine of the angle, returning a unitless ratio.
use cgmath::prelude::*;
use cgmath::Rad;
let angle = Rad(35.0);
let ratio: f32 = Rad::cos(angle);
sourcefn tan(self) -> Self::Unitless
fn tan(self) -> Self::Unitless
Compute the tangent of the angle, returning a unitless ratio.
use cgmath::prelude::*;
use cgmath::Rad;
let angle = Rad(35.0);
let ratio: f32 = Rad::tan(angle);
sourcefn sin_cos(self) -> (Self::Unitless, Self::Unitless)
fn sin_cos(self) -> (Self::Unitless, Self::Unitless)
Compute the sine and cosine of the angle, returning the result as a pair.
This does not have any performance benefits, but calculating both the sine and cosine of a single angle is a common operation.
use cgmath::prelude::*;
use cgmath::Rad;
let angle = Rad(35.0);
let (s, c) = Rad::sin_cos(angle);
sourcefn asin(ratio: Self::Unitless) -> Self
fn asin(ratio: Self::Unitless) -> Self
Compute the arcsine of the ratio, returning the resulting angle.
use cgmath::prelude::*;
use cgmath::Rad;
let angle: Rad<f32> = Rad::asin(0.5);
sourcefn acos(ratio: Self::Unitless) -> Self
fn acos(ratio: Self::Unitless) -> Self
Compute the arccosine of the ratio, returning the resulting angle.
use cgmath::prelude::*;
use cgmath::Rad;
let angle: Rad<f32> = Rad::acos(0.5);
sourcefn atan(ratio: Self::Unitless) -> Self
fn atan(ratio: Self::Unitless) -> Self
Compute the arctangent of the ratio, returning the resulting angle.
use cgmath::prelude::*;
use cgmath::Rad;
let angle: Rad<f32> = Rad::atan(0.5);
fn atan2(a: Self::Unitless, b: Self::Unitless) -> Self
Provided Methods§
sourcefn normalize_signed(self) -> Self
fn normalize_signed(self) -> Self
Return the angle, normalized to the range [-turn_div_2, turn_div_2)
.
sourcefn turn_div_2() -> Self
fn turn_div_2() -> Self
Half of a full rotation.
sourcefn turn_div_3() -> Self
fn turn_div_3() -> Self
A third of a full rotation.
sourcefn turn_div_4() -> Self
fn turn_div_4() -> Self
A quarter of a full rotation.
sourcefn turn_div_6() -> Self
fn turn_div_6() -> Self
A sixth of a full rotation.
sourcefn csc(self) -> Self::Unitless
fn csc(self) -> Self::Unitless
Compute the cosecant of the angle.
This is the same as computing the reciprocal of Self::sin
.
use cgmath::prelude::*;
use cgmath::Rad;
let angle = Rad(35.0);
let ratio: f32 = Rad::csc(angle);