23 #ifndef ROOTCOORDINATETRANSFORM_HH 24 #define ROOTCOORDINATETRANSFORM_HH 31 #include <blitz/array.h> 35 #include <opencv2/core/core.hpp> 36 #include <opencv2/imgproc/imgproc.hpp> 46 const blitz::TinyVector<double,3>& qcPosition,
47 const std::vector< blitz::TinyVector<double,3> >&
controlPoints);
50 const blitz::TinyVector<double,3>& qcPosition,
const blitz::TinyVector<double,3>& pointOnAxis,
51 const std::vector< blitz::TinyVector<double,3> >& points,
52 const size_t nSegments);
56 void refineModel(
const std::vector< blitz::TinyVector<double,3> >& points);
59 const blitz::TinyVector<double,3>& pos);
62 const blitz::TinyVector<double,3>& pos);
65 const blitz::TinyVector<double, 3>& pos);
67 const std::vector< blitz::TinyVector<double,3> >&
controlPoints()
const;
69 void drawFittingResult(blitz::Array<char,3>& paper,blitz::TinyVector<double, 3>& elSize);
71 void extractLocalAxis(
const blitz::TinyVector<double,3>& origin, blitz::TinyVector<double,3>& xAxis, blitz::TinyVector<double,3>& yAxis, blitz::TinyVector<double,3>& zAxis);
73 void extractLocalAxis(
const blitz::TinyVector<double,3>& origin, blitz::Array<double,2>& axes);
77 void save(
const std::string& fileName,
const std::string& groupName)
const;
78 void load(
const std::string& fileName,
const std::string& groupName);
84 void extrapolateControlPoints(
int tail);
85 void smoothControlPoints(
int tail);
88 blitz::TinyVector<double,3> normalizedCoordinates(
89 const blitz::TinyVector<double,3>& pos,
90 const size_t segment);
92 blitz::TinyVector<double,3> denormalizedCoordinates(
93 const blitz::TinyVector<double,3>& pos,
94 const size_t segment);
96 double computeDistanceToLine(
97 const blitz::TinyVector<double,3>& pos,
99 double& offset,
double& radialDistance,
double& angle);
101 double computeDistanceToLineSegment(
102 const blitz::TinyVector<double,3>& pos,
103 const size_t segment,
104 double& offset,
double& radialDistance,
double& angle);
106 void updateDerivedVariables();
108 blitz::TinyVector<double,3> _qcPos;
109 std::vector< blitz::TinyVector<double,3> > _controlPoints;
111 std::vector< blitz::TinyVector<double,3> > _segments;
112 std::vector<double> _segmentStartOffset;
113 std::vector< blitz::TinyVector<double,3> > _segmentDirection;
114 std::vector<double> _segmentLength;
115 std::vector< blitz::TinyVector<double,3> > _axis;
116 std::vector<double> _angle;
117 double _minX,_maxX,_step;
119 std::vector<double> _ra;
120 std::vector<double> _rb;
121 std::vector<double> _angleToAxis;
122 std::vector<blitz::Array<double,2> > _eT;
123 std::vector<blitz::Array<double,2> > _eTinv;