![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 24.05.2011
Сообщений: 39
|
![]()
Доброго времени суток!
Столкнулся вот с какой проблемой: Нужно переместить timage по траектории кривой линии. Т.е. пользователь кликает мышкой на форме, и timage должна ползти к этим координатам. Чтобы лучше представить, это аналог lineto,moveto, только вместо линии будет картинка ползти по такой же траектории. Вопрос в том как заставить ее это делать? А именно, правильно рассчитать ее координаты... lineto, moveto рассчитывает точки между начальной и конечной автоматически, а как посчитать их для timage? Заранее спасибо. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 26.01.2010
Сообщений: 215
|
![]()
Вспомнить геометрию
заведите переменные DestX DestY - координаты куда ползти DX DY приращение которое будет прибавлятся к текущим координатам каждый определенный промежуток времени при клике мышой расчитываем DX DY в таймере прибавляем эти смещения к текущим координатам, в конце желательно делать проверку на минимальное растояние иначе может начать прыгать
Могу лишь пнуть в нужном направлении (ну или как получится)
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
![]()
а картинка тол все-таки по прямой будет двигаться =)
вот к примеру если вам из точки 0,0 нужно передвинуть мячик в 50,100 то что получается? за одно и то же время по Х мячик должен проехать 50 пикселов, а по У - 100 пикселов. время возьмем условно - в шагах. допустим мячик должен передвинуться из 0,0 в 50,100 за 50 шагов. что это значит? это значит что за один шаг по Х мячик будет проезжать 50 рх/50 шагов = 1 рх, а по У - 100 рх / 50 шагов = 2 рх. т.е. на каждой итерации вы должны к Х прибавлять 1, а к У - 2. так же точно для любых других координат. кстати, я для своего объяснения взял две точки - 0,0 и 50,100 в вашем случае, когда вы кликаете по форме это будут точки [текущее положение мячика] и [куда ткнули мышкой] |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 24.05.2011
Сообщений: 39
|
![]()
2 Swarog
Нет, в этом случае, как уже сказал xrob, timage будет двигаться прямо, ну или не туда, куда нужно =) 2 xrob Ваш метод не правильно вычисляет координаты. Хотя при определенных числах он работает. Как я написал в первом посте, нужно вычислить промежуточные координаты. Их надо вычислять по этой формуле: Код:
Код:
ps. Кстати, сорри за оффтоп, но как тут репутация начисляется? Последний раз редактировалось ros.pro; 26.05.2011 в 18:08. |
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 26.01.2010
Сообщений: 215
|
![]() Цитата:
вот реализация в коде. компонент будет бегать за курсором. Код:
Могу лишь пнуть в нужном направлении (ну или как получится)
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Построение кривой безье. | faustinus | Помощь студентам | 1 | 26.12.2010 18:02 |
Кривой synapse? | chikaga | Работа с сетью в Delphi | 2 | 15.12.2010 12:03 |
Парсинг страницы с кривой кодировкой | gamer123 | Общие вопросы Delphi | 12 | 20.09.2010 07:54 |
Кривой макрос | Евгений К. | Microsoft Office Excel | 1 | 24.08.2010 18:33 |
Кривой код | Slimbr | Помощь студентам | 0 | 10.12.2009 18:13 |