/** * @file RadxAppCircularLookupHandler.cc */ #include #include #include #include #include #include #include //------------------------------------------------------------------ RadxAppCircularLookupHandler::RadxAppCircularLookupHandler(double r, const RadxVol &vol) { const vector rays = vol.getRays(); const vector s = vol.getSweeps(); // need representative delta azimuth and delta range, and max range _ngates=0; // assume constant _deltaGateKm = rays[0]->getGateSpacingKm(); _deltaAzDeg=0; _startRangeKm = rays[0]->getStartRangeKm(); for (size_t i=0; i rays = vol.getRays(); vector angles; for (int i = s.getStartRayIndex(); i <= static_cast(s.getEndRayIndex()); ++i) { double a = rays[i]->getAzimuthDeg(); angles.push_back(a); int ng = rays[i]->getNGates(); if (ng > ngates) { ngates = ng; } } vector sangles(angles); sort(sangles.begin(), sangles.end()); double da = 0; for (size_t ia=0; ia 0 && r < ngates) { _offsets.push_back(std::pair(r, 0)); double ri = startRangeKm + deltaGateKm*(double)r; // now keep trying azimuths offset until nothing for (int a=1; a(r, a)); if (a != 0) { _offsets.push_back(std::pair(r, -a)); } } } } } } //------------------------------------------------------------------ RadxAppCircularLookup::~RadxAppCircularLookup(void) { } //------------------------------------------------------------------ void RadxAppCircularLookup::print(void) const { printf("[%03d,%03d] - npt=%d\n", _centerIndexR, _centerIndexA, (int)_offsets.size()); }