Beispiel #1
0
        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);
        }
Beispiel #2
0
        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;
        }