Expand description
This crate provides two types (Angle
and AngleUnbounded
) that both represent an angle value
with no specific unit (radian, degree, etc.).
They can be used in place of f32
and f64
for angle manipulations.
Angle
vs AngleUnbounded
Angle
is a specific point of the circle.
let a = Angle::from_degrees(90.0);
let b = Angle::from_degrees(450.0);
assert_eq!(a, b);
While AngleUnbounded
preserves the “number of turns”.
let a = AngleUnbounded::from_degrees(90.0);
let b = AngleUnbounded::from_degrees(450.0);
assert_ne!(a, b);
The main range
The main range for an angle is :
(-π, π]
radians(-180, 180]
degrees(-0.5, 0.5]
turns(-200, 200]
gradians
Display
Since Angle
and AngleUnbounded
are unit-agnostic, they cannot implement the Display
trait.
To display an angle with a specific unit, wrap it in one of the unit struct of the units
module.
Crate features
std
: by default angulus links to the standard library. Disable this feature to remove this dependency and be able to use angulus in#![no_std]
crates.libm
: use the libm crate for the math methods (sin, cos, tan) whenstd
is disabled.serde
: enable serialization and deserialization with the serde crate.rand
: enable generation of random angle with the rand crate.
Modules
- Defines which types can be used as a floating-point value for the angle.
- rand
rand
Generate random angles with the rand crate. - serde
serde
(De)Serialization with the serde crate. - Wrappers to represent an angle with a specific unit.
Structs
- Represents a point on the circle as a unit-agnostic angle.
- Represents a point on the circle as a unit-agnostic angle.
Traits
- Helper trait to convert a numerical value into an angle.
Type Aliases
- Type alias for
Angle::<f32>
. - Type alias for
Angle::<f64>
. - Type alias for
AngleUnbounded::<f32>
. - Type alias for
AngleUnbounded::<f64>
.