예제 #1
0
파일: Form1.cs 프로젝트: Key-F/medGraph
        public void firstPart(string prefix)
        {
            list1.Clear();
            for (int i = 1; i <= Convert.ToInt32(textBox14.Text); i++)
            {
                string controlNameC = prefix + "c" + i;
                var    controls     = this.Controls.Find(controlNameC, true);
                var    control      = controls.FirstOrDefault();
                double.TryParse(control.Text.Replace('.', ','), out double c);
                string controlNameD1 = prefix + "d" + i + "1";
                string controlNameD2 = prefix + "d" + i + "2";
                var    controlsD1    = this.Controls.Find(controlNameD1, true);
                var    controlD1     = controlsD1.FirstOrDefault();
                var    controlsD2    = this.Controls.Find(controlNameD2, true);
                var    controlD2     = controlsD2.FirstOrDefault();
                double.TryParse(controlD1.Text.Replace('.', ','), out double d1);
                double.TryParse(controlD2.Text.Replace('.', ','), out double d2);
                double dd = (d1 + d2) / 2;
                if (dd != 0 && c != 0)
                {
                    list1.Add(c, dd);
                }
            }
            IList <double> XandY = PP.PPToAxe(list1);

            Eapp epp = new Eapp();

            double[] X = new double[XandY.Count / 2];
            double[] Y = new double[XandY.Count / 2];
            for (int i = 0; i < XandY.Count / 2; i++)
            {
                X[i] = XandY[i];
                Y[i] = XandY[i + XandY.Count / 2];
            }
            pa = 0;
            pb = 0;
            pc = 0;
            ea = 0;
            eb = 0;
            lk = 0;
            lb = 0;
            if (radioButton1.Checked == true)
            {
                epp.approxl(XandY.Count / 2, X, Y, ref lk, ref lb);
                checkbox = 0;
            }
            else if (radioButton2.Checked == true)
            {
                epp.approx2(XandY.Count / 2, X, Y, ref pa, ref pb, ref pc);
                checkbox = 1;
            }
            else if (radioButton3.Checked == true)
            {
                epp.approx(XandY.Count / 2, X, Y, ref ea, ref eb);
                checkbox = 2;
            }
        }
예제 #2
0
        public Form2(double pa, double pb, double pc, double ea, double eb, double lk, double lb, PointPairList testData, PointPairList res, int num)
        {
            if (res == null && num != 0)
            {
                this.Close();
                return;
            }

            testData.Sort();
            InitializeComponent();
            GraphPane pane = zedGraphControl1.GraphPane;

            PointPairList pl = new PointPairList();
            PointPairList pp = new PointPairList();
            PointPairList pe = new PointPairList();

            int limitX = (int)testData[testData.Count - 1].X + 1;

            pl = Eapp.addPointsL(limitX, lk, lb);
            pp = Eapp.addPointsP(limitX, pa, pb, pc);
            pe = Eapp.addPointsE(limitX, ea, eb);

            pane.XAxis.Title.Text = "C"; //подпись оси X
            pane.YAxis.Title.Text = "D"; //подпись оси Y

            if (num != 0)
            {
                pane.Title.Text = "Номер пробы: " + num;
                this.Text       = "Номер пробы: " + num;
            }
            else
            {
                pane.Title.Text = "le graffique";
            }

            // Очистим список кривых
            pane.CurveList.Clear();


            // Обводка ромбиков будут рисоваться голубым цветом (Color.Blue),
            // Опорные точки - ромбики (SymbolType.Diamond)
            LineItem myCurve;

            if (Form1.checkbox == 0)
            {
                myCurve = pane.AddCurve("Линейная аппроксимация", pl, Color.Black, SymbolType.None);
            }
            else if (Form1.checkbox == 1)
            {
                myCurve = pane.AddCurve("Квадратичная ппроксимация", pp, Color.Black, SymbolType.None);
            }
            else if (Form1.checkbox == 2)
            {
                pane.AddCurve("Экспоненциальная аппроксимация", pe, Color.Black, SymbolType.None);
            }
            LineItem myCurve1 = pane.AddCurve("Эксперементальные данные", testData, Color.BlueViolet, SymbolType.Circle);


            LineItem myCurve2 = pane.AddCurve("Проекция", res, Color.DarkGray, SymbolType.None);



            zedGraphControl1.AxisChange();

            zedGraphControl1.Invalidate();

            this.Show();
        }