Translations of this page:

Автор: Al_Rado

// Al_Rado  http://al-rado.ya.ru
// 3d представление однобитного лого (29.07.08)
 
resize_pixi (0,320,240) // задаем размер экрана
 
// создаем логотип
o = #FFFFFF
logo = "
.o...ooo...o.
..o..o.o..o..
...ooooooo...
...ooooooo...
.ooooooooooo.
.o.ooooooo.o.
oo.........oo
"
make_pixi( logo )
 
x_logo = get_pixi_xsize ( logo ) // ширина лого
y_logo = get_pixi_ysize ( logo ) // высота лого
 
start_timer( 0 ) // запускаем таймер
 
// данные для построения куба
 
s = 800 // длинна стороны куба
cube=new_array(64)
cube[0]=-s
cube[1]=-s
cube[2]=-s
cube[8]=s
cube[9]=-s
cube[10]=-s
cube[16]=s
cube[17]=s
cube[18]=-s
cube[24]=-s
cube[25]=s
cube[26]=-s
cube[32]=-s
cube[33]=-s
cube[34]=s
cube[40]=s
cube[41]=-s
cube[42]=s
cube[48]=s
cube[49]=s
cube[50]=s
cube[56]=-s
cube[57]=s
cube[58]=s
 
cube_t=new_array(96)
cube_t[0]=0
cube_t[1]=1
cube_t[2]=2
cube_t[3]=#80FF70
cube_t[4]=256
cube_t[8]=0
cube_t[9]=2
cube_t[10]=3
cube_t[11]=#80FF70
cube_t[12]=256
cube_t[16]=4
cube_t[17]=5
cube_t[18]=6
cube_t[19]=#90A0B0
cube_t[20]=256
cube_t[24]=4
cube_t[25]=6
cube_t[26]=7
cube_t[27]=#90A0B0
cube_t[28]=256
cube_t[32]=0
cube_t[33]=7
cube_t[34]=4
cube_t[35]=#909090
cube_t[36]=256
cube_t[40]=0
cube_t[41]=3
cube_t[42]=7
cube_t[43]=#909090
cube_t[44]=256
cube_t[48]=1
cube_t[49]=2
cube_t[50]=5
cube_t[51]=#FFFFFF
cube_t[52]=256
cube_t[56]=2
cube_t[57]=5
cube_t[58]=6
cube_t[59]=#FFFFFF
cube_t[60]=256
cube_t[64]=0
cube_t[65]=1
cube_t[66]=5
cube_t[67]=#40E0F0
cube_t[68]=256
cube_t[72]=0
cube_t[73]=4
cube_t[74]=5
cube_t[75]=#40E0F0
cube_t[76]=256
cube_t[80]=3
cube_t[81]=2
cube_t[82]=7
cube_t[83]=#909090
cube_t[84]=256
cube_t[88]=2
cube_t[89]=6
cube_t[90]=7
cube_t[91]=#909090
cube_t[92]=256
 
// главный цикл программы
start:
 
clear (BLACK)
t = get_timer( 0 ) / 32 * 4 // переменная для изменения углов вращения, основана на данных таймера
 
t_reset // очищаем все трансформации
s = 512 // значение масштаба, s=1024 для увеличения в 2 раза, s=256 для уменьшения в два раза
t_scale( s, s, s ) // масштабируем картинку
t_rotate_z( t / 2, 0, 0 ) // вращение по оси Z
t_rotate_x( t, 0, 0 ) // вращение по оси X
t_rotate_y( t / 2, 0, 0 ) // вращение по оси Y
 
sort_triangles( cube, cube_t ) // сортируем треугольники
 
t_translate (-256*8*(x_logo/2),-256*8*(y_logo/2),0) // сдвигаем всё по оси X и Y в левый верхний угол (половина ширины/высоты лого * ширину кубика+промежуток )
 
// цикл отрисовки лого кубиками
l=0
m=0 while m < y_logo {
   n=0 while n < x_logo {
      t_translate ( (256*8),0 ,0 ) // переводим по оси X на кубик правее
      if logo [l] != 0 { triangles3d( cube, cube_t ) } // если ячейка массива лого не равна нулю (любой символ кроме точки), то рисуем кубик
   l+1
   n+1
   }
t_translate ( -256*8*(x_logo) ,(256*8) ,0 ) // переводим по оси Y на кубик ниже, по оси X возвращаем в начало
m+1
}
 
frame( 30 )
goto start
pixi-examples/3d_logo.txt · Последние изменения: 2009/01/02 03:51 — 89.169.160.32
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki