/*2008[ */#ifdef/**/j
#include<GL/glut.h>/*]>++++[>>[*/
#include<sys/time.h>/*]<++++>>++<<[->[>+*/
#include<stdlib.h>/*<<amaneku_sora_no_hate_e>>*/
typedef double A;typedef void C;A H(A W){return+((rand
()&32767)-16384)*W/16384.0;}struct{A/**/K,_,S,h,I,R,A,H,i,M,E;
}a[512],*b;A D,E,F,i[1024][3], k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,KA,NA,TA,_,g,h[1024][+
3],G,L,M,N,O,P,Q,R,S,MN;typedef int B;C xz(){glutPostRedisplay();}B
c,d,e,f;C yz(unsigned char T,B U, B V){glFlush();exit(0);}A J(A T,A U,A
V,A(W)){x=n*n;y=1.-n;z=y*y; R=2*n*y; return+ 3*(-z*T+(z-R)*U+(R-x)*V+x*W);}
GLfloat K[4][4]={{1,1,1,1},{0 ,1,-1,0 },{0,-1 ,1,0},{.9,.93,1,.8}};C yx(B W,B
V){xz();}A I(A T,A U,A V,A W){x =T+n*(U -T ); y=U+n*(V-U);z=V+n*(W-V);R=x+n*(y-
x);S=y+n*(z-y);return R+n*(S-R); }C xy (A X,A Y,A Z,A U,A V,A W){k=Y*W-V*Z;l=
U*Z-X*W;m=(X*V)-U*Y;}C zx(){struct timeval T;gettimeofday(&T,NULL);g=T.tv_sec+T
.tv_usec*(10e-7);}C zy(C){zx();if(g >=D){_=D;D =g +0.5+(rand()&32767)/8192.;E=s;F=t;G
=u;N =v;O=s+s-o;P=t+t-p;Q=u+u-q;MN=v +v-r;for(e =0;e++<8;){s=H(128);t=H(128);u=H(128);k=s-E;l=t -F;m=u-G;if(k*k+l*l+m*
m>= 1820)break;}for(e=0;e++<8;){o=H( + 128)*0.4+ s;p =t+0.4*H(128);q=u+0.4*H(128);k=o-s;l=p-t;m=q-u;if(k*k+l*l+m*m>1820)break;}v=
H(L );r=v+0.4*H(L);}for(n=(g-_)/(D-_); d-c&&g-a[ (d)]. S>=20;d=(d+1)&511);if(g-a[c].S>=0.05){c=(c+1)&511;a[c].S=g;}b=
&a [c];b->M=I(E,O,o,s);b->E=I(F,P,p, t);b->K=I (G,Q,q ,u);b->h=J(E,O,o,s);b->I=J(F,P,p,t);b->R=J(G,Q,q,u);if(
(w =b->h*b->h+b->I*( b->I)+b->R*b->R) >M){;w= sqrt (w);b->h/=w;b->I/=w;b->R/=w;}xy(b->h,b->I,b->R,0,0,1);b->A=1;b
-> H=b->i=0.;if((w=k *k+l*l+m*m)>M){w= sqrt (w); b->A=k/w;b->H=l/w;b->i=m/w;}k=b->h;l=b->I;m=b-> R;x=sin(b->_=I(N,
MN ,r,v));y=cos(b->_ );z=1-y;KA=k*l;NA =k *m;TA=l*m;R=b->A;S=b->H;w=b->i;b->A=(z*k*k+y)*R+( z*KA-m*x)*S+(z*NA
+ l*x)*w;b->H=(z*KA+m *x)*R+(z*l*l+y)*S+ (z*TA-k*x)*w;b->i=(z*NA-l*x)*R+(z*TA+k*x)*S+(z*m*m +y)*w;h[e=c*2][0]=a[
c ].M-16*a[c].A;h[e][1]=a[c].E-16*a[c].H;h [e][2]=a[c].K-16*a[c].i;h[f=e+1][0]=a[c].M+16*a[c].A ;h[f][1]=
a[c].E+16*a[c].H;h[f][02]=a[c].K+16*a[c].i; xy(a[c].h,a[c].I,a[c].R,a[c].A,a[c].H,a[c].i);i[f][0]=
i[e][0]=k;i[f][1]=i[e][1]=l;i[f] [2]=i[e][2]=m ;glDrawBuffer(GL_BACK);glClear(GL_COLOR_BUFFER_BIT);f=j(
gl,ut,Get)(GLUT_WINDOW_WIDTH);k=l=1 ;e=glutGet( GLUT_WINDOW_HEIGHT);w=(f>e)?(k=f/(A)e):(l=e/(A)f);j(glVi,
ew,port)(0,0,f,e);glMatrixMode(j(GL_PR, OJECT, ION ));glLoadIdentity();glFrustum(-k,k,-l ,l,10,12800);gluLookAt
(0,0,1280,0,0,0,0,1,0);glLightfv(GL_LIGHT0, GL_DIFFUSE,*K);glLightfv(GL_LIGHT0,j(GL_ ,SPEC,ULAR),*K);j(gl
,Ligh ,tfv)(GL_LIGHT0,GL_POSITION,K[1]);j( glL ,ight,fv)(GL_LIGHT0,GL_SPOT_DIRECTION,K[ 2]); glLightModeli(j(G,
L_LI ,GHT_MODEL_TWO_SIDE),GL_TRUE);j(glMa, ter ,ialfv)(GL_FRONT_AND_BACK,GL_SPECULAR,K[3]);j(gl, Materia,lf)(j(GL_
,FRO ,NT_AND_BACK),GL_SHININESS,4);j(glCol ,orMa ,terial)(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE);j(gl, En,able)(j(GL_CO
,LO, R_MATERIAL));glMatrixMode(GL_MODELVIEW );glLoadIdentity();glEnableClientState(GL_VERTEX_ARRAY); j(glEnableClie,
ntSta ,te)(GL_NORMAL_ARRAY);glVertexPointer( 3,GL_DOUBLE,00,h);glNormalPointer(GL_DOUBLE,00,i);glBegin( GL_QUAD_STRIP)
;j(g ,lColor,4d)(m=0,0,0,0);for(e=d;e!=c;e= (e+1)&511){glArrayElement(e*2);glArrayElement(e*2 +1);if(m <.8)j(glColo,
r,4d )(.4,.5,1,m+=.08);}glEnd();j(glutSwap, Buff,ers)();glFlush();}B main(B X,char**Y){j(glutI ,ni,t)( &X,Y);L=atan2
(0,- 1);glutInitDisplayMode(GLUT_RGBA|j(G , LUT_,DOUBLE));glutSetWindow(glutCreateWindow("Kan" "ata") );X=GL_BLEND
;j(g ,lutDispl ,ayFunc)(zy);glEnable(X);M = 1e-7;glShadeModel(GL_SMOOTH);glEnable((GL_NORMALIZE ));;j( glutKeybo,
ard, Func)(yz );glutIdleFunc(xz);j (gl, ut, ReshapeFunc)(yx);X=GL_ONE;glEnable(j(GL,_LIGH, T0)); glEnable
(j(G ,L_LIGHT ,ING));j(gl,BlendFu ,nc )(GL_SRC_ALPHA ,X);srand ((B)g);zx();D=a[0].S =g-1; o=H(128
);p= H(128.) ;q=H(128);r=H(L);s = t=u=N=c=d =0 ;j(gl,u, tMainLoop)();j(ret, ur, n)0;}
#/* ]+++++[ >>+>+>>+> +<<<<< <-]+++ +[ >>>>+< <<<-]<]<-]>>>++>+++ */ else
/*+ +>++*/ #include/* >+++ + +>->- --[> */<math.h>/* < */
# include /*<]< [. <-> +] [*/<stdio.h>
# define j(X, Y,Z)X##Y##Z
# include /* */__FILE__
/*] */ #endif
|