Aether  0.0
Ionosphere-Thermosphere model
transform.h
1 // Copyright 2020, the Aether Development Team (see doc/dev_team.md for members)
2 // Full license can be found in License.md
3 
4 #ifndef INCLUDE_TRANSFORM_H_
5 #define INCLUDE_TRANSFORM_H_
6 
7 // The armadillo library is to allow the use of 3d cubes and other
8 // array types, with array math built in. This eliminates loops!
9 #include <armadillo>
10 #include "aether.h"
11 using namespace arma;
12 
13 void copy_cube_to_array(arma_cube cube_in,
14  float *array_out);
15 
16 void copy_vector_to_array(std::vector<float> vector_in,
17  int64_t nElements,
18  float *array_out);
19 
20 std::vector<arma_cube> transform_llr_to_xyz_3d(std::vector<arma_cube> llr);
21 std::vector<arma_cube> rotate_around_x_3d(std::vector<arma_cube> XYZ_in, precision_t angle);
22 std::vector<arma_cube> rotate_around_y_3d(std::vector<arma_cube> XYZ_in, precision_t angle);
23 std::vector<arma_cube> rotate_around_z_3d(std::vector<arma_cube> XYZ_in, precision_t angle);
24 
25 void transform_llr_to_xyz(precision_t llr_in[3], precision_t xyz_out[3]);
26 void transform_rot_z(precision_t xyz_in[3], precision_t angle_in, precision_t xyz_out[3]);
27 void transform_rot_y(precision_t xyz_in[3], precision_t angle_in, precision_t xyz_out[3]);
28 void transform_float_vector_to_array(std::vector<float> input,
29  precision_t output[3]);
30 
31 void transform_vector_xyz_to_env(precision_t xyz_in[3],
32  precision_t lon,
33  precision_t lat,
34  precision_t env_out[3]);
35 
36 // These are not really transformations, but are placeholders
37 
38 void vector_diff(precision_t vect_in_1[3],
39  precision_t vect_in_2[3],
40  precision_t vect_out[3]);
41 
42 
43 #endif // INCLUDE_TRANSFORM_H_
44 
45