00001 #ifndef LOPER_INTRINSICSEXTRINSICSCONTAINER
00002 #define LOPER_INTRINSICSEXTRINSICSCONTAINER
00003
00014 #include <gsl/gsl_multifit_nlin.h>
00015
00016 #include "GslMatrix.hpp"
00017
00018
00021 class IntrinsicsExtrinsicsContainer : public GslVector
00022 {
00023 public:
00024 IntrinsicsExtrinsicsContainer()
00025 {
00026 resize(7);
00027 }
00028
00029 double & alpha() { return this->at(0); }
00030 double & skewness() { return this->at(1); }
00031 double & u0() { return this->at(2); }
00032 double & beta() { return this->at(3); }
00033 double & v0() { return this->at(4); }
00034 double & k0() { return this->at(5); }
00035 double & k1() { return this->at(6); }
00036
00037 double alpha() const { return this->at(0); }
00038 double skewness() const { return this->at(1); }
00039 double u0() const { return this->at(2); }
00040 double beta() const { return this->at(3); }
00041 double v0() const { return this->at(4); }
00042 double k0() const { return this->at(5); }
00043 double k1() const { return this->at(6); }
00044
00045 void setNumExtrinsics (unsigned int n) { resize (7 + 6 * n); }
00046 void setRotation (unsigned int index, const GslVector &v);
00047 void setTranslation(unsigned int index, const GslVector &v);
00048
00049 GslMatrix getExtrinsicsMatrix(unsigned int imageIdx) const;
00050 GslMatrix getIntrinsicsMatrix() const;
00051 GslVector getRotation (unsigned int imageIdx) const;
00052 GslVector getTranslation(unsigned int imageIdx) const;
00053 GslMatrix getTransformation(unsigned int imageIdx) const;
00054
00055 private:
00056 void resize(unsigned int rows) { GslVector::resize(rows); }
00057 };
00058
00059
00060 #endif // LOPER_INTRINSICSEXTRINSICSCONTAINER