Add a couple of pthread helper macros
[ardour.git] / libs / pbd / pbd / cartesian.h
index afa4579465d48e27bd22116a3df3cdaa48f77b56..5f0b951d5f5d7e3785477b9c0738b14056d7ddb8 100644 (file)
 #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;
@@ -51,10 +53,10 @@ struct CartesianVector {
                return other;
        }
 
-       void angular (AngularVector&) const;
+       inline void angular (AngularVector& a) const;
 };
 
-struct AngularVector {
+struct LIBPBD_API AngularVector {
        double azi;
        double ele;
        double length;
@@ -91,12 +93,12 @@ struct AngularVector {
        }
 
        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);
 }
 
 }