57 lines
1.5 KiB
Plaintext
57 lines
1.5 KiB
Plaintext
use std.runtime;
|
|
use std.math;
|
|
|
|
var mod = math.mod;
|
|
|
|
var main = func(run_time) {
|
|
var ts=maketimestamp();
|
|
|
|
var (sin,cos)=(math.sin,math.cos);
|
|
var chars=split("",".,-~:;=!*#$@");
|
|
|
|
var (A,B)=(0,0);
|
|
var (z,b)=([],[]);
|
|
setsize(z,1760);
|
|
setsize(b,1760);
|
|
|
|
print("\e[2J");
|
|
for(var run=0;run<run_time;run+=1) {
|
|
ts.stamp();
|
|
forindex(var i;b) {
|
|
b[i]=" ";
|
|
z[i]=0;
|
|
}
|
|
for(var j=0;j<6.28;j+=0.07) {
|
|
for(var i=0;i<6.28;i+=0.02) {
|
|
var (c,d,e,f,g)=(sin(i),cos(j),sin(A),sin(j),cos(A));
|
|
var h=d+2;
|
|
var D=1/(c*h*e+f*g+5);
|
|
var (l,m,n)=(cos(i),cos(B),sin(B));
|
|
var t=c*h*g-f*e;
|
|
var x=int(40+30*D*(l*h*m-t*n));
|
|
var y=int(12+15*D*(l*h*n+t*m));
|
|
var o=int(x+80*y);
|
|
var N=int(8*((f*e-c*d*g)*m-c*d*e-f*g-l*d*n));
|
|
if (22>y and y>0 and x>0 and 80>x and D>z[o]) {
|
|
z[o]=D;
|
|
b[o]=chars[N>0?N:0];
|
|
}
|
|
}
|
|
}
|
|
print("\e[H");
|
|
var screen="";
|
|
for(var k=0;k<1761;k+=1) {
|
|
screen~=(mod(k,80)?b[k]:"\n");
|
|
A+=0.00004;
|
|
B+=0.00002;
|
|
}
|
|
println(" ",int(1/(ts.elapsedMSec()/1000))," fps ");
|
|
print(screen);
|
|
}
|
|
}
|
|
|
|
if (size(runtime.argv()) and !math.isnan(num(runtime.argv()[0]))) {
|
|
main(num(runtime.argv()[0]));
|
|
} else {
|
|
main(5e2);
|
|
} |