Trait angular_units::Angle
[−]
[src]
pub trait Angle: Clone + FromAngle<Self> + PartialEq + PartialOrd + Zero { type Scalar: Float; fn new(value: Self::Scalar) -> Self; fn period() -> Self::Scalar; fn scalar(&self) -> Self::Scalar; fn set_scalar(&mut self, value: Self::Scalar); fn normalize(self) -> Self; fn is_normalized(&self) -> bool; fn sin(self) -> Self::Scalar; fn cos(self) -> Self::Scalar; fn tan(self) -> Self::Scalar; fn sin_cos(self) -> (Self::Scalar, Self::Scalar); fn asin(value: Self::Scalar) -> Self; fn acos(value: Self::Scalar) -> Self; fn atan(value: Self::Scalar) -> Self; fn atan2(x: Self::Scalar, y: Self::Scalar) -> Self; fn full_turn() -> Self; fn half_turn() -> Self; fn quarter_turn() -> Self; fn invert(self) -> Self; fn reflect_x(self) -> Self; }
Base functionality for all angle types.
Associated Types
type Scalar: Float
Internal type storing the angle value.
Required Methods
fn new(value: Self::Scalar) -> Self
Construct a new angle.
Equivalent to constructing the tuple struct directly, eg. Deg(value)
,
but usable in a generic context.
fn period() -> Self::Scalar
The length of a full rotation.
fn scalar(&self) -> Self::Scalar
Return the scalar (unitless) value.
Equivalent to self.0
or to doing let Deg(val) = self
fn set_scalar(&mut self, value: Self::Scalar)
Set the internal scalar value of the angle.
fn normalize(self) -> Self
Normalize the angle, wrapping it back into the standard domain.
After normalization, an angle will be in the range [0, self.period())
.
For performance reasons, normalization does not happen automatically during most operations. Thus, when passing an angle to a method that expects it to be within the standard domain, first normalize the angle.
fn is_normalized(&self) -> bool
Whether the angle is in the standard domain.
fn sin(self) -> Self::Scalar
Compute the sine of an angle.
fn cos(self) -> Self::Scalar
Compute the cosine of an angle.
fn tan(self) -> Self::Scalar
Compute the tangent of an angle.
fn sin_cos(self) -> (Self::Scalar, Self::Scalar)
Simultaneously compute sine and cosine.
fn asin(value: Self::Scalar) -> Self
Compute the arcsine of a value, returning an angle.
fn acos(value: Self::Scalar) -> Self
Compute the arccosine of a value, returning an angle.
fn atan(value: Self::Scalar) -> Self
Compute the arctangent of a value, returning an angle.
fn atan2(x: Self::Scalar, y: Self::Scalar) -> Self
Compute the arctangent of a value, using information from the numerator and denominator in order to increase the domain.
fn full_turn() -> Self
Return one full rotation in some unit.
Equivalent to Self(Self::period())
.
fn half_turn() -> Self
Return one half of a full rotation in some unit.
fn quarter_turn() -> Self
Return one quarter of a full rotation in some unit.
fn invert(self) -> Self
Return the inverse of an angle.
The inverse is equivalent to adding half a rotation or inverting the unit vector pointing from the origin along the angle.
fn reflect_x(self) -> Self
Return the reflection of an angle over the x axis.
Equivalent to full_turn() - self
.
Implementors
impl<T: Float> Angle for Deg<T>
impl<T: Float> Angle for Rad<T>
impl<T: Float> Angle for Turns<T>
impl<T: Float> Angle for ArcMinutes<T>
impl<T: Float> Angle for ArcSeconds<T>