From 0948938ea70784b7b0607a709a199d1acefda949 Mon Sep 17 00:00:00 2001 From: Patrick Ruoff Date: Tue, 25 Sep 2012 17:02:38 +0000 Subject: Changed centering algorithm to use proper matrix algebra. Cleaned up T6DOF structure. Updated vc_9 project files. git-svn-id: svn+ssh://svn.code.sf.net/p/facetracknoir/code@169 19e81ba0-9b1a-49c3-bd6c-561e1906d5fb --- FaceTrackNoIR/rotation.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 FaceTrackNoIR/rotation.h (limited to 'FaceTrackNoIR/rotation.h') diff --git a/FaceTrackNoIR/rotation.h b/FaceTrackNoIR/rotation.h new file mode 100644 index 00000000..967d6661 --- /dev/null +++ b/FaceTrackNoIR/rotation.h @@ -0,0 +1,31 @@ +/* Copyright (c) 2012 Patrick Ruoff + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + */ + +#ifndef ROTATION_H +#define ROTATION_H + +// ---------------------------------------------------------------------------- +class Rotation { + friend Rotation operator*(const Rotation& A, const Rotation& B); +public: + Rotation() : a(1.0),b(0.0),c(0.0),d(0.0) {} + Rotation(double yaw, double pitch, double roll) { fromEuler(yaw, pitch, roll); } + Rotation(double a, double b, double c, double d) : a(a),b(b),c(c),d(d) {} + + Rotation inv(); // inverse + + // conversions + void fromEuler(double yaw, double pitch, double roll); + void toEuler(double& yaw, double& pitch, double& roll); + +protected: + double a,b,c,d; // quaternion coefficients +}; + +Rotation operator*(const Rotation& A, const Rotation& B); // composition of rotations + +#endif //ROTATION_H -- cgit v1.2.3