![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| Shad-X |
|
|||
|
Unregistered |
Подскажите пожалуйста, как заставить нарисованный в форме круг двигаться с определенной скоростью? Пользователь задает координаты 2х точек и скорость. И кружочек должен перемещаться между этими точками с заданной скоростью! Как мне все это учесть и рассчитать? Нужно ли для этого использовать Таймер, если да, то как? Заранее благодарен!
|
|||
|
||||
| Snowy |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Можешь с таймером, можешь без него.
С таймером проще. Принцип простой.
Во-первых скорость нужно спроецировать на x: rx:=rx/pi; Далее по таймеру:
Тут я не описываю a - это коэффициент отклонения от горизонта. Его можно вычислить из прямоугольного треугольника, образованными двумя точками и проекциями на оси. Надеюсь, что не перепутал x и y. |
||||
|
|||||
| Shadex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 23.5.2005 Репутация: нет Всего: 1 |
Спасибо большое! хотя ещё не совсем разобрался, но надеюсь за ночь напишу! =)
|
|||
|
||||
| Гость_welt |
|
||||
|
Unregistered |
Давай разбираться.
Смотри, можно например, написать уравнение двидения для шарика. x=x0+vt y=sqrt(L*L-(vt+x0)^2). Но можно проще. ![]() Пишеш уравнение прямой АB, где А и B твои точки. Как уже гоаорилось выше, у тебя будет прямоугольный треугольник. Поэтому например можно разбить обну из его сторон на несколько частей, т.е получить шаг, с которым будем перемещаться по оси ОХ, затем, подставляя этот постоянный шаг в уравнение АВ, будем получать переменный шаг по оси ОУ. (см. рисунок) Далее с этим шагом в цикле рисуешь шарик Кстати, скорость будет зависеть от числа, на которое разобьешь отрезок.. А вот, чтобы использовать таймер. Напиши процедуру Delay вот как..
Получится примерно следующее.
У меня получилось сделать, только когда xa=0 и xb=0, а координа ты второй точки произвольны, уж сам разбирешься как исправить.. |
||||
|
|||||
| dux |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 30.6.2005 Репутация: нет Всего: нет |
А зачем каждый раз прорисовывать окружность, если можно перемещать сам Image1?
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
А зачем вообще было поднимать старую тему?
одну из точек принимать за (0,0), а потом просто к обеим прибавлять смещение для отрисовки. Только это уже не актуально. Человеку это уже не нужно - месяц прошел. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |