Ejemplo n.º 1
0
        public static string AvidDirectionToString(AvidDirection direction)
        {
            switch (direction)
            {
            case AvidDirection.AB:
                return("A/B");

            case AvidDirection.BC:
                return("B/C");

            case AvidDirection.CD:
                return("C/D");

            case AvidDirection.DE:
                return("D/E");

            case AvidDirection.EF:
                return("E/F");

            case AvidDirection.FA:
                return("F/A");

            case AvidDirection.Undefined:
                return(string.Empty);

            default:
                return(direction.ToString());
            }
        }
Ejemplo n.º 2
0
 public AvidModelWindow(AvidDirection direction, AvidRing ring, bool abovePlane)
     : base(direction, ring, abovePlane)
 {
     AdjacentWindows = new List <AvidModelLink>();
     DiagonalWindows = new List <AvidModelLink>();
     ClearOperationalData();
 }
Ejemplo n.º 3
0
        public AvidOrientation GetOrientationWithoutRoll(AvidWindow nose, AvidDirection referenceDirection)
        {
            Vector3 vectorX = WindowToVector3(nose);
            var     axis    = _vectorLibrary.GetLocalAxis(vectorX, 0d, DirectionToAngle(referenceDirection));
            var     result  = new AvidOrientation
            {
                Nose      = Vector3ToAvid(axis[0]),
                Starboard = Vector3ToAvid(axis[1]),
                Top       = Vector3ToAvid(axis[2]),
            };

            result.Aft    = GetOppositeWindow(result.Nose);
            result.Port   = GetOppositeWindow(result.Starboard);
            result.Bottom = GetOppositeWindow(result.Top);
            return(result);
        }
Ejemplo n.º 4
0
        public void UpdateDirections(AvidWindow launchWindow, AvidDirection referenceDirection)
        {
            if (AvidWindow.IsNullOrZero(launchWindow) ||
                (launchWindow.Ring == AvidRing.Magenta && referenceDirection == AvidDirection.Undefined))
            {
                ResetEvasionInfo();
                return;
            }

            var impactWindow = _avidCalculator.GetOppositeWindow(launchWindow);
            var axis = _avidCalculator.GetOrientationWithoutRoll(impactWindow, referenceDirection);
            ImpactWindow = axis.Nose;
            EvasionUp = axis.Top;
            EvasionDown = axis.Bottom;
            EvasionLeft = axis.Port;
            EvasionRight = axis.Starboard;
            OnEvasionChanged();
        }
Ejemplo n.º 5
0
        public void UpdateDirections(AvidWindow launchWindow, AvidDirection referenceDirection)
        {
            if (AvidWindow.IsNullOrZero(launchWindow) ||
                (launchWindow.Ring == AvidRing.Magenta && referenceDirection == AvidDirection.Undefined))
            {
                ResetEvasionInfo();
                return;
            }

            var impactWindow = _avidCalculator.GetOppositeWindow(launchWindow);
            var axis         = _avidCalculator.GetOrientationWithoutRoll(impactWindow, referenceDirection);

            ImpactWindow = axis.Nose;
            EvasionUp    = axis.Top;
            EvasionDown  = axis.Bottom;
            EvasionLeft  = axis.Port;
            EvasionRight = axis.Starboard;
            OnEvasionChanged();
        }
Ejemplo n.º 6
0
 public static string AvidDirectionToString(AvidDirection direction)
 {
     switch (direction)
     {
         case AvidDirection.AB:
             return "A/B";
         case AvidDirection.BC:
             return "B/C";
         case AvidDirection.CD:
             return "C/D";
         case AvidDirection.DE:
             return "D/E";
         case AvidDirection.EF:
             return "E/F";
         case AvidDirection.FA:
             return "F/A";
         case AvidDirection.Undefined:
             return string.Empty;
         default:
             return direction.ToString();
     }
 }
Ejemplo n.º 7
0
 public double DirectionToAngle(AvidDirection direction)
 {
     return(Math.PI * ((16 - (byte)direction) % 12) / 6d);
 }
Ejemplo n.º 8
0
 public EvasionInfoModel(AvidWindow impactWindow, AvidDirection referenceDirection)
 {
     _avidCalculator = ServiceFactory.Library.AvidCalculator;
     UpdateDirections(_avidCalculator.GetOppositeWindow(impactWindow), referenceDirection);
 }
Ejemplo n.º 9
0
 public double DirectionToAngle(AvidDirection direction)
 {
     return Math.PI * ((16 - (byte)direction) % 12) / 6d;
 }
Ejemplo n.º 10
0
        private void CheckDistance(HexGridCoordinate posA, HexGridCoordinate posB, int distance, AvidRing ring, AvidDirection direction, bool isAbovePlane)
        {
            var result = _calculator.GetDistance(posA, posB);

            result.Magnitude.Should().Be(distance);
            result.Ring.Should().Be(ring);
            result.Direction.Should().Be(direction);
            result.AbovePlane.Should().Be(isAbovePlane);
        }
Ejemplo n.º 11
0
 public static void CheckAvidWindow(AvidWindow window, AvidDirection expectedDirection, AvidRing expectedRing, bool abovePlane)
 {
     window.Direction.Should().Be(expectedDirection);
     window.Ring.Should().Be(expectedRing);
     window.AbovePlane.Should().Be(abovePlane);
 }
Ejemplo n.º 12
0
 public EvasionInfoModel(AvidWindow impactWindow, AvidDirection referenceDirection)
 {
     _avidCalculator = ServiceFactory.Library.AvidCalculator;
     UpdateDirections(_avidCalculator.GetOppositeWindow(impactWindow), referenceDirection);
 }
Ejemplo n.º 13
0
 public AvidWindow(AvidDirection direction, AvidRing ring, bool abovePlane)
 {
     Direction  = direction;
     Ring       = ring;
     AbovePlane = abovePlane || (ring == AvidRing.Ember); //Ember ring is above plane by default.
 }
Ejemplo n.º 14
0
 public AvidVector(AvidDirection direction, AvidRing ring, bool abovePlane, int magnitude)
     : base(direction, ring, abovePlane)
 {
     Magnitude = magnitude;
 }
Ejemplo n.º 15
0
 private void CheckDistance(HexGridCoordinate posA, HexGridCoordinate posB, int distance, AvidRing ring, AvidDirection direction, bool isAbovePlane)
 {
     var result = _calculator.GetDistance(posA, posB);
     result.Magnitude.Should().Be(distance);
     result.Ring.Should().Be(ring);
     result.Direction.Should().Be(direction);
     result.AbovePlane.Should().Be(isAbovePlane);
 }
Ejemplo n.º 16
0
 public AvidVector(AvidDirection direction, AvidRing ring, bool abovePlane, int magnitude)
     : base(direction, ring, abovePlane)
 {
     Magnitude = magnitude;
 }
Ejemplo n.º 17
0
        public AvidOrientation GetOrientationWithoutRoll(AvidWindow nose, AvidDirection referenceDirection)
        {
            Vector3 vectorX = WindowToVector3(nose);
            var axis = _vectorLibrary.GetLocalAxis(vectorX, 0d, DirectionToAngle(referenceDirection));
            var result = new AvidOrientation
            {
                Nose = Vector3ToAvid(axis[0]),
                Starboard = Vector3ToAvid(axis[1]),
                Top = Vector3ToAvid(axis[2]),
            };

            result.Aft = GetOppositeWindow(result.Nose);
            result.Port = GetOppositeWindow(result.Starboard);
            result.Bottom = GetOppositeWindow(result.Top);
            return result;
        }