eldby/my.c
float s=1944,x[5],y[5],z[5],r[5],j,h,a,b,d,e;
int i=33,c,l,f=1;
int g(){
return f=(f*6478+1)%65346; }
m(){
x[i]=g()-l;
y[i]=(g()-l)/4;
r[i]=g()>>4; }
main(){
char t[1948]="\x1b[HThor AAge Eldby [eldby@online.no]";
char *p=t+3;
char *k=".oegl4OS";
l=s*20;
while(i<s) p[i++]='\n';
for(i=0;i<5;i++) z[i]=(i?z[i-1]:0)+l/3+!m();
while(1){
for(c=33;c<s;c++) {
c+=!((c+1)%81); /* we at the end os line, leave '\n' */
j=c/s-.5; /* vertical offset from the center (koefficient) */
h=c%81/40.0-1; /* horizotal offset from the center (koefficient) */
p[c]=' '; /* clear space */
for(i=4;i+1;i--) {
a=h*x[i]+j*y[i]+z[i];
d=1+j*j+h*h;
b=a*a-d*(-r[i]*r[i]+x[i]*x[i]+y[i]*y[i]+z[i]*z[i]);
if(b>0)
{
for(e=b;e*e>b*1.01||e*e<b*.99;e-=.5*(e*e-b)/e);
p[c]=k[(int)(8*e/d/r[i])];
} }
}
for(i=4;i+1;i--) {
z[i]=z[i]<0?l*2+!m():z[i];
z[i]-=s/2; };
while(i<s)putchar(t[i++]);
}
}