Metropoli BBS
VIEWER: m&t.c MODE: TEXT (CP437)
/*
  ╔════════════════════════════════════════════════════════════════════════╗
  ║                                                                        ║
  ║                       M&T Publishing, Inc. Logo                        ║
  ║                                                                        ║
  ║                       by Christopher D. Watkins                        ║
  ║                                                                        ║
  ╚════════════════════════════════════════════════════════════════════════╝
*/

#include "stdio.h"
#include "dos.h"
#include "math.h"
#include "defs.h"

#define Pi_Over_180 0.01745

float CosD(float a)
{
  return( cos(a * Pi_Over_180));
}

float SinD(float a)
{
  return (sin(a * Pi_Over_180));
}


typedef char name[81];

FILE *textdiskfile;
name filename;

Word xresolution  = 1024;
Word yresolution  = 768;
Byte numberofframes  = 1;

void writeheader()
{
  fprintf(textdiskfile,"╔════════════════════════════════════════════════════════════════════════╗\n");
  fprintf(textdiskfile,"║                                                                        ║\n");
  fprintf(textdiskfile,"║                       M&T Publishing, Inc. Logo                        ║\n");
  fprintf(textdiskfile,"║                                                                        ║\n");
  fprintf(textdiskfile,"║                       by Christopher D. Watkins                        ║\n");
  fprintf(textdiskfile,"║                                                                        ║\n");
  fprintf(textdiskfile,"╚════════════════════════════════════════════════════════════════════════╝\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"STATS\n");
  fprintf(textdiskfile,"   XRES    = %d\n",xresolution);
  fprintf(textdiskfile,"   YRES    = %d\n",yresolution);
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"FRAMES\n");
  fprintf(textdiskfile,"   NUMBER  = %d\n",numberofframes);
}

float oceanphase;

void writestudio()
{
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"ENVIRONMENT\n");
  fprintf(textdiskfile,"   LOCLWGT =    0.800    0.800    0.800\n");
  fprintf(textdiskfile,"   REFLWGT =    0.200    0.200    0.200\n");
  fprintf(textdiskfile,"   TRANWGT =    0.000    0.000    0.000\n");
  fprintf(textdiskfile,"   MINWGT  =    0.030    0.030    0.030\n");
  fprintf(textdiskfile,"   MAXWGT  =    1.000    1.000    1.000\n");
  fprintf(textdiskfile,"   RDEPTH  =    4\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"LAMPS\n");
  fprintf(textdiskfile,"   REFLAMP = FALSE\n");
  fprintf(textdiskfile,"   LAMPREF =    0.000    0.000    0.000\n");
  fprintf(textdiskfile,"   DISTEFF =    0.050\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"OBSERVER\n");
  fprintf(textdiskfile,"   FLENGTH =    3.400\n");
  fprintf(textdiskfile,"   OBSPOS  =  425.000 -850.000  215.000\n");
  fprintf(textdiskfile,"   ROTATE  =  -18.000\n");
  fprintf(textdiskfile,"   TILT    =    8.500\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"SKY\n");
  fprintf(textdiskfile,"   HORCOL  =    0.600    0.700    1.000\n");
  fprintf(textdiskfile,"   ZENCOL  =    0.500    0.500    0.500\n");
  fprintf(textdiskfile,"   CLOUDS  = TRUE\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"MATERIAL\n");
  fprintf(textdiskfile,"   TYPE    = BRASS\n");
  fprintf(textdiskfile,"   TEXTURE = SMOOTH\n");
  fprintf(textdiskfile,"   AMBRFL  =    0.100    0.100    0.100\n");
  fprintf(textdiskfile,"   DIFRFL  =    0.300    0.300    0.300\n");
  fprintf(textdiskfile,"   SPCRFL  =    0.600    0.500    0.250\n");
  fprintf(textdiskfile,"   GLOSS   =   20.000\n");
  fprintf(textdiskfile,"   TRANS   =    0.000    0.000    0.000\n");
  fprintf(textdiskfile,"   INDEX   =    1.000\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"MATERIAL\n");
  fprintf(textdiskfile,"   TYPE    = REDMIRROR\n");
  fprintf(textdiskfile,"   TEXTURE = SMOOTH\n");
  fprintf(textdiskfile,"   AMBRFL  =    0.100    0.100    0.100\n");
  fprintf(textdiskfile,"   DIFRFL  =    0.500    0.350    0.350\n");
  fprintf(textdiskfile,"   SPCRFL  =    0.400    0.250    0.250\n");
  fprintf(textdiskfile,"   GLOSS   =    8.000\n");
  fprintf(textdiskfile,"   TRANS   =    0.000    0.000    0.000\n");
  fprintf(textdiskfile,"   INDEX   =    1.000\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"MATERIAL\n");
  fprintf(textdiskfile,"   TYPE    = WATER\n");
  fprintf(textdiskfile,"   TEXTURE = OCEANWAVES\n");
  fprintf(textdiskfile,"   AMBRFL  =    0.100    0.100    0.300\n");
  fprintf(textdiskfile,"   DIFRFL  =    0.100    0.300    0.300\n");
  fprintf(textdiskfile,"   SPCRFL  =    0.100    0.100    0.400\n");
  fprintf(textdiskfile,"   GLOSS   =    3.000\n");
  fprintf(textdiskfile,"   TRANS   =    0.000    0.000    0.000\n");
  fprintf(textdiskfile,"   INDEX   =    1.000\n");
  fprintf(textdiskfile,"   AMPL    =    0.550\n");
  fprintf(textdiskfile,"   PHASE   = %f\n",oceanphase);
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"GROUND\n");
  fprintf(textdiskfile,"   MATL    = WATER\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"LAMP\n");
  fprintf(textdiskfile,"   LOC     = -350.000 -350.000  350.000\n");
  fprintf(textdiskfile,"   RADIUS  =   50.000\n");
  fprintf(textdiskfile,"   INTENS  =    0.950    0.950    0.910\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"LAMP\n");
  fprintf(textdiskfile,"   LOC     = 1000.000 -999.000 1000.000\n");
  fprintf(textdiskfile,"   RADIUS  =  700.000\n");
  fprintf(textdiskfile,"   INTENS  =    0.950    0.950    0.890\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"SPHERE\n");
  fprintf(textdiskfile,"   LOC     =  135.000  300.000  130.000\n");
  fprintf(textdiskfile,"   RADIUS  =   90.000\n");
  fprintf(textdiskfile,"   MATL    = REDMIRROR\n");
}

#define rad 10.0
#define zoff (rad + 15.0)

void sph(float x, float y, float z)
{
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"SPHERE\n");
  fprintf(textdiskfile,"   LOC     = %3.3f %3.3f %3.3f\n",x,y,z);
  fprintf(textdiskfile,"   RADIUS  = %3.3f\n",rad);
  fprintf(textdiskfile,"   MATL    = BRASS\n");
}

void cyl(float x1, float y1, float z1, float x2, float y2, float z2)
{
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"CYLINDER\n");
  fprintf(textdiskfile,"   BASELOC = %3.3f %3.3f %3.3f\n",x1,y1,z1);
  fprintf(textdiskfile,"   BASERAD = %3.3f\n",rad);
  fprintf(textdiskfile,"   APEXLOC = %3.3f %3.3f %3.3f\n",x2,y2,z2);
  fprintf(textdiskfile,"   MATL    = BRASS\n");
}

void make()
{
  int i;
  float dx, th;

    /*  M  */
  sph(0.0,0.0,zoff);
  cyl(0.0,0.0,zoff,0.0,0.0,zoff + 100.0);
  sph(0.0,0.0,zoff + 100.0);
  cyl(0.0,0.0,zoff + 100.0,57.5,0.0,zoff);
  sph(57.5,0.0,zoff);
  cyl(57.5,0.0,zoff,115.0,0.0,zoff + 100.0);
  sph(115.0,0.0,zoff + 100.0);
  cyl(115.0,0.0,zoff + 100.0,115.0,0.0,zoff);
  sph(115.0,0.0,zoff);

    /*  &  */
  for (i = 0; i <= 17; i++)
    sph(239.0 - i * 4.1,0.0,zoff + i * 4.1);
  th = 212;
  for (i = 0; i <= 20; i++)
  {
    sph(184.0 + 20 * CosD(th),0.0,zoff + 80.0 + 20 * SinD(th));
    th = th - 9;
  }
  th = 98;
  dx = 0.0;
  for (i = 0; i <= 60; i++)
  {
    sph(174.0 + 34 * CosD(th) + dx,0.0,zoff + 34.0 + 34 * SinD(th));
    th = th + 4.5;
    if(th > 180)
      dx = dx + 0.5;
  }

    /*  T  */
  sph(221.0,0.0,zoff + 100.0);
  cyl(221.0,0.0,zoff + 100.0,321.0,0.0,zoff + 100.0);
  sph(321.0,0.0,zoff + 100.0);
  cyl(271.0,0.0,zoff + 100.0,271.0,0.0,zoff);
  sph(271.0,0.0,zoff);
}

void main()
{
  oceanphase = 0.0;
  strcpy(filename,"M&T.RT");
  clrscr();
  printf("Generating %s File\n",filename);
  printf("\n");
  printf("By Christopher D. Watkins\n");
  printf("\n");
  printf("\n");
  printf("Writing %d frames\n",numberofframes);
  textdiskfile=fopen(filename, "wt");
  writeheader();
  writestudio();
  make();
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"BOUNDINGSPHERETEST\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"\n");
  fprintf(textdiskfile,"ENDFRAME\n");
  fclose(textdiskfile);
}
[ RETURN TO DIRECTORY ]