Float quaternion Transform
From OpenLuna
qtransr(float *q,float *r, float *qrq) /* transform (rotate) a vector */ /* represented by quotonian (0,vx,vy,vz) */ /* by a qutonian q rnew = q*rold*qconj */ /* this routine uses subcall, might be */ /* faster by individual eqns */ /* ges 042709 */ { float qr[4],qc[4]; qconj(q,qc); qdotq(q,r,qr); /* qr = q dot r */ qdotq(qr,qc,qrq); /* qrq= (q dot r) dot qconj */ } /* end qtransr */