Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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;
            }
        }
Exemplo n.º 4
0
 void FillRelativeTo(Shape relativeTo, ChangeTrackingTextBox txtBearing, ChangeTrackingTextBox txtDistance, out Point2?relativePoint)
 {
     FillRelativeTo(txtBearing, txtDistance, relativeTo.Position);
     relativePoint = relativeTo.Position;
 }