Ejemplo n.º 1
0
 public void SetImage(ZArrayDescriptor zArray)
 {
     this.imageBox.Invoke
     (
         (MethodInvoker) delegate
     {
         Vizual.Vizual_Picture(zArray, this.imageBox);
         this.imageBox.Refresh();
     }
     );
 }
Ejemplo n.º 2
0
        private void button1_Click(object sender, EventArgs e)                                // Построить фигуру Лиссажу по кадру
        {
            // MessageBox.Show("RegComplex = " + Form1.regComplex ); // 0, 1, 2
            if (Form1.zArrayDescriptor[Form1.regComplex * 4] == null)
            {
                MessageBox.Show("Lissagu zArrayDescriptor == NULL"); return;
            }


            fz[0] = Convert.ToDouble(textBox2.Text);
            fz[1] = Convert.ToDouble(textBox3.Text);
            fz[2] = Convert.ToDouble(textBox4.Text);
            fz[3] = Convert.ToDouble(textBox5.Text);

            fz[4] = Convert.ToDouble(textBox7.Text);
            fz[5] = Convert.ToDouble(textBox8.Text);
            fz[6] = Convert.ToDouble(textBox9.Text);
            fz[7] = Convert.ToDouble(textBox10.Text);

            N_sdv = Convert.ToInt32(textBox11.Text);                                    // Число сдвигов


            double[] fzrad = new double[N_sdv];
            for (int i = 0; i < N_sdv; i++)
            {
                fzrad[i] = Math.PI * fz[i] / 180.0;
            }                                                                      // Фаза в радианах

            int w1 = Form1.zArrayDescriptor[Form1.regComplex * 4].width;
            int h1 = Form1.zArrayDescriptor[Form1.regComplex * 4].height;

            n     = Convert.ToInt32(textBox1.Text);
            n_end = Convert.ToInt32(textBox6.Text);

            if (n < 0 || n_end > (h1 - 1))
            {
                MessageBox.Show("n<0 || n_end>(h1-1)"); return;
            }


            ZArrayDescriptor faza = new ZArrayDescriptor(w1, h1);

            faza = FazaClass.ATAN_Gr(Form1.zArrayDescriptor, fzrad, Form1.regComplex, n, n_end);
            Vizual.Vizual_Picture(faza, pictureBox2);
        }
Ejemplo n.º 3
0
        public static void Change_r(ZArrayDescriptor[] zArrayDescriptor,
                                    PictureBox pictureBox9, PictureBox pictureBox10, PictureBox pictureBox11, PictureBox pictureBox12,
                                    int X1, int X2, int X3, int X4, int Y1, int Y2, int Y3, int Y4)
        {
            for (int i = 8; i < 12; i++)
            {
                if (zArrayDescriptor[i] == null)
                {
                    MessageBox.Show(" Change_r: zArrayDescriptor[" + i + "] == null"); return;
                }
            }

            int max_X = zArrayDescriptor[8].width;
            int max_Y = zArrayDescriptor[8].height;

            int minx = min4x(X1, X2, X3, X4);
            int maxx = max4x(X1, X2, X3, X4);
            int miny = min4x(Y1, Y2, Y3, Y4);
            int maxy = max4x(Y1, Y2, Y3, Y4);

            int rx  = (maxx - minx) / 2;
            int ry  = (maxy - miny) / 2;
            int rad = Math.Min(rx, ry);
            int x0  = minx + rad;
            int y0  = miny + rad;

            //Vizual.Vizual_Circle(zArrayPicture, pictureBox01, x0, y0, rad);    // Рисование круга
            // Заполнение нулями за пределами круга


            Vizual.Vizual_Circle(zArrayDescriptor[8], pictureBox9, x0, y0, rad);
            Vizual.Vizual_Circle(zArrayDescriptor[9], pictureBox10, x0, y0, rad);
            Vizual.Vizual_Circle(zArrayDescriptor[10], pictureBox11, x0, y0, rad);
            Vizual.Vizual_Circle(zArrayDescriptor[11], pictureBox12, x0, y0, rad);

            if ((maxx - minx) % 2 != 0)
            {
                maxx++;
            }
            if ((maxy - miny) % 2 != 0)
            {
                maxy++;
            }

            int X = maxx - minx, Y = maxy - miny;


            int k = X / 256;     X = (k + 1) * 256;        // Выравниваем на границe L=256 (для фурье с четным количеством точек)

            k = Y / 256;     Y = (k + 1) * 256;
            while (X + minx > max_X)
            {
                X = X - 128;
            }
            while (Y + miny > max_Y)
            {
                Y = Y - 128;
            }
            X = Math.Max(X, Y);

            MessageBox.Show("Реальный размер  minx=  " + (maxx - minx) + " miny=  " + (maxy - miny) + "Рекомендованный размер  =  " + X + " x " + Y);

            ZArrayDescriptor zArray = new ZArrayDescriptor(X, X);

            int x00 = 0, y00 = 0;
            int YY = X; int XX = X;

            if ((X > (maxx - minx)) && (Y > (maxy - miny)))
            {
                int kx = (X - (maxx - minx)) / 2;
                int ky = (X - (maxy - miny)) / 2;

                x00 = minx - kx; if (x00 > 0)
                {
                    XX = X - kx;
                }
                else
                {
                    x00 = 0;
                }
                y00 = miny - ky; if (y00 > 0)
                {
                    YY = X - ky;
                }
                else
                {
                    y00 = 0;
                }
                // MessageBox.Show(" kx=  " + kx + " x0=  " + x00 + " y0=  " + y00 + "X  =  " + X + "Y =  " + Y);
            }

            XX = Math.Max(XX, YY);

            if (XX + x00 > max_X)
            {
                x00 = max_X - XX;
            }
            if (XX + y00 > max_Y)
            {
                y00 = max_X - XX;
            }

            //int n = 8;
            for (int n = 8; n < 12; n++)
            {
                for (int i = x00; i < XX + x00; i++)
                {
                    for (int j = y00; j < XX + y00; j++)
                    {
                        zArray.array[i - x00, j - y00] = zArrayDescriptor[n].array[i, j];
                    }
                }
                //zArrayDescriptor[n] = zArray;
                zArrayDescriptor[n] = new ZArrayDescriptor(zArray);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Фигуры Лиссажу 3D
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button6_Click(object sender, EventArgs e)
        {
            if (checkBox1.Checked == true)
            {
                k1 = 1;
            }
            else
            {
                k1 = 0;
            }
            if (checkBox2.Checked == true)
            {
                k2 = 1;
            }
            else
            {
                k2 = 0;
            }
            if (checkBox3.Checked == true)
            {
                k3 = 1;
            }
            else
            {
                k3 = 0;
            }
            if (checkBox4.Checked == true)
            {
                k4 = 1;
            }
            else
            {
                k4 = 0;
            }

            if ((k1 + k2 + k3 + k4) != 3)
            {
                MessageBox.Show("Число флагов больше или меньше 3"); return;
            }                                                                                               // Только 3 кадра должны быть выбраны

            int[] kk = new int[4];
            { kk[0] = k1; kk[1] = k2; kk[2] = k3; kk[3] = k4; }

            int kk1 = 0, kk2 = 0, kk3 = 0;                                                                // Номер 1 и второго кадров

            for (int i = 0; i < 4; i++)
            {
                if (kk[i] != 0)
                {
                    kk1 = i; kk[i] = 0; break;
                }
            }
            for (int i = 0; i < 4; i++)
            {
                if (kk[i] != 0)
                {
                    kk2 = i; kk[i] = 0; break;
                }
            }
            for (int i = 0; i < 4; i++)
            {
                if (kk[i] != 0)
                {
                    kk3 = i; break;
                }
            }

            int w1 = Form1.zArrayDescriptor[Form1.regComplex].width;
            int h1 = Form1.zArrayDescriptor[Form1.regComplex].height;

            n     = Convert.ToInt32(textBox1.Text);
            n_end = Convert.ToInt32(textBox6.Text);

            if (n < 0 || n_end > (h1 - 1))
            {
                MessageBox.Show("n<0 || n_end>(h1-1)"); return;
            }



            ZArrayDescriptor faza = FazaClass.Lissagu3D(Form1.zArrayDescriptor, Form1.regComplex, kk1, kk2, kk3, n, n_end);

            Vizual.Vizual_Picture(faza, pictureBox2);
            //On_Liss3D(n, kk1, kk2, kk3);
        }
Ejemplo n.º 5
0
        //  ---------------------------------------------------------------------------------------------------
        //                     Фигуры Лиссажу по y 1 кадр по x - 2 кадр
        //  ---------------------------------------------------------------------------------------------------

        private void button4_Click(object sender, EventArgs e)
        {
            if (checkBox1.Checked == true)
            {
                k1 = 1;
            }
            else
            {
                k1 = 0;
            }
            if (checkBox2.Checked == true)
            {
                k2 = 1;
            }
            else
            {
                k2 = 0;
            }
            if (checkBox3.Checked == true)
            {
                k3 = 1;
            }
            else
            {
                k3 = 0;
            }
            if (checkBox4.Checked == true)
            {
                k4 = 1;
            }
            else
            {
                k4 = 0;
            }

            if ((k1 + k2 + k3 + k4) != 2)
            {
                MessageBox.Show("Число флагов больше или меньше 2"); return;
            }                                                                                               // Только 2 кадра должны быть выбраны

            int[] kk = new int[4]; { kk[0] = k1;  kk[1] = k2;  kk[2] = k3;  kk[3] = k4; }

            int kk1 = 0, kk2 = 1;                                                               // Номер 1 и второго кадров

            for (int i = 0; i < 4; i++)
            {
                if (kk[i] != 0)
                {
                    kk1 = i; kk[i] = 0; break;
                }
            }
            for (int i = 0; i < 4; i++)
            {
                if (kk[i] != 0)
                {
                    kk2 = i; break;
                }
            }

            fz[0] = Convert.ToDouble(textBox2.Text);
            fz[1] = Convert.ToDouble(textBox3.Text);
            fz[2] = Convert.ToDouble(textBox4.Text);
            fz[3] = Convert.ToDouble(textBox5.Text);

            fz[4] = Convert.ToDouble(textBox7.Text);
            fz[5] = Convert.ToDouble(textBox8.Text);
            fz[6] = Convert.ToDouble(textBox9.Text);
            fz[7] = Convert.ToDouble(textBox10.Text);

            //MessageBox.Show("kk1 =" + kk1 + " kk2 =" + kk2);
            double fzrad1 = Math.PI * fz[kk1] / 180.0;
            double fzrad2 = Math.PI * fz[kk2] / 180.0;

            int w1 = Form1.zArrayDescriptor[Form1.regComplex].width;
            int h1 = Form1.zArrayDescriptor[Form1.regComplex].height;

            n     = Convert.ToInt32(textBox1.Text);
            n_end = Convert.ToInt32(textBox6.Text);
            StepI = Convert.ToInt32(textBox12.Text);                                        // Приращение по цвету

            if (n < 0 || n_end > (h1 - 1))
            {
                MessageBox.Show("n<0 || n_end>(h1-1)"); return;
            }


            ZArrayDescriptor faza = FazaClass.Lissagu(Form1.zArrayDescriptor, Form1.regComplex, kk1, kk2, n, n_end, StepI, fzrad1, fzrad2);

            Vizual.Vizual_Picture(faza, pictureBox2);
        }