private PlotModel PlotControl() { var pm = new PlotModel() { Title = "ControlPlot" }; var x1F = XOneFormSeries(); var y1F = YOneFormSeries(); var v = VectorSeries(); pm.MouseDown += (s, e) => { var xHit = (x1F.Transform(x1F.Points[1]) - e.Position).Length; var yHit = (y1F.Transform(y1F.Points[1]) - e.Position).Length; var vHit = (v.Transform(v.Points[1]) - e.Position).Length; var hitList = new List <double>(new [] { xHit, yHit, vHit }); moving = true; if (hitList.Min() == xHit) { changeXOneForm = true; } if (hitList.Min() == yHit) { changeYOneForm = true; } if (hitList.Min() == vHit) { changeV = true; } if (changeXOneForm) { x1F.LineStyle = LineStyle.DashDot; } if (changeYOneForm) { y1F.LineStyle = LineStyle.DashDot; } if (changeV) { v.LineStyle = LineStyle.DashDot; } pm.InvalidatePlot(false); e.Handled = true; }; pm.MouseMove += (s, e) => { if (!moving) { e.Handled = true; } if (changeXOneForm) { var newX = x1F.InverseTransform(e.Position); XOneForm = new OneForm(newX.X, newX.Y); x1F.Points[1] = new DataPoint(newX.X, newX.Y); } if (changeYOneForm) { var newY = y1F.InverseTransform(e.Position); YOneForm = new OneForm(newY.X, newY.Y); y1F.Points[1] = new DataPoint(newY.X, newY.Y); } if (changeV) { var newV = v.InverseTransform(e.Position); TheVector = Vector <double> .Build.DenseOfArray(new[] { newV.X, newV.Y }); v.Points[1] = new DataPoint(TheVector[0], TheVector[1]); } UpdateVectorTransform(); UpdateCoordinateTransform(); pm.InvalidatePlot(true); e.Handled = true; }; pm.MouseUp += (s, e) => { moving = false; x1F.LineStyle = y1F.LineStyle = v.LineStyle = LineStyle.Solid; changeXOneForm = changeYOneForm = changeV = false; pm.InvalidatePlot(true); e.Handled = true; }; pm.Series.Add(XAxis()); pm.Series.Add(YAxis()); pm.Series.Add(x1F); pm.Series.Add(y1F); pm.Series.Add(v); pm.Axes.Add(X()); pm.Axes.Add(Y()); return(pm); }
private void InitializeVectors() { XOneForm = new OneForm(2.0, 1.0); YOneForm = new OneForm(1.0, 2.0); TheVector = Vector <double> .Build.DenseOfArray(new[] { 1.0, 1.0 }); }
private PlotModel PlotControl() { var pm = new PlotModel() {Title = "ControlPlot"}; var x1F = XOneFormSeries(); var y1F = YOneFormSeries(); var v = VectorSeries(); pm.MouseDown += (s, e) => { var xHit = (x1F.Transform(x1F.Points[1]) - e.Position).Length; var yHit = (y1F.Transform(y1F.Points[1]) - e.Position).Length; var vHit = (v.Transform(v.Points[1]) - e.Position).Length; var hitList = new List<double>(new [] { xHit, yHit, vHit }); moving = true; if (hitList.Min() == xHit) changeXOneForm = true; if (hitList.Min() == yHit) changeYOneForm = true; if (hitList.Min() == vHit) changeV = true; if (changeXOneForm) x1F.LineStyle = LineStyle.DashDot; if (changeYOneForm) y1F.LineStyle = LineStyle.DashDot; if (changeV) v.LineStyle = LineStyle.DashDot; pm.InvalidatePlot(false); e.Handled = true; }; pm.MouseMove += (s, e) => { if (!moving) e.Handled = true; if (changeXOneForm) { var newX = x1F.InverseTransform(e.Position); XOneForm = new OneForm(newX.X, newX.Y ); x1F.Points[1] = new DataPoint(newX.X, newX.Y); } if (changeYOneForm) { var newY = y1F.InverseTransform(e.Position); YOneForm = new OneForm(newY.X, newY.Y ); y1F.Points[1] = new DataPoint(newY.X, newY.Y); } if (changeV) { var newV = v.InverseTransform(e.Position); TheVector = Vector<double>.Build.DenseOfArray(new[] { newV.X, newV.Y }); v.Points[1] = new DataPoint(TheVector[0], TheVector[1]); } UpdateVectorTransform(); UpdateCoordinateTransform(); pm.InvalidatePlot(true); e.Handled = true; }; pm.MouseUp += (s, e) => { moving = false; x1F.LineStyle = y1F.LineStyle = v.LineStyle = LineStyle.Solid; changeXOneForm = changeYOneForm = changeV = false; pm.InvalidatePlot(true); e.Handled = true; }; pm.Series.Add(XAxis()); pm.Series.Add(YAxis()); pm.Series.Add(x1F); pm.Series.Add(y1F); pm.Series.Add(v); pm.Axes.Add(X()); pm.Axes.Add(Y()); return pm; }
private void oneBtn_Click(object sender, EventArgs e) { OneForm of = new OneForm(); of.Show(); }
private void InitializeVectors() { XOneForm = new OneForm(2.0, 1.0 ); YOneForm = new OneForm(1.0, 2.0 ); TheVector = Vector<double>.Build.DenseOfArray(new[] { 1.0, 1.0 }); }