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;
        }
Exemple #4
0
        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 });
 }