master
ブランチ master
ShaderPlayground / deps / glm / glm / gtx / polar_coordinates.inl
734 B、36行 生 Blame 履歴
1/// @ref gtx_polar_coordinates
2
3namespace glm
4{
5 template<typename T, qualifier Q>
6 GLM_FUNC_QUALIFIER vec<3, T, Q> polar
7 (
8 vec<3, T, Q> const& euclidean
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