Вход

Просмотр полной версии : Поворот обектов по траектории.


TheBird
15.03.2006, 14:50
Задача такова:
Есть две точки x1 y1 и x2 y2.
Это настоящая и предыдущая координаты объекта.
Надо поворачивать объект "по пути".

Соорудил дакую конструкцию -

_rotation = (180*Math.atan2((x2-x1), (y2-y1)))/Math.PI;

крутит, но совсем не в ту сторону.

а как правильно?

sem1313
15.03.2006, 18:31
минус перед скобкой поставь...

И усё...

TheBird
15.03.2006, 19:18
то есть так?

_rotation = -(180*Math.atan2((x2-x1), (y2-y1)))/Math.PI);

не сработало =/

sem1313
15.03.2006, 19:29
Все выражение возьми в скобки и перед ними минус.
Кстати у тебя помойму лишняя скобка, или не хватает одной в самом начале...

TheBird
15.03.2006, 20:19
так и сделал.

флешь все компилит, на каких-то значениях все ок.

всеравно что-то не так

antiflasher
15.03.2006, 20:24
если есть скорость у движения объекта
//vx это скорость движения по оси X
//vy это скорость движения по оси Y
_rotation=Math.atan2(vy, vx)*180/Math.PI

TheBird
15.03.2006, 20:29
всем спасибо, все заработало =)

sem1313
15.03.2006, 20:32
Описываю на пальцах.

мс._rotation = angle // ПОВОРАЧИВАЕТ ОБЪЕКТ ПО ЧАСОВОЙ СТРЕЛКЕ
мс._rotation = -angle // ПОВОРАЧИВАЕТ ОБЪЕКТ ПО ПРОТИВ ЧАСОВОЙ

И как говориться, Усё... );

TheBird
15.03.2006, 22:07
ан нет... не заработало %))

задача усложняется...

в "нормальном" измерении ось координат исчисляется из левого верхнего угла.
а если из левого нижнего...
то есть ось Y инвертирована?

sem1313
15.03.2006, 22:15
Тебе, товарищь, что нужно???
У тебя объект крутиться?
В какую сторону?
Что значит "нормальном" измерении?
А если? А если? А если? А если? А если?.....
Тебе что нужно?
И пожалуйста по конкретнее, если ты хочешь, что бы тебе помогли.

TheBird
16.03.2006, 23:48
Ок.

Программа расставляет корабли по карте в соответсвии с GPS данными.

на данный момент сделано вот это:
http://217.19.68.3/fleetmap/index.html

проблема в том что на земном шаре координаты считаются от экватора по Y и от гринвича по X.

К счастью в моем случае только один корабль пересекает Гринвич, где координаты по X начинают считаться не с лева на право а право на лево. За то по Y они везде считаются не с верху вниз, как принято в компутерной графике, а с низу вверх (от экватора).

В результате при использовании таких кординат (где нижняя точка с меньшим значением по Y) стандартный расчет поворота работает не правильно.
Можете сами попробовать.

aksios
17.03.2006, 00:38
Не, ну и в чем проблема? - опиши преобразование координат - это программа средней школы.

TheBird
17.03.2006, 00:40
то есть обращать координаты для расчета поворота задомнаперед?

Antares
17.03.2006, 00:47
то есть обращать координаты для расчета поворота задомнаперед?
Это в первую очередь переход в другую систему координат.

TheBird
17.03.2006, 00:51
у меня там и так изначально координаты в радианах, потом все переводится по формулам отдельно для X и Y в координаты карты...
все оч. запущено...

и поворот караблика я считаю по цифрам с блинным хвостом после запятой...
они выводятся в менюшке к каждому кораблю.

Antares
17.03.2006, 01:32
В радианах могут быть углы, но не координаты. Преобразования координат -- это всего пара формул (http://www.relativity.ru/issues/coords.shtml#convert) (ну, грубо говоря, не больше 6 для самых распространенных случаев).

K.A.T.A.F.A.L.K.E.R
17.03.2006, 01:40
В радианах могут быть углы, но не координаты.
А чем угол - не координата? ;)
А вообще лично я так и не смог понять, в чем проблема?..

Antares
17.03.2006, 01:45
А чем угол - не координата? ;)

Формально, конечно, координата. Параметр описания положения объекта. Но обычно люди так говорящие -- математики, и таких вопросов не задают. Вот я и подумал. Зря, видимо. Думать вредно.

Double
17.03.2006, 21:08
я, наверное, идиот, но
1. о каком повороте может идти речь при описаных 2х точках? двумя точками можно описать лишь прямую!
2. о каком преобразовании координат идёт речь? я так понял, что имеются широта и долгота. в какой проекции строится карта? конической? цилиндрической? равноугольной азимутальной косой? поликонической? да два десятка других смогу озвучить.
p.s. "можете сами попробовать..." пробовал много раз. надо-то чего?

valvika
17.03.2006, 21:41
проблема в том что на земном шаре координаты считаются от экватора по Y и от гринвича по X.
Лучше не говорить подобных глупостей, а сформулировать задачу конкретно. Здесь на форуме есть несколько человек, способных помочь.
Первый и глобальный вопрос. Насколько твоя карта точная и в какой картографической проекции сделана?
Второй. Какая точность расположения обьекта допустима. Если тебе нужна точность порядка 5-10 метров, то бросай заниматься этим на флеш.

K.A.T.A.F.A.L.K.E.R
17.03.2006, 21:48
о каком повороте может идти речь при описаных 2х точках? двумя точками можно описать лишь прямую!
А прямая не имеет угол наклона к любой оси в Декартовой системе координат? ;)

valvika
17.03.2006, 21:55
А прямая не имеет угол наклона к любой оси в Декартовой системе координат? ;)
На земной поверхности не работает двумерная Декартова система координат.

K.A.T.A.F.A.L.K.E.R
17.03.2006, 22:13
На земной поверхности не работает двумерная Декартова система координат.
ага, а еще никакое тело не летает по параболе... Какого порядка расстояния? 10-100 км? Да при таких расстояних матушка-Земля до такой степени плоская, что более правильную плоскость еще нужно поискать!!! :rolleyes:

valvika
17.03.2006, 22:29
ага, а еще никакое тело не летает по параболе... Какого порядка расстояния? 10-100 км? Да при таких расстояних матушка-Земля до такой степени плоская, что более правильную плоскость еще нужно поискать!!! :rolleyes:И где у тебя будут Декартовы оси координат? Укажи их, плз. Для каждого обьекта выбирать свои оси - не пройдет.

Похоже автор топика просто не может перевести гео-координаты ( долгота/широта ) в плоские коорды не карте. Поэтому все кораблики у него и крутятся как попало.

K.A.T.A.F.A.L.K.E.R
17.03.2006, 22:49
Ось ОХ параллельно экватору, ОУ - куда останется...
Да какая вообще разница? Выбор системы координат - дело исключительно условное. И, по-моему, сферическая система координат ничем не хуже Декартовой - координата нумер раз=радиус Земли = Const, и два угла.
З.Ы. "и тут меня зафлеймило..."

valvika
17.03.2006, 23:02
Ось ОХ параллельно экватору, ОУ - куда останется...
Да какая вообще разница? Выбор системы координат - дело исключительно условное. И, по-моему, сферическая система координат ничем не хуже Декартовой - координата нумер раз=радиус Земли = Const, и два угла.
З.Ы. "и тут меня зафлеймило..."
Не хочу спорить по пустому. Сделаешь когда-нибудь хоть раз - с удовольствием.
Чисто для информации.По поводу сферических координат. Земля - это не шар, это даже не эллипсоид. Принято специальное название для него - геоид. Т.е. земную поверхность в окрестности каждой своей точки можно приближенно считать конкретным ( и различным для каждой такой точки ) эллипсоидом.

K.A.T.A.F.A.L.K.E.R
17.03.2006, 23:25
Опять началось "не сфера", "не плоскость". Прочитай пост #23. Дискуссия зациклилась. Пора сделать break. Тема себя исчерпала.

Double
18.03.2006, 11:35
K.A.T.A.F.A.L.K.E.R, ну вроде же речь шла о движении по пути. Если проблема сориентировать об'ект на наклонной прямой, то это клиника и ни о каком пути автору серьёзно задумываться не стОит.
О применимости декартовой системы координат: думаю, что кораблики всё же плавают на более существенные расстояния, чем 100км :) Я вот тоже когда нарисовал карту Украины в цилиндрической проекции (широта=Y, долгота=Х, самое простое) очень удивился. Пришлось прикручивать коническую проекцию (изначально я надеялся, что это придётся делать только на этапе отрисовки России. Фиг там, для России вообще пришлось косую азимутальную делать). Если у него кораблики станут плавать по обе стороны экватора, ему придётся какую-нить составную проекцию делать (поликоническую или что-нить более навороченое). А может быть будет достаточно прямой азимутальной (если разброс корабликов по долготе будет меньше 100 градусов и он с умом будет выбирать центральный меридиан в проекции). Одним словом тут общих решений нет, сплошные частности.
P.S. а автор-то похоже почитал этот диспут, да и решил забить на свои кораблики ;)