27 #ifndef __PROSHADE_SPHERES__
28 #define __PROSHADE_SPHERES__
52 proshade_unsign localBandwidth;
53 proshade_unsign localAngRes;
54 proshade_single sphereWidth;
55 proshade_double sphereRadius;
58 proshade_single maxSphereRange;
59 proshade_unsign shellOrder;
62 proshade_single xDimSampling;
63 proshade_single yDimSampling;
64 proshade_single zDimSampling;
67 proshade_double* mappedData;
68 proshade_double* mappedDataRot;
71 proshade_unsign
getMaxCircumference ( proshade_unsign xDimMax, proshade_unsign yDimMax, proshade_unsign zDimMax, proshade_double maxRange,
72 proshade_single xSize, proshade_single ySize, proshade_single zSize );
73 bool getMapPoint ( proshade_double* map, proshade_unsign xDimMax, proshade_unsign yDimMax,
74 proshade_unsign zDimMax, proshade_signed xPos,
75 proshade_signed yPos, proshade_signed zPos, std::vector<proshade_double>* interpVec );
79 proshade_double thetaIt, std::vector<proshade_double>* lonCO,
80 proshade_unsign phiIt, std::vector<proshade_double>* latCO );
81 void getXYZTopBottoms ( proshade_unsign xDimMax, proshade_unsign yDimMax, proshade_unsign zDimMax,
82 proshade_double x, proshade_double y, proshade_double z,
83 proshade_signed* xBottom, proshade_signed* yBottom, proshade_signed* zBottom,
84 proshade_signed* xTop,
85 proshade_signed* yTop, proshade_signed* zTop );
86 void interpolateAlongFirst ( std::vector<proshade_double> c000, std::vector<proshade_double> c001, std::vector<proshade_double> c010,
87 std::vector<proshade_double> c011, std::vector<proshade_double> c100, std::vector<proshade_double> c101,
88 std::vector<proshade_double> c110, std::vector<proshade_double> c111,
89 std::vector<proshade_double>* c00, std::vector<proshade_double>* c01,
90 std::vector<proshade_double>* c10, std::vector<proshade_double>* c11,
93 std::vector<proshade_double> c10, std::vector<proshade_double> c11,
94 std::vector<proshade_double>* c0, std::vector<proshade_double>* c1, proshade_double yd );
95 void mapData ( proshade_double* map, proshade_unsign xDimMax, proshade_unsign yDimMax, proshade_unsign zDimMax );
99 ProSHADE_sphere ( proshade_unsign xDimMax, proshade_unsign yDimMax, proshade_unsign zDimMax, proshade_single xSize,
100 proshade_single ySize, proshade_single zSize, proshade_unsign shOrder,
101 std::vector<proshade_single>* spherePos,
102 bool progressiveMapping, proshade_unsign band, proshade_double* map,
103 proshade_unsign* maxShellBand );
132 proshade_double latSampling;
133 proshade_double lonSampling;
134 proshade_unsign dimension;
135 proshade_double latFrom;
136 proshade_double latTo;
137 proshade_double lonFrom;
138 proshade_double lonTo;
139 proshade_double latFromInds;
140 proshade_double latToInds;
141 proshade_double lonFromInds;
142 proshade_double lonToInds;
144 std::vector<proshade_unsign> spherePositions;
146 proshade_double* latMinLonMinXYZ;
147 proshade_double* latMaxLonMinXYZ;
148 proshade_double* latMinLonMaxXYZ;
149 proshade_double* latMaxLonMaxXYZ;
154 void getAllAngleDifferences ( std::vector< proshade_double >* angDiffs, std::vector<ProSHADE_internal_spheres::ProSHADE_rotFun_sphere*> sphereVals );
155 void getAllPossibleFolds ( std::vector< proshade_double >* angDiffs, std::vector< proshade_unsign >* foldsToTry,
156 std::vector<ProSHADE_internal_spheres::ProSHADE_rotFun_sphere*> sphereVals );
157 void getSpheresFormingFold ( proshade_unsign foldToTry, std::vector< proshade_unsign >* spheresFormingFold,
158 std::vector<ProSHADE_internal_spheres::ProSHADE_rotFun_sphere*> sphereVals, proshade_double sphereAngleTolerance );
159 void getBestIndexForFold ( proshade_double* bestPosVal, proshade_double* bestLatInd, proshade_double* bestLonInd, std::vector< proshade_unsign >* spheresFormingFold,
160 std::vector<ProSHADE_internal_spheres::ProSHADE_rotFun_sphere*> sphereVals );
167 bool checkIfPeakBelongs ( proshade_double lat, proshade_double lon, proshade_unsign sphPos, proshade_double cosTol, proshade_signed verbose );
169 std::vector < proshade_double* >* detectedCs,
bool bicubicInterp, proshade_unsign fold, proshade_unsign verbose );