internal List <LoadPosition> GetLoadPositions(SearchZone zone) { List <LoadPosition> loadPositions = new List <LoadPosition>(); int dirIdxFrom = Math.Min(Math.Max((int)Math.Floor((zone.DEFrom + 90) * 10), 0), 1799); int dirIdxTo = Math.Max(Math.Min((int)Math.Ceiling((zone.DETo + 90) * 10) - 1, 1799), 0); int raIdxFrom = Math.Max((int)Math.Floor((zone.RAFrom * 5)), 0); int rsIdxTo = Math.Min((int)Math.Ceiling((zone.RATo * 5)) + 1, 1800); for (int i = dirIdxFrom; i <= dirIdxTo; i++) { NOMADZoneIndex zoneIdx = GetZoneIndex(i); uint idxFrom = zoneIdx.RAIndex[raIdxFrom]; uint idxTo = zoneIdx.RAIndex[rsIdxTo]; if (idxTo > idxFrom) { loadPositions.Add(new LoadPosition(i, idxFrom, idxTo, m_NOMADFirstStarNoPerBin[i])); } else if (idxTo < idxFrom) { #if ASTROMETRY_DEBUG Trace.Assert(false); #endif } } return(loadPositions); }
internal NOMADZoneIndex GetZoneIndex(int zone) { NOMADZoneIndex index; if (!m_LoadedZoneIndexes.TryGetValue(zone, out index)) { index = new NOMADZoneIndex(m_CatalogLocation, zone); index.RAIndex[1800] = m_NOMADFirstStarNoPerBin[zone + 1] - m_NOMADFirstStarNoPerBin[zone]; m_LoadedZoneIndexes.Add(zone, index); } return(index); }
internal NOMADZoneIndex GetZoneIndex(int zone) { NOMADZoneIndex index; if (!m_LoadedZoneIndexes.TryGetValue(zone, out index)) { index = new NOMADZoneIndex(m_CatalogLocation, zone); index.RAIndex[1800] = m_NOMADFirstStarNoPerBin[zone + 1] - m_NOMADFirstStarNoPerBin[zone]; m_LoadedZoneIndexes.Add(zone, index); } return index; }