Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > движение шара


Автор: Тьма 24.8.2006, 12:20
добрый день
у меня такой вопрос: мне надо в ДельфиИкс нарисовать спрайт(шар), который будет двигаться прямолинейно под углом к низу монитора, и отбиваться от его края. проблема вот в чем: я не знаю как реализовать движение шара, поиск по форуму не очень помог, гугл тоже(может я не то искал)

помогите плиз

Автор: Alexeis 24.8.2006, 12:26
Цитата(Тьма @  24.8.2006,  12:20 Найти цитируемый пост)
 я не знаю как реализовать движение шара

Через определенные промежутки времени изменять координаты согласно функции движения (в данном случае функция получается из уравнения прямой) и проверять, если рядом с границей, то менять функцию движения (менять угол наклона прямой)

Автор: Тьма 24.8.2006, 12:39
это понятно функция движения y=kx+b ? но это не подходт т.к две неизвестные

Автор: Alexeis 24.8.2006, 13:07
Цитата(Тьма @  24.8.2006,  12:39 Найти цитируемый пост)
но это не подходт т.к две неизвестные

Ну прям неизвестные, еще есть уравнение скорости 
dL/dt = v, где dL = sqrt(sqr(dx)+sqr(dy));
Кроме того вектор начального направления (dx, dy)
И стартовая позиция x0, y0.
Вот сколько у нас данных. 
Из всего имеющегося несложно получить 
x(t) = k1 * t + b1;
y(t) = k2 * t + b2;

или для конечных интервалов dt
x = x + k1 * dt;
y = y + k2 * dt;
это производится по таймеру через каждые dt мс.
потом рисуется сфера с центорм в x, y.


Автор: Тьма 24.8.2006, 13:10
спасибо

Автор: Тьма 24.8.2006, 15:30
если кому-то надо то я решил это так:
  x := x - cos((Angle*pi)/180)*(100/1000)*MoveCount;
  y := y - sin((Angle*pi)/180)*(100/1000)*MoveCount;

при этом ноль градусов слева, 90 сверху, 180 справа, и 270 внизу )))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)