Example #1
0
        private void UpdateForFollow2()
        {
            var firstboat = _world.Find <Boat>().First();

            if (null == firstboat)
            {
                return;
            }

            var waypoint = firstboat.Autopilot.WayPoint;

            if (null == waypoint || waypoint.Reached)
            {
                return;
            }

            var vector = new AngularVector(firstboat.Location, waypoint.Location);

            var boattohalfway = new AngularVector(vector.Bearing, vector.Distance / 2);

            LookAt = firstboat.Location.GreatCircle(boattohalfway);

            var lookattocamera = new AngularVector(new Bearing(vector.Bearing + Angle.Pi), 3 * boattohalfway.Distance);

            var location = LookAt.GreatCircle(lookattocamera);
            var altitude = 3 * Ball.EarthSurfaceApproximation.Distance(lookattocamera.Distance / (2 * Angle.FromDegrees(45).Cos()) * Angle.FromDegrees(45).Sin());

            Location = new Tuple <Coordinate, Length>(location, altitude);
        }
Example #2
0
        private void UpdateForFollow1()
        {
            var firstboat = _world.Find <Boat>().First();

            if (null == firstboat)
            {
                return;
            }


            var waypoint = firstboat.Autopilot.WayPoint;

            if (null == waypoint || waypoint.Reached)
            {
                return;
            }

            var vector       = new AngularVector(firstboat.Location, waypoint.Location);
            var boattocamera = new AngularVector(new Bearing(vector.Bearing + Angle.Pi), new Bearing(Ball.EarthSurfaceApproximation.Arc(Length.FromMeters(15))));

            var boattohalfway = new AngularVector(vector.Bearing, vector.Distance / 2);

            LookAt = firstboat.Location.GreatCircle(boattohalfway);

            Location = new Tuple <Coordinate, Length>(firstboat.Location.GreatCircle(boattocamera), Length.FromMeters(3));
        }
        private void UpdateLocation(Time elapsedtime)
        {
            Length distancetravelled = Speed * elapsedtime;
            var    v = new AngularVector(Bearing, Ball.EarthSurfaceApproximation.Arc(distancetravelled));

            Location = Location.GreatCircle(v);
        }
Example #4
0
        public void EarthShouldCreateAngularVectorFromCartesianVector()
        {
            var           cartesianvector = new CartesianVector(Length.FromMeters(0), Length.FromMeters(1));
            AngularVector angularvector   = Ball.EarthSurfaceApproximation.AngularVector(cartesianvector);

            Assert.IsTrue((angularvector.Bearing.Abs() - Bearing.North.Abs()).Abs() < Angle.FromDegrees(1e-6));

            cartesianvector = new CartesianVector(Length.FromMeters(1), Length.FromMeters(0));
            angularvector   = Ball.EarthSurfaceApproximation.AngularVector(cartesianvector);

            Assert.IsTrue((angularvector.Bearing.Abs() - Bearing.East.Abs()).Abs() < Angle.FromDegrees(1e-6));
        }
Example #5
0
        public void EarthShouldCreateCartesianVectorFromAngularVector()
        {
            var             angularVector   = new AngularVector(Bearing.North, Angle.FromDegrees(1));
            CartesianVector cartesianVector = Ball.EarthSurfaceApproximation.Cartesian(angularVector);

            Assert.IsTrue(cartesianVector.X == Length.Zero);
            Assert.IsTrue(cartesianVector.Y > Length.Zero);

            angularVector   = new AngularVector(Bearing.East, Angle.FromDegrees(1));
            cartesianVector = Ball.EarthSurfaceApproximation.Cartesian(angularVector);

            Assert.IsTrue(cartesianVector.X > Length.Zero);
            Assert.IsTrue(cartesianVector.Y < Length.FromMeters(1E-10));
        }
Example #6
0
        public void ShouldVectorGreatCirclesWell()
        {
            var vector = new AngularVector(Ourhouse, PointRobertsMarina);

            Coordinate newlocation = Ourhouse.GreatCircle(vector);

            Length distance = Ball.EarthSurfaceApproximation.Distance(newlocation, PointRobertsMarina);

            Assert.IsTrue(distance < Length.FromMeters(.5));

            vector = new AngularVector(Ourhouse, MammasHuis);

            newlocation = Ourhouse.GreatCircle(vector);

            distance = Ball.EarthSurfaceApproximation.Distance(newlocation, MammasHuis);

            Assert.IsTrue(distance < Length.FromMeters(.5));
        }
Example #7
0
        public void ShouldVectorRhumbWell()
        {
            var vector = new AngularVector(Ourhouse, PointRobertsMarina);

            Coordinate newlocation = Ourhouse.Rhumb(vector);

            Length distance = Ball.EarthSurfaceApproximation.Distance(newlocation, PointRobertsMarina);

            Assert.IsTrue(distance < Length.FromMeters(.5));

            vector = new AngularVector(Ourhouse, PottsburgCrossing);

            newlocation = Ourhouse.Rhumb(vector);

            distance = Ball.EarthSurfaceApproximation.Distance(newlocation, PottsburgCrossing);

            Assert.IsFalse(distance < Length.FromMeters(.5));
        }
Example #8
0
        public CartesianVector ToCartesian(Coordinate coordinate)
        {
            var vector = new AngularVector(_modelcenter, coordinate);

            return(_earth.Cartesian(vector));
        }