nalgebra_glm/
trigonometric.rs

1use crate::aliases::TVec;
2use crate::RealNumber;
3
4/// Component-wise arc-cosinus.
5pub fn acos<T: RealNumber, const D: usize>(x: &TVec<T, D>) -> TVec<T, D> {
6    x.map(|e| e.acos())
7}
8
9/// Component-wise hyperbolic arc-cosinus.
10pub fn acosh<T: RealNumber, const D: usize>(x: &TVec<T, D>) -> TVec<T, D> {
11    x.map(|e| e.acosh())
12}
13
14/// Component-wise arc-sinus.
15pub fn asin<T: RealNumber, const D: usize>(x: &TVec<T, D>) -> TVec<T, D> {
16    x.map(|e| e.asin())
17}
18
19/// Component-wise hyperbolic arc-sinus.
20pub fn asinh<T: RealNumber, const D: usize>(x: &TVec<T, D>) -> TVec<T, D> {
21    x.map(|e| e.asinh())
22}
23
24/// Component-wise arc-tangent of `y / x`.
25pub fn atan2<T: RealNumber, const D: usize>(y: &TVec<T, D>, x: &TVec<T, D>) -> TVec<T, D> {
26    y.zip_map(x, |y, x| y.atan2(x))
27}
28
29/// Component-wise arc-tangent.
30pub fn atan<T: RealNumber, const D: usize>(y_over_x: &TVec<T, D>) -> TVec<T, D> {
31    y_over_x.map(|e| e.atan())
32}
33
34/// Component-wise hyperbolic arc-tangent.
35pub fn atanh<T: RealNumber, const D: usize>(x: &TVec<T, D>) -> TVec<T, D> {
36    x.map(|e| e.atanh())
37}
38
39/// Component-wise cosinus.
40pub fn cos<T: RealNumber, const D: usize>(angle: &TVec<T, D>) -> TVec<T, D> {
41    angle.map(|e| e.cos())
42}
43
44/// Component-wise hyperbolic cosinus.
45pub fn cosh<T: RealNumber, const D: usize>(angle: &TVec<T, D>) -> TVec<T, D> {
46    angle.map(|e| e.cosh())
47}
48
49/// Component-wise conversion from radians to degrees.
50pub fn degrees<T: RealNumber, const D: usize>(radians: &TVec<T, D>) -> TVec<T, D> {
51    radians.map(|e| e * na::convert(180.0) / T::pi())
52}
53
54/// Component-wise conversion from degrees to radians.
55pub fn radians<T: RealNumber, const D: usize>(degrees: &TVec<T, D>) -> TVec<T, D> {
56    degrees.map(|e| e * T::pi() / na::convert(180.0))
57}
58
59/// Component-wise sinus.
60pub fn sin<T: RealNumber, const D: usize>(angle: &TVec<T, D>) -> TVec<T, D> {
61    angle.map(|e| e.sin())
62}
63
64/// Component-wise hyperbolic sinus.
65pub fn sinh<T: RealNumber, const D: usize>(angle: &TVec<T, D>) -> TVec<T, D> {
66    angle.map(|e| e.sinh())
67}
68
69/// Component-wise tangent.
70pub fn tan<T: RealNumber, const D: usize>(angle: &TVec<T, D>) -> TVec<T, D> {
71    angle.map(|e| e.tan())
72}
73
74/// Component-wise hyperbolic tangent.
75pub fn tanh<T: RealNumber, const D: usize>(angle: &TVec<T, D>) -> TVec<T, D> {
76    angle.map(|e| e.tanh())
77}