View difference between Paste ID: NP5KfaHT and 1eC5KZUb
SHOW: | | - or go back to the newest paste.
1
#define Windows
2
3
#include <stdio.h>
4
#include <string.h>
5
#ifdef Windows
6-
  void Ansi_ClearScreen() { system("cls"); }
6+
7-
  void Ansi_MoveHome()    { COORD tHome = { .X=1 , .Y=1 }; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), tHome ); } 
7+
	HANDLE hCon;
8
  void Ansi_ClearScreen() { 
9
	  hCon=GetStdHandle(STD_OUTPUT_HANDLE); system("cls"); 
10
		CONSOLE_CURSOR_INFO tCur = {.dwSize=8 , .bVisible = FALSE };
11
		SetConsoleCursorInfo( hCon , &tCur );
12
	}
13-
           int k;double sin() 
13+
  void Ansi_MoveHome()    { COORD tHome = { .X=1 , .Y=1 }; SetConsoleCursorPosition(hCon,tHome); } 
14-
        ,cos();int main(){ float
14+
15-
       A=0,B=0,i,j,z[1760];char b[ 
15+
16-
     1760];Ansi_ClearScreen();for(;; 
16+
17-
  ){memset(b,32,1760);memset(z,0,7040) 
17+
18-
  ;for(j=0;6.28>j;j+=0.07)for(i=0;6.28 
18+
19-
 >i;i+=0.02){float c=sin(i),d=cos(j),e= 
19+
int k;
20-
 sin(A),f=sin(j),g=cos(A),h=d+2,D=1/(c* 
20+
double sin(),cos();
21-
 h*e+f*g+5),l=cos      (i),m=cos(B),n=s\
21+
int main(){ 
22-
in(B),t=c*h*g-f*        e;int x=40+30*D* 
22+
  float A=0,B=0,i,j,z[1760];
23-
(l*h*m-t*n),y=            12+15*D*(l*h*n 
23+
	char buffer[1761]; buffer[1760]=0;
24-
+t*m),o=x+80*y,          N=8*((f*e-c*d*g 
24+
	
25-
 )*m-c*d*e-f*g-l        *d*n);if(22>y&& 
25+
	Ansi_ClearScreen();
26-
 y>0&&x>0&&80>x&&D>z[o]){z[o]=D;;;b[o]= 
26+
	
27-
 ".,-~:;=!*#$@"[N>0?N:0];}}/*#****!!-*/ 
27+
	for(;;) { 
28-
  Ansi_MoveHome();for(k=0;1761>k;k++){ 
28+
	  
29-
	 putchar(k%80?b[k]:10);};A+=.04;B+= 
29+
		memset(buffer,32,1760);
30-
     0.02;}}/*****####*******!!=;:~ 
30+
		memset(z,0,1760*sizeof(float)); 
31-
       ~::==!!!**********!!!==::- 
31+
		
32-
         .,~~;;;========;;;:~-. 
32+
    for( j=0 ; j<6.28 ; j+=0.07 ) {
33-
             ..,--------,*/ 
33+
			for( i=0 ; i<6.28 ; i+=0.02 ) {
34
				
35
				//calc pixel
36
				float c=sin(i) , d=cos(j) , e=sin(A) , f=sin(j) , g=cos(A);
37
				float h=d+2 , D=1/(c*h*e+f*g+5) , l=cos(i);
38
				float m=cos(B) , n=sin(B) , t=c*h*g-f*e;
39
				int x=40+30*D*(l*h*m-t*n) , y=12+15*D*(l*h*n+t*m);
40
				int o=x+80*y , N=8*((f*e-c*d*g)*m-c*d*e-f*g-l*d*n);
41
				
42
				//plot pixel and Z order
43
				if ( ((unsigned)y)<22 && ((unsigned)x)<80 && D>z[o] ) { 
44
				  z[o] = D ; buffer[o] = ".,-~:;=!*#$@"[ N>0 ? N : 0 ];
45
				}
46
				
47
			}
48
		}
49
		
50
		//rotate donut
51
		A+=.04 ; B+= 0.02;    				
52
53
		//display buffer
54
		Ansi_MoveHome();
55
		for( k=0;  k<1761 ; k+= 80 ) { buffer[k] = 10; }
56
		puts(buffer);		
57
		
58
	}
59
}