1 /*
2  * Copyright (c) 2013-2021, The OSKAR Developers.
3  * See the LICENSE file at the top-level directory of this distribution.
4  */
5 
6 #include "convert/oskar_convert_lon_lat_to_xyz.h"
7 #include <math.h>
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
oskar_convert_lon_lat_to_xyz_f(int num_points,const float * lon_rad,const float * lat_rad,float * x,float * y,float * z)13 void oskar_convert_lon_lat_to_xyz_f(int num_points, const float* lon_rad,
14         const float* lat_rad, float* x, float* y, float* z)
15 {
16     int i = 0;
17     for (i = 0; i < num_points; ++i)
18     {
19         const float cos_lon = cosf(lon_rad[i]);
20         const float sin_lon = sinf(lon_rad[i]);
21         const float cos_lat = cosf(lat_rad[i]);
22         const float sin_lat = sinf(lat_rad[i]);
23         x[i] = cos_lat * cos_lon;
24         y[i] = cos_lat * sin_lon;
25         z[i] = sin_lat;
26     }
27 }
28 
oskar_convert_lon_lat_to_xyz_d(int num_points,const double * lon_rad,const double * lat_rad,double * x,double * y,double * z)29 void oskar_convert_lon_lat_to_xyz_d(int num_points, const double* lon_rad,
30         const double* lat_rad, double* x, double* y, double* z)
31 {
32     int i = 0;
33     for (i = 0; i < num_points; ++i)
34     {
35         const double cos_lon = cos(lon_rad[i]);
36         const double sin_lon = sin(lon_rad[i]);
37         const double cos_lat = cos(lat_rad[i]);
38         const double sin_lat = sin(lat_rad[i]);
39         x[i] = cos_lat * cos_lon;
40         y[i] = cos_lat * sin_lon;
41         z[i] = sin_lat;
42     }
43 }
44 
45 #ifdef __cplusplus
46 }
47 #endif
48