| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > движение шара |
| Автор: Тьма 24.8.2006, 12:20 |
| добрый день у меня такой вопрос: мне надо в ДельфиИкс нарисовать спрайт(шар), который будет двигаться прямолинейно под углом к низу монитора, и отбиваться от его края. проблема вот в чем: я не знаю как реализовать движение шара, поиск по форуму не очень помог, гугл тоже(может я не то искал) помогите плиз |
| Автор: Alexeis 24.8.2006, 12:26 |
Через определенные промежутки времени изменять координаты согласно функции движения (в данном случае функция получается из уравнения прямой) и проверять, если рядом с границей, то менять функцию движения (менять угол наклона прямой) |
| Автор: Тьма 24.8.2006, 12:39 |
| это понятно функция движения y=kx+b ? но это не подходт т.к две неизвестные |
| Автор: Alexeis 24.8.2006, 13:07 |
Ну прям неизвестные, еще есть уравнение скорости 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 внизу ))) |