Beispiel #1
0
 /// <summary>
 /// find difference between current heading and course heading
 /// </summary>
 /// <param name="targetMark"></param>
 /// <param name="previousMark"></param>
 /// <param name="current"></param>
 /// <param name="previous"></param>
 /// <returns></returns>
 private double RelativeAngleToCourse(Mark targetMark, Mark previousMark, CoordinatePoint current, CoordinatePoint previous)
 {
     if (previousMark != null && targetMark != null)
     {
         float courseAngle = (float)AngleUtilities.FindAngle(targetMark.Location.Project(), previousMark.Location.Project());
         float boatAngle   = (float)AngleUtilities.FindAngle(previous.Project(), current.Project());;
         return(AngleUtilities.AngleDifference(courseAngle, boatAngle));
     }
     else
     {
         return(0);
     }
 }
Beispiel #2
0
        public void Reset()
        {
            //SetOffsets();

            if (_race.Course.DirectionType == Course.WindDirectionType.ConstantManual)
            {
                _windAngle = (float)_race.Course.ManualWindAngle + (3f * MathHelper.PiOver2);
            }
            else if (_race.Course.DirectionType == Course.WindDirectionType.ConstantCourse)
            {
                if (_race.Course.WindFromMark != null && _race.Course.WindToMark != null)
                {
                    CoordinatePoint from = _race.Course.WindFromMark.AveragedLocation;
                    CoordinatePoint to   = _race.Course.WindToMark.AveragedLocation;
                    _windAngle = (float)AngleHelper.FindAngle(to.Project(), from.Project());
                }
            }
            _renderer.Reset();
        }