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


Автор: APXEOLOG 22.9.2009, 20:31
Допустим у нас есть карта 10*10, каждая клетка - квадрат 32*32. В старых 2Д играх вполне успешно делали горы (т.е. высоту). 
Как собственно сделать эту самую высоту имея только две оси? И как рассчитать что надо отрисовывать и с какими отклонениями?

Автор: GLeBaTi 22.9.2009, 21:06
Так там наверное просто рисовали эти горы в 3D и фоткали это изображение )
http://festival.1september.ru/articles/419668/Image200.jpg

Автор: 7maze 22.9.2009, 21:41
Вставляли как рисунки(спрайты), если один квадрат  = горе, то вообще легче простого (правда сам рисунок мог быть больше 32x32 для большой реалистичности), если-же  гора несколько квадратов - то просто билось изображение на части и отрисововалось (starcraft)

Автор: piritus 22.9.2009, 22:13
Если всё же есть желание самому рисовать, то можно почитать про 3d вращение тут:
http://www.siggraph.org/education/materials/HyperGraph/modeling/mod_tran/3drota.htm

а применительно изометрической проекции перевод на экранные координаты
осуществляется следующим образом:

Xscr=(y-x)*sqrt(3)/2;
Yscr=(y+x)/2-z;

где scr - экранные координаты
sqrt(3)/2=0.86602

Автор: APXEOLOG 23.9.2009, 06:48
Спасибо за ответы попробую воплотить в жизнь.

Автор: jericho6 6.12.2009, 22:09
Цитата(piritus @  22.9.2009,  22:13 Найти цитируемый пост)
а применительно изометрической проекции перевод на экранные координаты
осуществляется следующим образом:

Xscr=(y-x)*sqrt(3)/2;
Yscr=(y+x)/2-z;


а если нужно еще и повернуть? как сюда впихнуть, например, угол W, на который мы поворачиваем, допустим, трехмерный график (поверхность)?

Автор: piritus 6.12.2009, 22:17
Вот, например, вращение относительно оси Z:
x_new=x*cos(w)-y*sin(w),
y_new=x*sin(w)+y*cos(w),
z_new=z.


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