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_single maxRange );
72 bool getMapPoint ( proshade_double* map, proshade_unsign xDimMax, proshade_unsign yDimMax,
73 proshade_unsign zDimMax, proshade_signed xPos,
74 proshade_signed yPos, proshade_signed zPos, std::vector<proshade_double>* interpVec );
78 proshade_double thetaIt, std::vector<proshade_double>* lonCO,
79 proshade_unsign phiIt, std::vector<proshade_double>* latCO );
80 void getXYZTopBottoms ( proshade_unsign xDimMax, proshade_unsign yDimMax, proshade_unsign zDimMax,
81 proshade_double x, proshade_double y, proshade_double z,
82 proshade_signed* xBottom, proshade_signed* yBottom, proshade_signed* zBottom,
83 proshade_signed* xTop,
84 proshade_signed* yTop, proshade_signed* zTop );
85 void interpolateAlongFirst ( std::vector<proshade_double> c000, std::vector<proshade_double> c001, std::vector<proshade_double> c010,
86 std::vector<proshade_double> c011, std::vector<proshade_double> c100, std::vector<proshade_double> c101,
87 std::vector<proshade_double> c110, std::vector<proshade_double> c111,
88 std::vector<proshade_double>* c00, std::vector<proshade_double>* c01,
89 std::vector<proshade_double>* c10, std::vector<proshade_double>* c11,
92 std::vector<proshade_double> c10, std::vector<proshade_double> c11,
93 std::vector<proshade_double>* c0, std::vector<proshade_double>* c1, proshade_double yd );
94 void mapData ( proshade_double* map, proshade_unsign xDimMax, proshade_unsign yDimMax, proshade_unsign zDimMax );
98 ProSHADE_sphere ( proshade_unsign xDimMax, proshade_unsign yDimMax, proshade_unsign zDimMax, proshade_single xSize,
99 proshade_single ySize, proshade_single zSize, proshade_unsign shOrder,
100 std::vector<proshade_single>* spherePos,
101 bool progressiveMapping, proshade_unsign band, proshade_double* map,
102 proshade_unsign* maxShellBand, proshade_unsign* maxCompBand );
131 proshade_double latSampling;
132 proshade_double lonSampling;
133 proshade_unsign dimension;
134 proshade_double latFrom;
135 proshade_double latTo;
136 proshade_double lonFrom;
137 proshade_double lonTo;
138 proshade_double latFromInds;
139 proshade_double latToInds;
140 proshade_double lonFromInds;
141 proshade_double lonToInds;
143 std::vector<proshade_unsign> spherePositions;
145 proshade_double* latMinLonMinXYZ;
146 proshade_double* latMaxLonMinXYZ;
147 proshade_double* latMinLonMaxXYZ;
148 proshade_double* latMaxLonMaxXYZ;
152 void getAllAngleDifferences ( std::vector< proshade_double >* angDiffs, std::vector<ProSHADE_internal_spheres::ProSHADE_rotFun_sphere*> sphereVals );
153 void getAllPossibleFolds ( std::vector< proshade_double >* angDiffs, std::vector< proshade_unsign >* foldsToTry );
154 void getSpheresFormingFold ( proshade_unsign foldToTry, std::vector< proshade_unsign >* spheresFormingFold,
155 std::vector<ProSHADE_internal_spheres::ProSHADE_rotFun_sphere*> sphereVals, proshade_double sphereAngleTolerance );
156 void getBestIndexForFold ( proshade_double* bestPosVal, proshade_double* bestLatInd, proshade_double* bestLonInd, std::vector< proshade_unsign >* spheresFormingFold,
157 std::vector<ProSHADE_internal_spheres::ProSHADE_rotFun_sphere*> sphereVals );
164 bool checkIfPeakBelongs ( proshade_double lat, proshade_double lon, proshade_unsign sphPos, proshade_double cosTol, proshade_signed verbose, proshade_signed messageShift,
165 proshade_double allowedAngle );
166 void findCyclicPointGroupsGivenFold ( std::vector<ProSHADE_internal_spheres::ProSHADE_rotFun_sphere*> sphereVals, std::vector < proshade_double* >* detectedCs,
167 bool bicubicInterp, proshade_unsign fold, proshade_signed verbose, proshade_signed messageShift );