![]() |
|
||||||||||
|
|||||
|
3 часа бьюсь неполучается... есть изметрическая сетка, угол 30... так вот нужно перевести кооррдинаты мышы в эту изомтрию.... Примерно вот так:
__________________
Code Different |
|
|||||
|
О! Как всегда спасибо тебе огромное! А как ещё определить на что нужно делить , если угол изменится например скажем на 15 или 45, какая закономерность, от чего зависят делители?
__________________
Code Different |
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
Здравствуйте vitlance!
Не совсем понятна задача. Если Вы имели ввиду трансформацию координатной системы это одно, а если Вы имели ввиду перевод координат декартовой системы в полярную это другое. Уточните пожалуйста.
__________________
Случайность, господа, это знаете ли непознанная необходимость. |
|
|||||
|
Я имел ввиду перевод из декартовой в изометричесую
__________________
Code Different |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
Не думаю, что брать углы за основу хорошая идея. Ведь на самом деле угол на рисунке в первом посте не равен 60 градусам. Тангенс 60 равен корню из трех, это примерно 1.732, а у вас там соотношение 2 к 1, то есть тангенс угла имеет значение 2, значит сам угол примерно равен 63.434 градусам.
Поэтому за основу лучше брать соотношение длины к высоте, то есть ratio. Получаем Для рисунка ratio = 2, для угла в 45 градусов ratio = 1 |
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
Уважаемый vitlance!
Насколько я понял Вы хотите по событию клика мыши произвести пересчет координат точки клика из декартовой системы координат в координатную систему изосетки. Если это так, то такой пересчет Вы сможете получить, использовав мою эксклюзивную функцию (см.вложение). Для пользования представленным алгоритмом Вам понадобятся декартовы координаты 3 точек ячейки: 1 т- начало координат (см.Ваш рисунок) - pt_1 (имена аргументов функции в программе); 2 т-верняя точка (где y максимален, x=0) - pt_2; 3 т-нижняя точка (где x максимален, y=0) - pt_3; Проверить алгоритм довольно сложно, но можно использовать ключевые моменты: 1. По всей линии оси X y должен быть близок или равен 0; 2. По всей линии оси Y x должен быть близок или равен 0; Используйте эти критерии для определения работоспособности функции. Теперь на счет угла. Если Вы не хотите использовать конкретные декартовы координаты точек в качестве исходных данных, а хотите использовать угол поворота (кстати такая изометрическая система повернута в двух направления - вокруг оси X и вокруг оси Y), то для расчета внутренних коэффициентов k1 и k2 Вы должны использовать запись вида y=tg(alpha)*x+b. Я думаю переделать для угла алгоритм не составит труда.
__________________
Случайность, господа, это знаете ли непознанная необходимость. |
|
|||||
|
Всё разобрался.... иНилс и Алекс большое спасибо!
__________________
Code Different |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:23. |
|
|
« Предыдущая тема | Следующая тема » |
|
|