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(); // } }
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; } }
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; }
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; }