internal List <LoadPosition> GetLoadPositions(SearchZone zone) { List <LoadPosition> loadPositions = new List <LoadPosition>(); int signDEFrom = Math.Sign(zone.DEFrom); int fromZone, toZone; bool isSouth = signDEFrom < 0; fromZone = (int)Math.Floor(((zone.DEFrom + 90) * 4)); toZone = (int)Math.Ceiling(((zone.DETo + 90) * 4)); for (int zoneId = fromZone; zoneId < toZone; zoneId++) { LoadPosition loadPos = new LoadPosition(); if (zoneId == 359) { loadPos.ZoneId = 0; loadPos.SubZoneId = 'a'; loadPos.Hemisphere = 's'; } else if (zoneId == 360) { loadPos.ZoneId = 0; loadPos.SubZoneId = 'a'; loadPos.Hemisphere = 'n'; } else { if (isSouth) { loadPos.ZoneId = 89 - (zoneId / 4); loadPos.SubZoneId = "dcba"[zoneId % 4]; loadPos.Hemisphere = 's'; } else { loadPos.ZoneId = (zoneId / 4) - 90; loadPos.SubZoneId = "abcd"[zoneId % 4]; loadPos.Hemisphere = 'n'; } } int raFrom = Math.Max(0, (int)Math.Floor(zone.RAFrom)); int raTo = Math.Min(359, (int)Math.Ceiling(zone.RATo)); loadPos.FromRecordId = (uint)ZoneIndex[zoneId].RAIndex[raFrom]; loadPos.ToRecordId = (uint)ZoneIndex[zoneId].RAIndex[raTo]; loadPositions.Add(loadPos); } return(loadPositions); }
internal List<LoadPosition> GetLoadPositions(SearchZone zone) { List<LoadPosition> loadPositions = new List<LoadPosition>(); int signDEFrom = Math.Sign(zone.DEFrom); int fromZone, toZone; bool isSouth = signDEFrom < 0; fromZone = (int)Math.Floor(((zone.DEFrom + 90) * 4)); toZone = (int)Math.Ceiling(((zone.DETo + 90) * 4)); for (int zoneId = fromZone; zoneId < toZone; zoneId++) { LoadPosition loadPos = new LoadPosition(); if (zoneId == 359) { loadPos.ZoneId = 0; loadPos.SubZoneId = 'a'; loadPos.Hemisphere = 's'; } else if (zoneId == 360) { loadPos.ZoneId = 0; loadPos.SubZoneId = 'a'; loadPos.Hemisphere = 'n'; } else { if (isSouth) { loadPos.ZoneId = 89 - (zoneId / 4); loadPos.SubZoneId = "dcba"[zoneId % 4]; loadPos.Hemisphere = 's'; } else { loadPos.ZoneId = (zoneId / 4) - 90; loadPos.SubZoneId = "abcd"[zoneId % 4]; loadPos.Hemisphere = 'n'; } } int raFrom = Math.Max(0, (int)Math.Floor(zone.RAFrom)); int raTo = Math.Min(359, (int)Math.Ceiling(zone.RATo)); loadPos.FromRecordId = (uint)ZoneIndex[zoneId].RAIndex[raFrom]; loadPos.ToRecordId = (uint)ZoneIndex[zoneId].RAIndex[raTo]; loadPositions.Add(loadPos); } return loadPositions; }