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