public void AddNewCharge(Charge charge) { if (charge.Type == Charge.ChargeType.Positive) { var positiveCharge = new PositiveCharge(); positiveCharge.Margin = new Thickness(0, 0, 0, 0); positiveCharge.VerticalAlignment = VerticalAlignment.Top; positiveCharge.HorizontalAlignment = HorizontalAlignment.Left; positiveCharge.MyCharge = charge; gridField.Children.Add(positiveCharge); var group = new TransformGroup(); var transfer = new TranslateTransform { X = Helper.RandomNumber(10, (int)gridField.Width - 45), Y = Helper.Clamp(Helper.RandomNumber(10, ((int)gridField.Height - 35) / 2), 0, (int)gridField.Height - 65) }; group.Children.Add(transfer); positiveCharge.RenderTransform = group; _charges.Add(positiveCharge.MyCharge); } else { var negativeCharge = new NegativeCharge(); negativeCharge.Margin = new Thickness(0, 0, 0, 0); negativeCharge.VerticalAlignment = VerticalAlignment.Top; negativeCharge.HorizontalAlignment = HorizontalAlignment.Left; negativeCharge.MyCharge = charge; gridField.Children.Add(negativeCharge); var group = new TransformGroup(); var transfer = new TranslateTransform { X = Helper.RandomNumber(10, (int)gridField.Width - 45), Y = Helper.RandomNumber(10, ((int)gridField.Height - 35)) }; group.Children.Add(transfer); negativeCharge.RenderTransform = group; _charges.Add(negativeCharge.MyCharge); } CalculatePositions(); Calculation(); FieldOutline.Update(); }
private void BtnDrawClick(object sender, RoutedEventArgs e) { if (cmbFloat.SelectedIndex == -1 || cmbStatic.SelectedIndex == -1) { MessageBox.Show("Fill all fields!!"); return; } int duration = 10; var startloc = new Point((double)integerUDStartX.Value, (double)integerUDStartY.Value); if (integerUDDuration.Value != null) { duration = (int)integerUDDuration.Value; } var slver = new Solver(_charges, _surfaces, ImageHieght, ImageWidth); slver.SolveIt(); FreeCharge freeCharge = null; PositiveCharge positiveCharge = null; NegativeCharge negativeCharge = null; IEnumerable <UIElement> allitems = MainWindow.Instance.GetListOfItems(); foreach (UIElement chargeitem in allitems) { if (chargeitem.GetType() == typeof(FreeCharge)) { string name = ((FreeCharge)chargeitem).MyCharge.Name; if ((string)cmbFloat.SelectedValue == name) { freeCharge = ((FreeCharge)chargeitem); } } else if (chargeitem.GetType() == typeof(PositiveCharge)) { string name = ((PositiveCharge)chargeitem).MyCharge.Name; if ((string)cmbStatic.SelectedValue == name) { positiveCharge = ((PositiveCharge)chargeitem); } } else if (chargeitem.GetType() == typeof(NegativeCharge)) { string name = ((NegativeCharge)chargeitem).MyCharge.Name; if ((string)cmbStatic.SelectedValue == name) { negativeCharge = ((NegativeCharge)chargeitem); } } } if (freeCharge != null) { var Orgins = new Point(); if (positiveCharge != null) { Orgins = new Point(positiveCharge.RenderTransform.Value.OffsetX, positiveCharge.RenderTransform.Value.OffsetY); } else if (negativeCharge != null) { Orgins = new Point(negativeCharge.RenderTransform.Value.OffsetX, negativeCharge.RenderTransform.Value.OffsetY); } var returnedData = (List <Point>)slver.ChargeChargeDistance(freeCharge, Orgins, duration, startloc); var graphOutput = new GraphWindow("Distance", "Time"); graphOutput.DrawThis(returnedData, Brushes.DarkRed, Brushes.DarkMagenta, "Distance"); if (returnedData != null) { IEnumerable <Point> velcocity = Helper.CalculateVelocity(returnedData); graphOutput.DrawThis(velcocity, Brushes.DodgerBlue, Brushes.LightSkyBlue, "Velocity"); } graphOutput.Show(); } Close(); }