pub trait Angle:
Clone
+ FromAngle<Self>
+ PartialEq
+ PartialOrd
+ Zero {
type Scalar: Float;
Show 19 methods
// Required methods
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;
}
Expand description
Base functionality for all angle types.
Required Associated Types§
Required Methods§
Sourcefn new(value: Self::Scalar) -> Self
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.
Sourcefn scalar(&self) -> Self::Scalar
fn scalar(&self) -> Self::Scalar
Return the scalar (unitless) value.
Equivalent to self.0
or to doing let Deg(val) = self
Sourcefn set_scalar(&mut self, value: Self::Scalar)
fn set_scalar(&mut self, value: Self::Scalar)
Set the internal scalar value of the angle.
Sourcefn normalize(self) -> Self
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.
Sourcefn is_normalized(&self) -> bool
fn is_normalized(&self) -> bool
Whether the angle is in the standard domain.
Sourcefn atan2(x: Self::Scalar, y: Self::Scalar) -> Self
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.
Sourcefn full_turn() -> Self
fn full_turn() -> Self
Return one full rotation in some unit.
Equivalent to Self(Self::period())
.
Sourcefn quarter_turn() -> Self
fn quarter_turn() -> Self
Return one quarter of a full rotation in some unit.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.