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