Exemple #1
0
        public void TestByName()
        {
            KnownCourses courses = new KnownCourses();
            Course       cove    = courses.ByName("cove");

            Assert.IsTrue(cove.Course55EntryCL.Latitude == 42.28958);
            double coveHeading = cove.GetCourseHeadingDeg();
            var    poly        = cove.Polygon;

            Course outside = courses.ByName("outside");

            Assert.IsTrue(outside.Course55ExitCL.Longitude == -71.361781);
            double outsideHeading = outside.GetCourseHeadingDeg();
        }
Exemple #2
0
        public static CoursePosition CoursePositionFromGeo(GeoCoordinate boatPosition, Course course)
        {
            double distance         = boatPosition.GetDistanceTo(course.Course55EntryCL);
            double boatHeading      = Util.GetHeading(course.Course55EntryCL, boatPosition);
            double courseHeading    = course.GetCourseHeadingDeg();
            double radiansOffCenter = Util.DegreesToRadians(courseHeading - boatHeading);

            // calculate 3 angles
            double deltaRadians = Util.DegreesToRadians(90) - radiansOffCenter;

            // x axis
            double x = distance * (Math.Sin(radiansOffCenter) / Math.Sin(Util.DegreesToRadians(90)));

            // y axis (how far down the course)
            double y = distance * (Math.Sin(deltaRadians) / Math.Sin(Util.DegreesToRadians(90)));

            //Console.WriteLine($"CoursePosition: {boatHeading}, {courseHeading}, {distance}, {x}, {y}");

            return(new CoursePosition(x, y));
        }
Exemple #3
0
        public void TestGetCourseHeadingDeg()
        {
            double heading = _course.GetCourseHeadingDeg();

            Assert.IsTrue(Math.Round(heading) == 5.0, "heading is not equal");
        }