ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/gen/genbox.c
(Generate patch)

Comparing ray/src/gen/genbox.c (file contents):
Revision 2.6 by schorsch, Sun Jun 8 12:03:09 2003 UTC vs.
Revision 2.9 by greg, Wed Apr 7 21:13:52 2021 UTC

# Line 7 | Line 7 | static const char      RCSid[] = "$Id$";
7   *     1/8/86
8   */
9  
10 < #include  <stdio.h>
11 <
12 < #include <stdlib.h>
13 <
10 > #include  "rtio.h"
11 > #include  <stdlib.h>
12   #include  <math.h>
13  
14  
# Line 24 | Line 22 | double  size[3];       /* ppd size */
22  
23   double  bevel = 0.0;    /* bevel amount */
24  
25 < int  rounde = 0;                /* boolean true for rounde edges */
25 > int  rounde = 0;        /* boolean true for round edges */
26  
27   int  reverse = 0;       /* boolean true for reversed normals */
28  
29  
30  
31   static void
32 < vertex(v)
35 < register int  v;
32 > vertex(int v)
33   {
34 <        register int  i;
34 >        int  i;
35  
36          for (i = 0; i < 3; i++) {
37                  if (v & 010)
# Line 43 | Line 40 | register int  v;
40                          printf("\t%18.12g", v & 01 ? size[i] : 0.0);
41                  v >>= 1;
42          }
43 <        printf("\n");
43 >        fputc('\n', stdout);
44   }
45  
46  
47   static void
48 < side(a, b, c, d)                /* generate a rectangular face */
52 < int  a, b, c, d;
48 > side(int a, int b, int c, int d)                /* generate a rectangular face */
49   {
50          printf("\n%s polygon %s.%c%c%c%c\n", cmtype, cname,
51                          let[a], let[b], let[c], let[d]);
# Line 69 | Line 65 | int  a, b, c, d;
65  
66  
67   static void
68 < corner(a, b, c)                 /* generate a triangular face */
73 < int  a, b, c;
68 > corner(int a, int b, int c)                     /* generate a triangular face */
69   {
70          printf("\n%s polygon %s.%c%c%c\n", cmtype, cname,
71                          let[a], let[b], let[c]);
# Line 88 | Line 83 | int  a, b, c;
83  
84  
85   static void
86 < cylinder(v0, v1)                /* generate a cylinder */
92 < int  v0, v1;
86 > cylinder(int v0, int v1)                /* generate a cylinder */
87   {
88          printf("\n%s cylinder %s.%c%c\n", cmtype, cname, v0+'0', v1+'0');
89          printf("0\n0\n7\n");
# Line 99 | Line 93 | int  v0, v1;
93   }
94  
95  
96 < sphere(v0)                      /* generate a sphere */
97 < int  v0;
96 > static void
97 > sphere(int v0)                  /* generate a sphere */
98   {
99          printf("\n%s sphere %s.%c\n", cmtype, cname, v0+'0');
100          printf("0\n0\n4\n");
# Line 109 | Line 103 | int  v0;
103   }
104  
105  
106 < printhead(ac, av)               /* print command header */
107 < register int  ac;
114 < register char  **av;
106 > int
107 > main(int argc, char *argv[])
108   {
116        putchar('#');
117        while (ac--) {
118                putchar(' ');
119                fputs(*av++, stdout);
120        }
121        putchar('\n');
122 }
123
124
125 main(argc, argv)
126 int  argc;
127 char  **argv;
128 {
109          int  i;
110          
111          if (argc < 6)
# Line 136 | Line 116 | char  **argv;
116          size[0] = atof(argv[3]);
117          size[1] = atof(argv[4]);
118          size[2] = atof(argv[5]);
119 +        if ((size[0] <= 0.0) | (size[1] <= 0.0) | (size[2] <= 0.0))
120 +                goto userr;
121  
122          for (i = 6; i < argc; i++) {
123                  if (argv[i][0] != '-')
124                          goto userr;
125                  switch (argv[i][1]) {
126 +                case 'i':
127 +                        reverse = 1;
128 +                        break;
129                  case 'r':
130                          rounde = 1;
131                          /* fall through */
132                  case 'b':
133                          bevel = atof(argv[++i]);
134 <                        break;
135 <                case 'i':
136 <                        reverse = 1;
152 <                        break;
134 >                        if (bevel > 0.0)
135 >                                break;
136 >                        /* fall through on error */
137                  default:
138                          goto userr;
139                  }
140          }
141 +        if (rounde & reverse)
142 +                fprintf(stderr, "%s: warning - option -i ignored with -r\n",
143 +                                argv[0]);
144  
145 <        printhead(argc, argv);
145 >        fputs("# ", stdout);
146 >        printargs(argc, argv, stdout);
147  
148          if (bevel > 0.0) {
149                                          /* minor faces */
# Line 191 | Line 179 | char  **argv;
179                  corner(037, 067, 057);
180          }
181          if (bevel > 0.0 && rounde) {
182 <                                        /* rounde edges */
182 >                                        /* round edges */
183                  cylinder(070, 071);
184                  cylinder(070, 074);
185                  cylinder(070, 072);
# Line 204 | Line 192 | char  **argv;
192                  cylinder(076, 072);
193                  cylinder(076, 074);
194                  cylinder(076, 077);
195 <                                        /* rounde corners */
195 >                                        /* round corners */
196                  sphere(070);
197                  sphere(071);
198                  sphere(072);
# Line 214 | Line 202 | char  **argv;
202                  sphere(076);
203                  sphere(077);
204          }
205 <        if (bevel == 0.0 ) {
205 >        if (bevel == 0.0) {
206                                          /* only need major faces */
207                  side(1, 5, 4, 0);
208                  side(4, 6, 2, 0);
# Line 223 | Line 211 | char  **argv;
211                  side(5, 1, 3, 7);
212                  side(6, 4, 5, 7);
213          }
214 <        exit(0);
214 >        return(0);
215   userr:
216          fprintf(stderr, "Usage: %s ", argv[0]);
217          fprintf(stderr, "material name xsize ysize zsize ");
218 <        fprintf(stderr, "[-i] [-b bevel | -r rounde]\n");
219 <        exit(1);
218 >        fprintf(stderr, "[-i] [-b bevel | -r round]\n");
219 >        return(1);
220   }
233

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines