// Get the angle from the given control index to the next control.
public static double ComputeAngleOut(EventDB eventDB, CourseView courseView, int controlIndex)
{
PointF pt1 = eventDB.GetControl(courseView.ControlViews[controlIndex].controlId).location;
// Get index of next control.
int nextControlIndex = courseView.GetNextControl(controlIndex);
if (nextControlIndex < 0)
return double.NaN;
// By default, the location of the next control is the direction.
PointF pt2 = eventDB.GetControl(courseView.ControlViews[nextControlIndex].controlId).location;
// If there is a custom leg, then use the location of the first bend instead.
Id<Leg> legId = QueryEvent.FindLeg(eventDB, courseView.ControlViews[controlIndex].controlId, courseView.ControlViews[nextControlIndex].controlId);
if (legId.IsNotNone) {
Leg leg = eventDB.GetLeg(legId);
if (leg.bends != null && leg.bends.Length > 0)
pt2 = leg.bends[0];
}
return Math.Atan2(pt2.Y - pt1.Y, pt2.X - pt1.X);
}