///////////////////////////////////////////////////////////////////////////// // Tube Bulider. btf 1995 // Compiles with 3 warnings. Just ignore 'em :) // This code has been chucked together. Sorry. ///////////////////////////////////////////////////////////////////////////// #include #include #include #define pi 3.14159265 void disk_error( void ); void main() { double x, y, r, xy2, z, t ,l, sd; long zc; char col, col2; int xp, yp, adr; int off; FILE *handlex, *handley; char i; handlex = fopen( "tube_x.dat", "wb" ); handley = fopen( "tube_y.dat", "wb" ); //radius r = 50; //dist between viewer & screen sd = 400; adr = 0; printf("Building tube:\n"); printf("..................................................\r"); for ( y=-100; y<=99; y++ ) { yp = y; if (yp % 4 == 0) printf("o"); for ( x=-160; x<=159; x++ ) { xy2 = fabs(( x * x ) + ( y * y )/0.8); xy2 = sqrt( xy2 ); if (xy2 != 0) l = r / xy2; z = l * sd; if (z < 1000) { if ((x != 0) && (y != 0)) { t = atan( y / x ); t = 256 * t / ( 2 * pi ); if ((x <= 0) && (y <= 0)) t++; if ((x > 0) && (y > 0)) t++; if (x >= 0) t = t+128; } zc = ceil( z / 4 ); zc = zc % 256; col = zc; if ( fwrite ( &col, sizeof( char ), 1, handlex ) == -1 ) disk_error(); col = t; if ((y == 0) && (x < 0)) col = 1; if ( fwrite ( &col, sizeof( char ), 1, handley ) == -1 ) disk_error(); } else { col = 0; if ( fwrite ( &col, sizeof( char ), 1, handlex ) == -1 ) disk_error(); if ( fwrite ( &col, sizeof( char ), 1, handley ) == -1 ) disk_error(); } adr++; } } printf("\n\r"); if ( fclose ( handlex ) == -1) disk_error(); if ( fclose ( handley ) == -1) disk_error(); } void disk_error( void ) { printf("Disk error!\n\r"); }