| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование игр, графики и искусственного интеллекта > Создание изометрической графики |
| Автор: lamber 6.10.2011, 15:47 |
| Столкнулся с задачей написания движка для отображения изометрической графики, но не знаю как к этой задаче подступится. Вопросов несколько. первый каким алгоритмом рисовать изометрию, как определить на каком элементе сетке был клик. Буду рад всем тем кто поделится материалом по теме. |
| Автор: dreconia 10.10.2011, 11:24 |
| Introduction to Isometric 3D http://gotoandlearn.com/play.php?id=136 http://gotoandlearn.com/play.php?id=137 Может не совсем то. Но мне пригодилось. |
| Автор: KaraKum 10.10.2011, 11:53 |
| Думаю что главная задача - это получение экранных координат из изометрических, где x увеличивается к северо-востоку, а y к северо-западу. Вот кусок кода: /*Преобразование изометрических координат в плоские. Подразумевается что изометрическйй 0,0 - это центр по обеим осям какого-либо тайла; после преобразования эта точка становится центром получившейся плоской системы координат, где каждый изначальный тайл является квадратом (восстановлен до него путём вращения вокруг оси Z и растяжением на k). \param k тангенс угла наклона - в общепринятой изометрии это тангенс некоего угла, равняющийся 0.5. */ public static function FromIso(x:Number, y:Number, k:Number = 0.5): Point { //превращаем ромб обратно в квадрат: y /= k; const SIN:Number = 0.707; const COS:Number = 0.707; //вращаем на 30 градусов против часовой стрелки: const newX:Number = x * SIN + y * COS; const newY:Number = y * SIN - x * COS; return new Point(newX, newY); } |