예제 #1
0
        private void CommandInit_Click(object sender, EventArgs e) //Кнопка "Данные"
        {
            if (TextDeltaFi.Text == "" || TextLambdaA.Text == "")
            {
                MessageBox.Show("Заполните все поля!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                CommandStart.Enabled = true;
                //DeltaFi = Convert.ToDouble(TextDeltaFi.Text);

                DeltaFi = double.Parse(TextDeltaFi.Text, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);
                LambdaA = double.Parse(TextLambdaA.Text, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);

                InitAxis();//Определяет вид систем координат д/отображения катящегося колеса(Аксис1) и траекторий точек радиуса колеса(Аксис2)

                //точка A
                Xa = (float)(-4 * Pi);
                Ya = (float)(1 - LambdaA);

                //Колесо
                Xo = (float)(-4 * Pi);
                Yo = 1;
                Axis1.StatToDin();//
                Axis1.Pix_type = 3;
                Axis1.Pix_Size = 2 / XBase;
                Axis1.PixDraw(Xo, Yo, Color.Red, 2);//

                //радиус
                Axis1.Pix_color = Color.Blue;
                Axis1.Line(Xa, Ya, Xo, Yo, 2); //
                Axis1.DinToPic();              //
            }
        }
예제 #2
0
        private void CommandInit_Click(object sender, EventArgs e)
        {
            CommandStart.Enabled = true;

            //радиусы колес
            R1 = float.Parse(TextR1.Text, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo); //неподвижное
            R  = float.Parse(TexTR.Text, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);  //колесо подвижное

            if (R > R1)
            {
                MessageBox.Show("Радиус внутреннего колеса должен быть меньше радиуса наружного!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                Fimax   = float.Parse(TextFiMax.Text, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);
                DeltaFi = float.Parse(TextDeltaFi.Text, System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);
                //размеры полей отображения
                XBase = (float)Round(R1 + 1.2);
                YBase = (float)Round(R1 + 1.2);
                InitAxis();

                //Колесо неподвижное
                Xo1            = 0;
                Yo1            = 0;
                Axis1.Pix_type = 3;
                Axis1.Pix_Size = 2 * R1 / XBase;
                Axis1.PixDraw(Xo1, Yo1, Color.Black, 1);

                //Колесо подвижное
                Xo             = R1 - R;
                Yo             = 0;
                Axis1.Pix_Size = 2 * R / XBase;
                Axis1.PixDraw(Xo, Yo, Color.Blue, 2);

                //Начальные координаты точки А
                Xa = R1;
                Ya = 0;
                //радиус
                Axis1.Pix_color = Color.Black;
                Axis1.Line(Xa, Ya, Xo, Yo, 2);
                Axis1.DinToPic();

                m  = R / R1;
                Fi = 0;

                //Отображение траектории точки А
                while (Fi < Fimax)
                {
                    X = (float)((R1 - R) * Cos(m * Fi) + R * Cos(Fi - m * Fi));
                    Y = (float)((R1 - R) * Sin(m * Fi) - R * Sin(Fi - m * Fi));
                    Axis2.PixDraw(X, Y, Color.Black, 0);
                    Fi = Fi + DeltaFi;
                }
                ;

                Fi = 0;
            }
        }
예제 #3
0
        private void Timer1_Tick(object sender, EventArgs e)
        {
            //траектория точки A
            Xa             = (float)((R + R1) * Cos(m * Fi) - R * Cos(Fi + m * Fi));
            Ya             = (float)((R + R1) * Sin(m * Fi) - R * Sin(Fi + m * Fi));
            Axis1.Pix_type = 1;
            Axis1.Pix_Size = 0;
            Axis1.PixDraw(Xa, Ya, Color.Blue, 1);

            //колесо подвижное
            //новые координаты центра колеса
            Xo             = (float)((R + R1) * Cos(m * Fi));
            Yo             = (float)((R + R1) * Sin(m * Fi));
            Axis1.Pix_type = 3;
            Axis1.Pix_Size = 2 * R / XBase;
            Axis1.PixDraw(Xo, Yo, Color.Blue, 2); //рисуем колесо
            Axis1.Line(Xa, Ya, Xo, Yo, 2);        //рисуем радиус
            Axis1.DinToPic();
            Fi  = Fi + DeltaFi;
            Fi1 = Fi * m;
        }
예제 #4
0
        private void Timer1_Tick(object sender, EventArgs e)
        {
            Lambda = 0;


            while (Lambda < LambdaA)
            {
                X = (float)(Fi - Lambda * Sin(Fi));
                Y = (float)(1 - Lambda * Cos(Fi));
                Axis2.PixDraw(X, Y, Color.Black, 0);
                Lambda = Lambda + DeltaLambda;
            }
            ;

            Xo = (float)Fi;
            Yo = 1;

            //новые координаты точки А
            Xa = (float)(Fi - LambdaA * Sin(Fi));
            Ya = (float)(1 - LambdaA * Cos(Fi));

            //рисуем точку траектории в статический буфер
            Axis1.Pix_type = 1;
            Axis1.Pix_Size = (float)(0.01 * (YBase / XBase));
            Axis1.PixDraw(Xa, Ya, Color.Red, 1);

            //рисуем колесо в динамический буфер
            Axis1.Pix_type = 3;
            Axis1.Pix_Size = 2 / XBase;
            Axis1.PixDraw(Xo, Yo, Color.Red, 2);

            //рисуем радиус в динамический буфер
            Axis1.Pix_color = Color.Blue;
            Axis1.Line(Xa, Ya, Xo, Yo, 2);

            //отображаем общую картинку
            Axis1.DinToPic();
            Fi = Fi + DeltaFi;
        }