Trait cgmath::prelude::Angle

source ·
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§

source

fn full_turn() -> Self

A full rotation.

source

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);
source

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);
source

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);
source

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);
source

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);
source

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);
source

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);
source

fn atan2(a: Self::Unitless, b: Self::Unitless) -> Self

Provided Methods§

source

fn normalize(self) -> Self

Return the angle, normalized to the range [0, full_turn).

source

fn normalize_signed(self) -> Self

Return the angle, normalized to the range [-turn_div_2, turn_div_2).

source

fn opposite(self) -> Self

Return the angle rotated by half a turn.

source

fn bisect(self, other: Self) -> Self

Returns the interior bisector of the two angles.

source

fn turn_div_2() -> Self

Half of a full rotation.

source

fn turn_div_3() -> Self

A third of a full rotation.

source

fn turn_div_4() -> Self

A quarter of a full rotation.

source

fn turn_div_6() -> Self

A sixth of a full rotation.

source

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);
source

fn cot(self) -> Self::Unitless

Compute the cotangent of the angle.

This is the same as computing the reciprocal of Self::tan.

use cgmath::prelude::*;
use cgmath::Rad;

let angle = Rad(35.0);
let ratio: f32 = Rad::cot(angle);
source

fn sec(self) -> Self::Unitless

Compute the secant of the angle.

This is the same as computing the reciprocal of Self::cos.

use cgmath::prelude::*;
use cgmath::Rad;

let angle = Rad(35.0);
let ratio: f32 = Rad::sec(angle);

Implementors§

source§

impl<S: BaseFloat> Angle for Deg<S>

§

type Unitless = S

source§

impl<S: BaseFloat> Angle for Rad<S>

§

type Unitless = S