#ifndef/*2002/03*/J
#define J(x,y,z,X)/**/X##x##y##z
#include J(FI,LE,__,__)/*,__,__,__,__,*/
float B,C,c,v,x[2],Y,o,M,I,K,O,_,R,E,a,D,m,A,N,
w,h,f[11][4]={{.8,.8,.8,1},{.8,.8,1,1},{.8,1,.8,1},{1
,.8,.8,1},{1,1,.8,1},{1,.8,1,1},{.8,1,1,1},{1,1,1,1},{0,1,
1,0},{0,-1,-1,0},{0,0,0,0}},F[4][3]={{-5,0,-5},{-5,0,5},{5,0,5
},{5.,0.,-5}};int G,g,l,P,Q,L,n,t,T,e,i,j,k;struct timeb z;typedef
struct{float x,y,z,i,j,k,u,v,w;int p,q,d,b;}pp;struct{float v[4][3],n[ 3];}s[128]
[128],*r;pp d[2048],b[2048],*p,*q;typedef void U;U(*S)(U);U _r(U){ftime(&z);g=G;G=1000*
(z.time-l)+z.millitm ;glDrawBuffer(GL_BACK);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glViewport(k=0
,0,P,Q);glMatrixMode(GL_PROJECTION);glLoadIdentity();glFrustum(-w,w,-h,h,10,2000);glMatrixMode(GL_MODELVIEW);J(L,
oad,Identity,gl)();glLightfv(GL_LIGHT0,GL_POSITION,f[5]);glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,f[06]);gluLookAt(
640*sin(C),320*c,640*cos(C),0,0,0,0,1,0);for(;k<8;k++){glLightfv(GL_LIGHT0,GL_AMBIENT,f[k]);glBegin(J(
Q,U,ADS,GL_));p=&d[k];for(i=k;i<n;i+=8){glNormal3fv(s[p->p][p->q].n);for(j=0;j<4;j++)glVertex3f(s[p->p]
[p->q].v[j][0]+p->x,s[p->p][p->q].v[j][1]+p->y,s[p->p][p->q].v[j][2]+p->z);p+=8;}glEnd();}if(L){J(Dis,abl,e,
gl)(GL_LIGHTING);p=d;for(i=0;i<n;i++){glBegin(GL_LINE_LOOP);for(j=0;j<4;j++)glVertex3f(s[p->p][p->q].v[j][0]+p->x,s[p
->p][p->q].v[j][1]+p->y,s[p->p][p->q].v[j][2]+p->z);;glEnd ();;p++;}glEnable(GL_LIGHTING);;}glutSwapBuffers();
glFlush();}U H(U);U W(U){for(;p->x<-320;p->x+=640);for(;p->z <-320;p->z+=640);for(;p->x>320;p->x-=640);for(;
p->z>320;p->z-=640);}U Z(int U){x[1]=1000*s[32][e].v[0][2];for (x[0]=1000*s[32][e].v[0][i=0];i<U;i++){p->x=p->
i+x[0]*A;p->z=p->k+x[1]*A;W();p++;}}U X(int U){x[1]=sin(B*A*17); for(x[0]=sin(B*A*10);i<U;i++){p->x=p->i+p->u*A*3
;p->y=p->j+p->v*A*3;p->z=p->k+p->w*A*3;W();if(p->y<-320){p->j+=640 ;p->i=y(-320,320);p->k=y(-320,320);p->u=y( -96
,96);p->w=y(-96,96);p->v=y(-640,-320);}N=(i&2)?(p->x+=s[0][p->q].v[ 0][0]*x[i&1]*2.5)+(p->z+=s[0][p->q].v[0][2] *
x[i&1]*2.5)+(p->p=((int)(10*x[i&1])+128)&127):(p->x-=s[0][ p->q].v[ 0][0]*x[i&1]*2.5)+(p->z-=s[0][p->q].v[0][2]*
2.5*x[i& 1])+(p->p=((int)(-10.*x[i&1])+128)&127);p++;}}U V(U){p=d ;for(i=0;i <2048; i++){p->i=p->x;;p->j=p->y;p
->k= p->z;p->d=p->p;p->b=p->q;p++;}}U _0(U){i=G-g-31; if(i>4|| i<-4) {;n -=i/4 ;if(n<128)n=128;;if(n> 2048
)n=2048;}L=(i<16&&n==2048);C=B*(((float)(G%50000))/ 25000.); c=sin (B* (((( float)(G%20000)))/(10 *1000
)));A=(G-t)/(float)(T-t);p=d;i=0; S(/*The_Paper !*/ );J( dis, p, lay ,glutPostRe)();}U _1(U ){if
(G>T){X(2048);V();e=_X&127;T=(t=G)+ 768+(_X&127) ;S= H;} else {X (n) ;}}U _2(U){if(G>T){X(8 <<8
);V();T=(t=G)+21000+(_X&4095);S=_1;;} else {X(n);N =A; A=1 -.5 * A*A+A;p=b;Z(n);p=d;q=b ;;
for(i =0;i<n;i++){p->x=u(q->x,p->x,N) ;;p ->y=u( (q -> y), p ->y,N);p->z=u(q->z,p-> z
,N);p->p=(int)((i&1)?u(q->d,0,N) :u (q-> d , 0+ 128,N))&127;p->q=(int)(
(i&2)?u(q->b,p->b,N):u(q->b,128+ p-> b,N))&127;p++;q++;}}}U _3(U) {if (
G> T){Z(2048);V();memcpy(b,d,( 16 <<7)*sizeof(pp ));p=d;for(i=0;i <1*
2048;i++){p->u=y(-160,160) ;p->w=y(-160,160);p->v=y (-640, -320 );p ->d=0;p->b
=_X&127;p++;}T=(t=G)+9000 +(_X %(8 <<9 )); ;S= _2;} else{Z(n);}}U
_4(U){if(G>T){T=9000+(_X &( 00+ 4095 ) )+(t=G);S=_3 ; }}U/* */H(U){for(i
=0;i<n;i++){p->p=(int)((i&1 )?u (p-> d,+32,A):u(p ->d,160,A ))&127;p->
q=(int)((i&2)?u(p->b,e,A):u (( p ->b), e+ 00 +128,A))& 127;p++;;}
if(G>T){p=d;for(i=0;i<2048 ;++ i){;p->p =p -> d=040;p ->q=p->b=e
;p++;}T=(t =G)+1000;S=_4 ;} }U/**/_R /* */ (int W,int/**/
H){P=W;Q= H;N=W>H?(w=W/ (( float) H) )+ (h=1):( w=1)+(h=H
/(float)W );J(tPostRedisp , la, y, glu)();;}
int main( int X,char**Z){J( tI,ni, t, glu )(&X,Z);B=
atan2(0,-1) ;J(itDisplayM ,od ,e ,glutIn)(GLUT_DOUBLE|J(R,
GB,A,GLUT_)); glutSetWindow (J( tC, reateWin, dow,glu)(
"yomiko"));J(tD, ispla,yFunc, glu) (_r);J (utI ,dleF,unc
,gl)(_0);J(utReshape, Fu,nc,gl)(_R );J(lutKey,boardF, unc ,g)(exit)
;glLightfv(GL_LIGHT0,GL_SPECULAR,f[07]) ;GE(_TEST
,DEPTH); glColor4fv(f[10] );glShadeModel (GL_FLAT)
;GE(HT0 ,LIG);glLightfv( GL_LIGHT0,J(L_ ,DIFF,USE,
G),f[ 7]);GE(ORMALIZE, N);GE(ING,LIGHT );for(r=&s[
0][i =0x0];i<128;i++) for(j=0;j<128;j++ ){memcpy(r->v,F, sizeof(float)
*12 );A=B/64.;R=(I=E= cos(N=i*A))*( Y=D= cos(v=j*A));o=( K=-(a=sin(N)))
*(m=sin(v));M=E*m ;O=0-m;_=a*D; for( k=0;k<4;k++){ v=O* r->v[k][0]+
_*r->v[k][1]+r->v [k][2]*R;r->v [k][ 0]=Y*r->v[ k][0 ]+o*r->v[k]
[1]+M*r->v[k][2];r ->v[k][1]=I* r->v [k][1]+ r->v [k][2]*K;r
->v[k] [2]=v;}r->n [0]=o;r->n[1 ]=I;r ->n[ 2]=_;r++;}
p=d;i =0;for(L=i ;i<2048;i++ ){p-> i=y(- 320,320);p
->u=y(-96 ,96);p->j=y( -320, 320) ;p->w=y(-96
,96);p-> d=p->p=127& _X;p->v =y(- 640,-320);p
->k=y((- 320),320); J(lClear ,Col ,or,g)(0.f
,0.f,0. ,(float)0. );/*=*/p->b =p->q=127&
_X;p++ ;}ftime(&z) ;n=512;l=z.
time; srand(l);G =z.millitm
;g=G -31;C=0;T =(_X&4095)+
(t= G)+9000;S= _1;J(utMai,
n, Loop,gl)() ;return+0;}
#else/*^_^ ReadOrDie*/
#define/* /*/_X rand()
# include <sys/timeb.h>
# include <GL/glut.h>
#include/* */<stdio.h>
# include <string.h>
#include/* */<math.h>
#define GE(X ,Xx)/**/\
glEnable(GL_ ##Xx##X)
#define u(x ,X,t)(\
((X)-(x))*( t)+(x))
#define/*\ ^_^*/\
/**/y(A,x) u(A\
,x,(4095& _X)\
/4095./* */)
#endif/* J(a
,rColo, r,
glCle)(
1.,1.
,1.0,
1.0)
;*/
|