Added quat(v1,v2) support.
[libecef.git] / include / ecef-quaternion.h
index d43ba7e..3ca9350 100644 (file)
@@ -26,11 +26,12 @@ namespace ecef
 
 struct quat
   {
-  double a;
+  double a;    // cos(Angle / 2)
   vec v;
  
   quat() {a=0.0; v=zAxis;}
   quat(const double a, const vec v) {this->a=a; this->v=v;}
+  quat(const vec v1, const vec v2) {a=v1.dot(v2); v=zAxis; if (abs(a)<(1-toleranceLimit)) {a=sqrt((1+a)/2); v=v1.cross(v2);}}
 
   quat operator*(const quat q) const {return quat(a*q.a - v.dot(q.v), q.v*a + v*q.a + v.cross(q.v));}
   quat operator*(const double s) const {return quat(a*s, v*s);}