mig_eu

donut1

May 13th, 2021 (edited)
585
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // compile with: gcc donut1.c -lm && ./a.out
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <math.h>
  6.  
  7. int k;
  8.  
  9. double sin(), cos();
  10.  
  11. int main(void){
  12.    
  13.     float A = 0, B = 0, i, j, z[1760];
  14.     char b[1760];
  15.    
  16.     printf("\x1b[2J");
  17.    
  18.     for(; ; ) {
  19.        
  20.         memset(b, 32, 1760);
  21.        
  22.         memset(z, 0, 7040);
  23.        
  24.         for(j = 0; 6.28 > j; j += 0.07) {
  25.            
  26.             for(i = 0; 6.28 > i; i += 0.02) {
  27.                
  28.                 float sini = sin(i),
  29.                       cosj = cos(j),
  30.                       sinA = sin(A),
  31.                       sinj = sin(j),
  32.                       cosA = cos(A),
  33.                       cosj2 = cosj + 2,
  34.                       mess = 1 / (sini * cosj2 * sinA + sinj * cosA + 5),
  35.                       cosi = cos(i),
  36.                       cosB = cos(B),
  37.                       sinB = sin(B),
  38.                       t = sini * cosj2 * cosA - sinj * sinA;
  39.                
  40.                 int x = 40 + 30 * mess * (cosi * cosj2 * cosB - t * sinB),
  41.                     y = 12 + 15 * mess * (cosi * cosj2 * sinB + t * cosB),
  42.                     o = x + 80 * y,
  43.                     N = 8 * ((sinj * sinA - sini * cosj * cosA) * cosB - sini * cosj * sinA - sinj * cosA - cosi * cosj * sinB);
  44.                
  45.                 if(22 > y && y > 0 && x > 0 && 80 > x && mess > z[o]){
  46.                    
  47.                     z[o] = mess;
  48.                     b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0];
  49.                 }
  50.             }
  51.         }
  52.        
  53.         printf("\x1b[d");
  54.        
  55.         for(k = 0; 1761 > k; k++){
  56.             putchar(k%80? b[k] : 10);
  57.         }
  58.        
  59.         A += 0.04;
  60.         B += 0.02;
  61.     }
  62.    
  63.     return 0;
  64. }
RAW Paste Data