/////////////////////////////////////////////////////////////////////////////
// Tube Bulider. btf 1995
// Compiles with 3 warnings. Just ignore 'em :)
// This code has been chucked together. Sorry.
/////////////////////////////////////////////////////////////////////////////
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#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");
}