Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Конвертирование координат мышки в изометрические


Автор: Xrymz 29.4.2009, 19:53
Нужна помощь в нахождении определенного тайла

Нужен алгоритм который сможешь перевести координаты вида mouseX и mouseY от левого верхнего края картинки
в координаты вида (1,0) или (1,7) и т.д. (то есть непосредственно "х" и "у" тайла)

user posted image

Автор: AVA12 29.4.2009, 21:43
Главная проблема - узнать координаты выбранной клетки, хоть в какой-нибудь системе. А дальше все просто :)

Клетки задают координатную плоскость Ouv, проекции ее осей наклонены под некоторым углом к осям Ox и Oy. Проекции диагоналей клеток параллельны осям Oxy, их длины равны dx и dy. Считаем, что положительные направления проекций осей Ouv "смотрят" в положительном направлении оси Ox. Считаем, что длины сторон клеток в координатах Ouv равны 1. Тогда изменение координаты x на +-dx изменяет координаты u и v на +-1, изменение координаты y на +-dy изменяет u на -+1 и v на +-1. То есть:

ux = x/dx, vx = x/dx
uy = -y/dy, vy = y/dy

u = ux + uy = x/dx - y/dy
v = vx + vy = x/dx + y/dy

Переводим (x; y) в (u; v), отбрасываем дробную часть и получаем координаты клеток в Ouv. Затем переводим в "х и у тайла".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)