|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2009
Сообщений: 357
|
как узнать: увеличивается ли расстояние между объектами или наоборот?
есть объект, который двигают мышью. и объект, приближение к которому нужно узнать.
как узнать, увеличивается ли расстояние между объектами или наоборот? |
|
|||||
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Сравнивать их расстояние каждый кадр. Если следующее больше предыдущего, значит увеличивается.
Расстояние находится по формуле Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
__________________
#flasher@irc.trg.ru:6667 Последний раз редактировалось Obi; 21.08.2009 в 22:12. |
|
|||||
наверно более быстрый вариант - спроецировать смещение на вектор между ними и поглядеть на знак, тем более если p поделить на Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)), то получим скорость сближения:
p=((x1-xold1)-(x2-xold2))*(x1-x2)+((y1-yold1)-(y2-yold2))*(y1-y2); if(p<0) trace("сближаются"); else trace("расходятся"); P.S. может в знаке ошибся |
|
|||||
Регистрация: Mar 2009
Сообщений: 357
|
спасибо. а как узнать, в какую сторону (вверх или вниз) движется объект? видимо, нужно сравнивать положение объекта с предыдущим его состоянием. только вот как?
|
|
|||||
а зачем использовать вычисление корня. можно вполне обойтись (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)
я думаю, если увеличивается расстояние, то будет увеличиваться и квадрат расстояния. (хотя если нужно знать расстояние точно, то нужно и корень извлеч) Добавлено через 3 минуты Цитата:
соответственно: ((yOld - yNew) > 0) - вверх, ((yOld - yNew) < 0) - вниз
__________________
я могу стать всем, если только захочу |
|
|||||
Регистрация: Jan 2009
Сообщений: 1,651
|
2loover: что значит как? Чудес в этой вселенной не бывает. Если вам нужно сравнить положение объекта с его предыдущим состоянием, то это значит, что это предыдущее состояние надо запомнить.
|
|
|||||
Регистрация: Mar 2009
Сообщений: 357
|
в том то и дело: я не знаю когда сохранять одно значение, а когда его сравнивать с текущим.
мне нужно что-то типа скроллера. т.е. чтобы один объект сдвигался относительно другого при перемещении последнего. например, если ползунок сдвинулся на 1 - контент на 2.3. можно запоминать значение в момент MOUSE_MOVE и, если текущее положение объекта не равно этому значению, обновить значение. но это нормально работает, если мышь двигается не очень быстро. в противном случае MOUSE_MOVE отслеживает сдвиг не на один пиксель, а как получится. |
|
|||||
Ну, перерисовывайте по ENTER_FRAME, правда не понятно зачем вообще это нужно Сдвиг в один пиксель отследить нереально, да и не нужно. По-моему, вам нужно просто пропорцию составить, если я правильно понял. Посчитать какой процент пути прошел ползунок и на такой же процент сдвинуть контент.
__________________
Дело не в тебе |
|
|||||
Регистрация: Feb 2009
Сообщений: 1,195
|
Сохранять надо сразу перед изменением. Какие ещё могут быть варианты?
|
Часовой пояс GMT +4, время: 01:50. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|