Clutter Engine 0.0.1
Loading...
Searching...
No Matches
polar_coordinates.inl
1
2
3namespace glm
4{
5 template<typename T, qualifier Q>
6 GLM_FUNC_QUALIFIER vec<3, T, Q> polar
7 (
9 )
10 {
11 T const Length(length(euclidean));
12 vec<3, T, Q> const tmp(euclidean / Length);
13 T const xz_dist(sqrt(tmp.x * tmp.x + tmp.z * tmp.z));
14
15 return vec<3, T, Q>(
16 asin(tmp.y), // latitude
17 atan(tmp.x, tmp.z), // longitude
18 xz_dist); // xz distance
19 }
20
21 template<typename T, qualifier Q>
22 GLM_FUNC_QUALIFIER vec<3, T, Q> euclidean
23 (
24 vec<2, T, Q> const& polar
25 )
26 {
27 T const latitude(polar.x);
28 T const longitude(polar.y);
29
30 return vec<3, T, Q>(
31 cos(latitude) * sin(longitude),
32 sin(latitude),
33 cos(latitude) * cos(longitude));
34 }
35
36}//namespace glm
GLM_FUNC_QUALIFIER vec< L, T, Q > sqrt(vec< L, T, Q > const &x)
Definition func_exponential.inl:128
GLM_FUNC_QUALIFIER vec< L, T, Q > sin(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:41
GLM_FUNC_QUALIFIER vec< L, T, Q > cos(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:50
GLM_FUNC_QUALIFIER vec< L, T, Q > asin(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:68
GLM_FUNC_DECL vec< 3, T, Q > polar(vec< 3, T, Q > const &euclidean)
Definition polar_coordinates.inl:7
GLM_FUNC_DECL vec< 3, T, Q > euclidean(vec< 2, T, Q > const &polar)
Definition polar_coordinates.inl:23
Core features
Definition common.hpp:21
Definition qualifier.hpp:35