23 #ifndef SHELLCOORDINATETRANSFORM_HH 24 #define SHELLCOORDINATETRANSFORM_HH 31 #include <blitz/array.h> 32 #include <opencv2/core/core.hpp> 33 #include <opencv2/imgproc/imgproc.hpp> 49 std::vector< blitz::TinyVector<double,3> >
const &points,
50 double lSegments,
double margin,
51 bool QCset, blitz::TinyVector<double,3>
const &QC,
52 bool Xset, blitz::TinyVector<double,3>
const &X,
58 std::vector< blitz::TinyVector<double,3> >
const &points,
59 double lSegments,
double margin,
60 bool QCset, blitz::TinyVector<double,3>
const &QC,
61 bool Xset, blitz::TinyVector<double,3>
const &X,
65 std::vector< blitz::TinyVector<double,3> >
const &points,
75 blitz::TinyVector<double,3>
const &pos)
const;
78 blitz::TinyVector<double,3>
const &pos)
const;
80 blitz::Array<blitz::TinyVector<double,3>,1>
const &
controlPoints()
const;
89 void save(std::string
const &fileName, std::string
const &groupName)
const;
91 void load(std::string
const &fileName, std::string
const &groupName);
95 blitz::TinyVector<double,3> normalizedCoordinates(
96 blitz::TinyVector<double,3>
const &pos,
int controlPoint)
const;
98 blitz::TinyVector<double,3> denormalizedCoordinates(
99 blitz::TinyVector<double,3>
const &pos,
int controlPoint)
const;
101 double computeDistanceToLine(
102 blitz::TinyVector<double,3>
const &pos,
int segment,
103 double &offset,
double &radialDistance,
double &angle)
const;
105 double computeDistanceToLineSegment(
106 blitz::TinyVector<double,3>
const &pos,
int segment,
107 double &offset,
double &radialDistance,
double &angle)
const;
109 void updateDerivedVariables();
111 void smoothControlPoints(
int tail);
113 void smoothControlEllipses(
int tail);
119 blitz::Array<blitz::TinyVector<double,3>,1> _controlPoints;
122 blitz::Array<blitz::TinyMatrix<double,3,3>,1> _controlAxes;
125 blitz::Array<blitz::TinyVector<double,3>,1> _segments;
128 blitz::Array<double,1> _controlPointOffset;
131 blitz::Array<blitz::TinyVector<double,3>,1> _segmentDirection;
134 blitz::Array<double,1> _segmentLength;
138 blitz::Array<blitz::TinyVector<double,3>,1> _axis;
141 blitz::Array<double,1> _angle;
145 double _minX, _maxX, _step, _margin;
148 blitz::Array<double,1> _ra;
149 blitz::Array<double,1> _rb;
150 blitz::Array<double,1> _angleToAxis;
151 blitz::Array<blitz::TinyMatrix<double,2,2>,1> _controlEllipses;
153 ptrdiff_t _nLatitudes, _nLongitudes;
Storage and rendering of Triangulated surfaces.
Lightweight alternative to libBlitzHDF5 providing its basic functionality.
The SurfaceGeometry struct provides data structures required for the storage of triangulated surface ...