home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h> /* libraries */
- #include <stdlib.h>
- #include <conio.h>
- #include <string.h>
- #include <graphics.h>
- #include <mem.h>
-
- float square(float);
-
- float square(float num)
- {
- return(num * num);
- }
-
- class Torus
- {
- private:
- float majr, minr, outr, innr;
-
- public:
- void getoutinn(float, float);
- void getmajmin(float, float);
- void writetofile(FILE *);
- };
-
- void Torus::getoutinn(float r1, float r2)
- {
- if(r1>r2)
- {
- outr = r1;
- innr = r2;
- }
- else
- {
- outr = r2;
- innr = r1;
- }
- minr = (outr - innr) / 2;
- majr = innr + minr;
- }
-
- void Torus::getmajmin(float r1, float r2)
- {
- majr = r1;
- minr = r2;
- outr = majr + minr;
- innr = majr - minr;
- }
-
- void Torus::writetofile(FILE *fileptr)
- {
- int counter;
-
- fputs("/*\n", fileptr);
- fputs(" *** Torus by Joe's Torus Generator ***\n", fileptr);
- fputs(" by Joseph Gebis jgebis@imsasun.imsa.edu\n", fileptr);
- fputs(" Torus specs:\n", fileptr);
- fprintf(fileptr, " %s %8.6f %s %8.6f\n", "Major radius:", majr, "Minor radius:", minr);
- fprintf(fileptr, " %s %8.6f %s %8.6f\n", "Outer radius:", outr, "Inner radius:", innr);
- fputs("*/\n\n", fileptr);
- fputs("#declare Torus =\nquartic { <\n", fileptr);
- fprintf(fileptr, " 1.000000");
- for(counter = 1; counter <= 3; counter++)
- {
- fprintf(fileptr, " 0.000000");
- }
- fprintf(fileptr, " 2.000000\n");
- for(counter = 5; counter <= 6; counter++)
- {
- fprintf(fileptr, " 0.000000");
- }
- fprintf(fileptr, " 2.000000");
- fprintf(fileptr, " 0.000000");
- fprintf(fileptr, " %13.6f\n", (-2*(square(majr) + square(minr))));
- for(counter = 10; counter <= 14; counter++)
- {
- fprintf(fileptr, " 0.000000");
- }
- fputs("\n", fileptr);
- for(counter = 15; counter <= 19; counter++)
- {
- fprintf(fileptr, " 0.000000");
- }
- fputs("\n", fileptr);
- fprintf(fileptr, " 1.000000");
- for(counter = 21; counter <= 22; counter++)
- {
- fprintf(fileptr, " 0.000000");
- }
- fprintf(fileptr, " 2.000000");
- fprintf(fileptr, " 0.000000\n");
- fprintf(fileptr, " %13.6f", (2*(square(majr) - square(minr))));
- for(counter = 26; counter <= 29; counter++)
- {
- fprintf(fileptr, " 0.000000");
- }
- fputs("\n", fileptr);
- fprintf(fileptr, " 1.000000");
- fprintf(fileptr, " 0.000000");
- fprintf(fileptr, " %13.6f", (-2*(square(majr) + square(minr))));
- fprintf(fileptr, " 0.000000");
- fprintf(fileptr, " %13.6f\n", ((square(square(majr) - square(minr)))));
- fputs("> }", fileptr);
- }
-
- Torus tor;
-
- void main(void)
- {
- FILE *fileptr;
- char filename[80];
- char format;
- float r1, r2;
-
-
-
- printf("\nOutput torus into what file? ");
- scanf("%s", filename);
- fflush(stdin);
- printf("Are you inputing (M)ajor/Minor radii or (O)uter/Inner radii? ");
- scanf("%c", &format);
-
- switch(format)
- {
- case 'm':
- case 'M':
- {
- printf("Input Major radius: ");
- scanf("%f", &r1);
- printf("Input Minor radius: ");
- scanf("%f", &r2);
-
- tor.getmajmin(r1, r2);
- }
- break;
- case 'o':
- case 'O':
- case 'i':
- case 'I':
- {
- printf("Input Outer radius: ");
- scanf("%f", &r1);
- printf("Input Inner radius: ");
- scanf("%f", &r2);
-
- tor.getoutinn(r1, r2);
- }
- break;
- default:
- break;
- }
-
- if((fileptr = fopen(filename, "w")) == NULL)
- {
- printf("Died");
- exit(0);
- }
-
-
- tor.writetofile(fileptr);
- fclose(fileptr);
-
- textcolor(YELLOW);
- cprintf("Joe's Torus Generator is brought to you by Joseph Gebis");
- textcolor(LIGHTGRAY);
- }
-