#include <cfloat>
#include <cmath>
+#include "pbd/libpbd_visibility.h"
+
namespace PBD {
-void azi_ele_to_cart (double azi, double ele, double& x, double& y, double& z);
-void cart_to_azi_ele (double x, double y, double z, double& azi, double& ele);
+LIBPBD_API void spherical_to_cartesian (double azi, double ele, double len, double& x, double& y, double& z);
+LIBPBD_API void cartesian_to_spherical (double x, double y, double z, double& azi, double& ele, double& len);
struct AngularVector;
-struct CartesianVector {
+struct LIBPBD_API CartesianVector {
double x;
double y;
double z;
return other;
}
- void angular (AngularVector&) const;
+ inline void angular (AngularVector& a) const;
};
-struct AngularVector {
+struct LIBPBD_API AngularVector {
double azi;
double ele;
double length;
}
void cartesian (CartesianVector& c) const {
- azi_ele_to_cart (azi, ele, c.x, c.y, c.z);
+ spherical_to_cartesian (azi, ele, length, c.x, c.y, c.z);
}
};
inline void CartesianVector::angular (AngularVector& a) const {
- cart_to_azi_ele (x, y, z, a.azi, a.ele);
+ cartesian_to_spherical (x, y, z, a.azi, a.ele, a.length);
}
}