void FillRelativeTo(ChangeTrackingTextBox txtBearing, ChangeTrackingTextBox txtDistance, Point2 relativePoint) { double angle = ManeuveringBoard.AngleBetween(relativePoint, posDataPoint.Value); txtBearing.Text = (angle * MathConst.RadiansToDegrees).ToString("0.##"); txtBearing.Tag = angle; double distance = relativePoint.DistanceTo(posDataPoint.Value); txtDistance.Text = ManeuveringBoard.GetDistanceString(distance, unitSystem); txtDistance.Tag = distance; txtBearing.WasChanged = txtDistance.WasChanged = false; }
bool Validate(ChangeTrackingTextBox txtBearing, ChangeTrackingTextBox txtDistance) { double value; if (txtBearing.WasChanged) { if (TryParseAngle(txtBearing.Text, out value)) { txtBearing.Tag = value; } else { if (string.IsNullOrEmpty(txtBearing.Text.Trim())) { ShowRequiredMessage("Bearing"); } else { ShowInvalidAngle(txtBearing.Text); } txtBearing.Focus(); return(false); } } if (txtDistance.WasChanged) { if (TryParseLength(txtDistance.Text, unitSystem, out value)) { txtDistance.Tag = value; } else { if (string.IsNullOrEmpty(txtDistance.Text.Trim())) { ShowRequiredMessage("Distance"); } else { ShowInvalidLength(txtDistance.Text); } txtDistance.Focus(); return(false); } } return(true); }
void UpdateObservationPoint(ChangeTrackingTextBox txtBearing, ChangeTrackingTextBox txtDistance, Point2 fromPoint, ChangeTrackingTextBox txtOtherBearing1, ChangeTrackingTextBox txtOtherDistance1, Point2?otherPoint1, ChangeTrackingTextBox txtOtherBearing2, ChangeTrackingTextBox txtOtherDistance2, Point2?otherPoint2) { if (Validate(txtBearing, txtDistance)) { double bearing = (double)txtBearing.Tag, distance = (double)txtDistance.Tag; posDataPoint = fromPoint + new Vector2(0, distance).Rotate(-bearing); if (otherPoint1.HasValue) { FillRelativeTo(txtOtherBearing1, txtOtherDistance1, otherPoint1.Value); } if (otherPoint2.HasValue) { FillRelativeTo(txtOtherBearing2, txtOtherDistance2, otherPoint2.Value); } txtBearing.WasChanged = txtDistance.WasChanged = false; } }
void FillRelativeTo(Shape relativeTo, ChangeTrackingTextBox txtBearing, ChangeTrackingTextBox txtDistance, out Point2?relativePoint) { FillRelativeTo(txtBearing, txtDistance, relativeTo.Position); relativePoint = relativeTo.Position; }