00001 /* 00002 Copyright (C) 2010 - 2014 Fabian Killus, Christoph Haenisch 00003 00004 Chair of Medical Engineering (mediTEC) 00005 RWTH Aachen University 00006 Pauwelsstr. 20 00007 52074 Aachen 00008 Germany 00009 00010 Version 0.1.0 (2012-03-05) 00011 */ 00012 00018 #ifndef FIT_HPP_2938475321 00019 #define FIT_HPP_2938475321 00020 00021 #include <Eigen/Core> 00022 #include <Eigen/Dense> 00023 00024 #include "Coordinate.hpp" 00025 00026 00027 namespace TRTK 00028 { 00029 00030 00052 template <class T> 00053 class Fit 00054 { 00055 public: 00056 00057 EIGEN_MAKE_ALIGNED_OPERATOR_NEW 00058 00059 typedef T value_type; 00060 typedef Eigen::Array<T, Eigen::Dynamic, 1> ArrayXT; 00061 typedef Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> MatrixXT; 00062 typedef Eigen::Matrix<T, Eigen::Dynamic, 1> VectorXT; 00063 typedef Eigen::Matrix<T, 2, 1> Vector2T; 00064 typedef Eigen::Matrix<T, 3, 1> Vector3T; 00065 typedef Eigen::Matrix<T, 4, 1> Vector4T; 00066 typedef Eigen::Matrix<T, 2, 2> Matrix2T; 00067 typedef Eigen::Matrix<T, 3, 3> Matrix3T; 00068 00069 enum Error { 00070 DATA_POINTS_TOO_SIMILAR, 00071 INFINITY_NOT_AVAILABLE, 00072 NAN_NOT_AVAILABLE, 00073 NOT_ENOUGH_POINTS, 00074 UNKNOWN_ERROR, 00075 WRONG_POINT_SIZE 00076 }; 00077 00078 virtual ~Fit(); 00079 00080 virtual void compute() = 0; 00081 00082 virtual T getDistanceTo(const Coordinate<T> & point) const = 0; 00083 virtual T getRMS() const = 0; 00084 virtual unsigned getNumberPointsRequired() const = 0; 00085 00086 virtual void setPoints(const std::vector<Coordinate<T> > &) = 0; 00087 }; 00088 00089 00090 template <class T> 00091 Fit<T>::~Fit() 00092 { 00093 } 00094 00095 00096 } // namespace TRTK 00097 00098 00099 #endif // FIT_HPP_2938475321
Documentation generated by Doxygen