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(); }
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)); }
public void TestGetCourseHeadingDeg() { double heading = _course.GetCourseHeadingDeg(); Assert.IsTrue(Math.Round(heading) == 5.0, "heading is not equal"); }