diff options
Diffstat (limited to 'libs/pbd/pbd/cartesian.h')
-rw-r--r-- | libs/pbd/pbd/cartesian.h | 125 |
1 files changed, 62 insertions, 63 deletions
diff --git a/libs/pbd/pbd/cartesian.h b/libs/pbd/pbd/cartesian.h index b44a12cd3d..afa4579465 100644 --- a/libs/pbd/pbd/cartesian.h +++ b/libs/pbd/pbd/cartesian.h @@ -30,74 +30,73 @@ void cart_to_azi_ele (double x, double y, double z, double& azi, double& ele); struct AngularVector; struct CartesianVector { - double x; - double y; - double z; - - CartesianVector () : x(0.0), y(0.0), z(0.0) {} - CartesianVector (double xp, double yp, double zp = 0.0) : x(xp), y(yp), z(zp) {} - - CartesianVector& translate (CartesianVector& other, double xtranslate, double ytranslate, double ztranslate = 0.0) { - other.x += xtranslate; - other.y += ytranslate; - other.z += ztranslate; - return other; - } - - CartesianVector& scale (CartesianVector& other, double xscale, double yscale, double zscale = 1.0) { - other.x *= xscale; - other.y *= yscale; - other.z *= zscale; - return other; - } - - void angular (AngularVector&) const; + double x; + double y; + double z; + + CartesianVector () : x(0.0), y(0.0), z(0.0) {} + CartesianVector (double xp, double yp, double zp = 0.0) : x(xp), y(yp), z(zp) {} + + CartesianVector& translate (CartesianVector& other, double xtranslate, double ytranslate, double ztranslate = 0.0) { + other.x += xtranslate; + other.y += ytranslate; + other.z += ztranslate; + return other; + } + + CartesianVector& scale (CartesianVector& other, double xscale, double yscale, double zscale = 1.0) { + other.x *= xscale; + other.y *= yscale; + other.z *= zscale; + return other; + } + + void angular (AngularVector&) const; }; struct AngularVector { - double azi; - double ele; - double length; - - AngularVector () : azi(0.0), ele(0.0), length (0.0) {} - AngularVector (double a, double e, double l = 1.0) : azi(a), ele(e), length (l) {} - - AngularVector operator- (const AngularVector& other) const { - AngularVector r; - r.azi = azi - other.azi; - r.ele = ele - other.ele; - r.length = length - other.length; - return r; - } - - AngularVector operator+ (const AngularVector& other) const { - AngularVector r; - r.azi = azi + other.azi; - r.ele = ele + other.ele; - r.length = length + other.length; - return r; - } - - bool operator== (const AngularVector& other) const { - return fabs (azi - other.azi) <= FLT_EPSILON && - fabs (ele - other.ele) <= FLT_EPSILON && - fabs (length - other.length) <= FLT_EPSILON; - } - - bool operator!= (const AngularVector& other) const { - return fabs (azi - other.azi) > FLT_EPSILON || - fabs (ele - other.ele) > FLT_EPSILON || - fabs (length - other.length) > FLT_EPSILON; - } - - void cartesian (CartesianVector& c) const { - azi_ele_to_cart (azi, ele, c.x, c.y, c.z); - } + double azi; + double ele; + double length; + + AngularVector () : azi(0.0), ele(0.0), length (0.0) {} + AngularVector (double a, double e, double l = 1.0) : azi(a), ele(e), length (l) {} + + AngularVector operator- (const AngularVector& other) const { + AngularVector r; + r.azi = azi - other.azi; + r.ele = ele - other.ele; + r.length = length - other.length; + return r; + } + + AngularVector operator+ (const AngularVector& other) const { + AngularVector r; + r.azi = azi + other.azi; + r.ele = ele + other.ele; + r.length = length + other.length; + return r; + } + + bool operator== (const AngularVector& other) const { + return fabs (azi - other.azi) <= FLT_EPSILON && + fabs (ele - other.ele) <= FLT_EPSILON && + fabs (length - other.length) <= FLT_EPSILON; + } + + bool operator!= (const AngularVector& other) const { + return fabs (azi - other.azi) > FLT_EPSILON || + fabs (ele - other.ele) > FLT_EPSILON || + fabs (length - other.length) > FLT_EPSILON; + } + + void cartesian (CartesianVector& c) const { + azi_ele_to_cart (azi, ele, c.x, c.y, c.z); + } }; -inline -void CartesianVector::angular (AngularVector& a) const { - cart_to_azi_ele (x, y, z, a.azi, a.ele); +inline void CartesianVector::angular (AngularVector& a) const { + cart_to_azi_ele (x, y, z, a.azi, a.ele); } } |