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


Автор: 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);
}

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