Конференция "Media" » Движение "пули" по комнате [D7, WinXP]
 
  • Гвоздь (12.03.11 15:23) [0]
    В общем про комнату: Высота - H+R, где H -высота прямоугольной области, а R - радиус дуги; Ширина комнаты получается - 2R; т.е. она представляет прямоугольник и вместо верхней планки полуокружность.
    Из центра пола комнаты вылетает пуля под "любым" углом (внутри комнаты). Пуля отскакивает от стен. Она летает пока не коснется пола. Должна оставлять след. Скорость движения пули может изменятся во время полета и должна быть равномерной.

    комната должна выглядеть так:

     R:=SpinEdit1.Value div 2;        //радиус
     H:=SpinEdit2.Value;               //высота h
     with PaintBox1, Canvas do begin
       Brush.Color:=clWhite;
       FillRect(Rect(0,0,Width,Height));
       Pen.Color:=clBlack;
       x0:=(PaintBox1.Width div 2)-R;
       y0:=(PaintBox1.Height div 2)+((R+H) div 2);

       MoveTo(x0,y0);
       LineTo(x0,y0-h);
       MoveTo(x0,y0);
       LineTo(x0+2*R,y0);
       LineTo(x0+2*R,y0-h);

       arc(x0,y0-R-H,x0+2*R,y0-h+R,x0+2*R,y0-h+1,x0,y0-h+2);
     end;



    Теперь непонятное: как мне сделать движение пули?? вообще непонятно, еще ведь нужно чтобы равномерно летела, независимо от угла наклона прямой
    Подайте хотя бы идею, я думал может если выразить из уравнения прямой X=KY+B и изменять Y на +1 или -1, и вычислять из них X, то при почти параллельной прямой относительно X, скорость явно будет не равномерной!.
    Посоветуйте, как лучше сделать. Думаю все понятно объяснил) Заранее спасибо
  • Чайник © (12.03.11 19:25) [1]
    Картинка, как я понимаю, плоская?
    Вводишь временную ось Z, наклоненную к оси X под углом А.
    Начало оси - в точке Xo, Yo.
    Движение вдоль этой оси - Z=Zo + Vt.
    Проекция точки Z на оси X и Y : X=Xo+ZcosA; Y=Yo+ZsinA
    При отскоке от вертикальной стенки - точка столкновения становится новой  Zo, угол наклона меняется А=-А.
    При отскоке от полукруглой арки - лениво думать, сам сообрази. Помни только, что угол падения равен углу отражения.
  • Гвоздь (13.03.11 09:51) [2]

    > Картинка, как я понимаю, плоская?

    Да плоская.

    > Движение вдоль этой оси - Z=Zo + Vt.

    Vt я как понимаю это что то типа шага?
    А угол А это и есть угол прямой, да?
  • MBo © (13.03.11 11:09) [3]
    Vx и Vy - составляющие скорости по осям.
    Для элементарного перемещения за время dt
    Xnew = Xold + Vx * dt
    Отражение от верт. или горизонтали - просто изменение знака одной из сост. скорости.

    В общем-то, это школьная программа включает...
  • Гвоздь (16.03.11 04:00) [4]
    Спасибо большое, мне нужна была идея, просто в голову ничего не приходило.
  • scharkhowa (13.11.13 17:40) [5]
    http://industriefer.ru/cat/radiators/15/
    > Картинка, как я понимаю, плоская?

    Да плоская.

    > Движение вдоль этой оси - Z=Zo + Vt.

    Vt я как понимаю это что то типа шага?
    А угол А это и есть угол прямой, да?

    Если картина плоская то в доль оси может без проблем лететь
 
Конференция "Media" » Движение "пули" по комнате [D7, WinXP]
Есть новые Нет новых   [118574   +16][b:0][p:0.001]