Скатывание шарика с эллиптической горки

Автор работы: Пользователь скрыл имя, 08 Ноября 2015 в 13:46, курсовая работа

Описание работы

Из перечисленных примеров может сложиться впечатление, что некоторые математические объекты и операции не реализуются компьютером в их совершенстве и полноте, но таких объектов как будто мало, и их нужно специально отыскивать. Однако такое впечатление, если бы оно возникло, было бы ошибочным. В действительности, пожалуй, нет таких математических объектов и операций, которые были воплощены в компьютере точно. Так, самая очевидная и простая операция - сложение целых чисел - может быть выполнена компьютером лишь для некоторых целых чисел.

Файлы: 1 файл

Курсовая работа по мат методам.docx

— 140.65 Кб (Скачать файл)

  kadr.Canvas.MoveTo(200, 600 - 400);

  kadr.Canvas.LineTo(200, 600 - 300);

  kadr.Canvas.MoveTo(0, 0);

  kadr.Canvas.LineTo(0, 600);

  kadr.Canvas.LineTo(900, 600);

  kadr.Canvas.LineTo(900, 0);

  kadr.Canvas.Brush.Color := clGreen;

  kadr.Canvas.FloodFill(100, 400, 0, fsBorder);

  if alf = 0 then

    alf := 0.0001;

  kadr.Canvas.Ellipse(round(x - 20), round(600 - y - 20), round(x + 20), round(600 - y + 20));

  Form1.Canvas.Draw(0, 0, kadr);

  for i := 1 to us do

  begin

    //Делаем сдвиг

    v := sqrt(sqr(vx) + sqr(vy));

    fs := n * Re * s * v;

    Fsx := -Vx * fs / v;

    Fsy := -Vy * fs / v;

    Fx := Fsx;

    Fy := Fsy - Ft;

    Ax := Fx / m;

    Ay := Fy / m;

    Vx := Vx + ax * dt;

    Vy := Vy + ay * dt;

    k1 := tan(pi / 2 - alf);

    b1 := y - k1 * x;

    k2 := -tan(alf);

    b2 := y0 - k2 * x0;

    xp := (b2 - b1) / (k1 - k2);

    yp := k1 * xp + b1;

    d := sqrt(sqr(x - xp) + sqr(y - yp));

    if d <= r then

    begin

      v := sqrt(sqr(vx) + sqr(vy));

      fi := -ArcTan(vx / vy);

      bet := fi + alf;

      gam := pi / 2 - alf - bet;

      vx := v * cos(gam);

      vy := v * sin(gam);

      x := x + vx * dt;

      y := y + vy * dt;

    end

    else

    begin

      x := x + vx * dt;

      y := y + vy * dt;

    end;

    if x > 920 then

      Form1.Timer1.Enabled := False;

  end;

end;

 

//Таймер движения с горки

procedure TForm1.Timer2Timer(Sender: TObject);

var

  xx, yy, ras, d, Fp, Fs, Ftr, Ftrx, Ftry, Fu, Fux, Fuy, Fx, Fy, ax, ay: Real;

  i: Integer;

begin

  Kadr.Canvas.Brush.Color := clWhite;

  kadr.Canvas.FillRect(rect(0, 0, 900, 600));

  kadr.Canvas.Pen.Color := 0;

  kadr.Canvas.Pen.Width := 3;

  kadr.Canvas.MoveTo(200, 600 - 400);

  kadr.Canvas.LineTo(200, 600 - 300);

  kadr.Canvas.MoveTo(round(x0), round(600 - y0));

  kadr.Canvas.LineTo(round(900), round(600 - y0 + (900 - x0) * sin(alf) / cos(alf)));

  kadr.Canvas.Arc(0, 600 - 800, 400, 600 - 400, 0, 600 - 600, 200, 600 - 400);

  xx := x2 + ((xc - x2) * 20 / rg);

  yy := y2 + ((yc - y2) * 20 / rg);

  Kadr.Canvas.Ellipse(Round(xx - 20), 600 - Round(yy - 20),

                      Round(xx + 20), 600 - Round(yy + 20));

  kadr.Canvas.MoveTo(0, 0);

  kadr.Canvas.LineTo(0, 600);

  kadr.Canvas.LineTo(900, 600);

  kadr.Canvas.LineTo(900, 0);

  kadr.Canvas.Brush.Color := clGreen;

  kadr.Canvas.FloodFill(100, 300, 0, fsBorder);

  for i := 1 to us do

  begin

    x2 := x2 + vvx * dt;

    y2 := y2 + vvy * dt;

    ras := sqrt(sqr(xc - x2) + sqr(yc - y2));

    d := ras - (Rg);

    Fp := Ft * (Yc - y2) / Rg;

    Fs := Ft * (xc - x2) / Rg;

    Ftr := mu * Fp;

    Ftrx := -Ftr * (yc - y2) / Rg;

    Ftry := Ftr * (xc - x2) / Rg;

    Fu := k * d;  //

    Fux := Fu * (xc - x2) / Rg;

    Fuy := Fu * (yc - y2) / Rg;

    Fx := Fux + Ftrx;

    Fy := -Ft + Fuy + Ftry;

    ax := Fx / m;

    ay := Fy / m;

    Vvx := vvx + ax * dt;

    vvy := vvy + ay * dt;

  end;

  //Если закончился скат с горки то передаем данные другому таймеру, отключаем

  //этот таймер, включаем  другой таймер

  if xx >= 200  then

  begin

    vx := vvx;

    vy := vvy;

    x := x2;

    y := y2 + 20;

    Form1.Timer2.Enabled := False;

    Form1.Timer1.Enabled := True;

  end;

  Form1.Canvas.Draw(0, 0, kadr);

end;

end.


Информация о работе Скатывание шарика с эллиптической горки