3d.c 883 B

12345678910111213141516171819202122232425
  1. #include <math.h>
  2. #include "geometry.h"
  3. cartesian_pos_3d_t convert_to_3d_cartesian_pos(
  4. const polar_pos_3d_t* polar_pos) {
  5. cartesian_pos_3d_t result;
  6. result.x = polar_pos->length *
  7. sin_deg(polar_pos->theta) * cos_deg(polar_pos->phi);
  8. result.y = polar_pos->length *
  9. sin_deg(polar_pos->theta) * sin_deg(polar_pos->phi);
  10. result.z = polar_pos->length * cos_deg(polar_pos->theta);
  11. return result;
  12. }
  13. polar_pos_3d_t convert_to_3d_polar_pos(
  14. const cartesian_pos_3d_t* cartesian_pos) {
  15. polar_pos_3d_t result;
  16. result.length = sqrt(cartesian_pos->x * cartesian_pos->x +
  17. cartesian_pos->y * cartesian_pos->y +
  18. cartesian_pos->z * cartesian_pos->z);
  19. result.theta = to_degree(acos(cartesian_pos->z / result.length));
  20. result.phi = to_degree(atan(cartesian_pos->y / cartesian_pos->x));
  21. return result;
  22. }