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

Comparing ray/src/common/xf.c (file contents):
Revision 1.11 by greg, Wed Oct 23 15:19:25 1991 UTC vs.
Revision 1.12 by greg, Fri Nov 8 13:45:54 1991 UTC

# Line 14 | Line 14 | static char SCCSid[] = "$SunId$ LBL";
14  
15   #define  d2r(a)         ((PI/180.)*(a))
16  
17 < #define  checkarg(a,n)  if (av[i][a] || i+n >= ac) goto done
17 > #define  checkarg(a,l)  if (av[i][a] || badarg(ac-i-1,av+i+1,l)) goto done
18  
19  
20   int
# Line 42 | Line 42 | char  *av[];
42                  switch (av[i][1]) {
43          
44                  case 't':                       /* translate */
45 <                        checkarg(2,3);
45 >                        checkarg(2,"fff");
46                          m4[3][0] = atof(av[++i]);
47                          m4[3][1] = atof(av[++i]);
48                          m4[3][2] = atof(av[++i]);
# Line 51 | Line 51 | char  *av[];
51                  case 'r':                       /* rotate */
52                          switch (av[i][2]) {
53                          case 'x':
54 <                                checkarg(3,1);
54 >                                checkarg(3,"f");
55                                  dtmp = d2r(atof(av[++i]));
56                                  m4[1][1] = m4[2][2] = cos(dtmp);
57                                  m4[2][1] = -(m4[1][2] = sin(dtmp));
58                                  break;
59                          case 'y':
60 <                                checkarg(3,1);
60 >                                checkarg(3,"f");
61                                  dtmp = d2r(atof(av[++i]));
62                                  m4[0][0] = m4[2][2] = cos(dtmp);
63                                  m4[0][2] = -(m4[2][0] = sin(dtmp));
64                                  break;
65                          case 'z':
66 <                                checkarg(3,1);
66 >                                checkarg(3,"f");
67                                  dtmp = d2r(atof(av[++i]));
68                                  m4[0][0] = m4[1][1] = cos(dtmp);
69                                  m4[1][0] = -(m4[0][1] = sin(dtmp));
# Line 74 | Line 74 | char  *av[];
74                          break;
75  
76                  case 's':                       /* scale */
77 <                        checkarg(2,1);
77 >                        checkarg(2,"f");
78                          dtmp = atof(av[i+1]);
79                          if (dtmp == 0.0) goto done;
80                          i++;
# Line 87 | Line 87 | char  *av[];
87                  case 'm':                       /* mirror */
88                          switch (av[i][2]) {
89                          case 'x':
90 <                                checkarg(3,0);
90 >                                checkarg(3,"");
91                                  xfsca *=
92                                  m4[0][0] = -1.0;
93                                  break;
94                          case 'y':
95 <                                checkarg(3,0);
95 >                                checkarg(3,"");
96                                  xfsca *=
97                                  m4[1][1] = -1.0;
98                                  break;
99                          case 'z':
100 <                                checkarg(3,0);
100 >                                checkarg(3,"");
101                                  xfsca *=
102                                  m4[2][2] = -1.0;
103                                  break;
# Line 107 | Line 107 | char  *av[];
107                          break;
108  
109                  case 'i':                       /* iterate */
110 <                        checkarg(2,1);
110 >                        checkarg(2,"i");
111                          while (icnt-- > 0) {
112                                  multmat4(ret->xfm, ret->xfm, xfmat);
113                                  ret->sca *= xfsca;
# Line 157 | Line 157 | char  *av[];
157                  switch (av[i][1]) {
158          
159                  case 't':                       /* translate */
160 <                        checkarg(2,3);
160 >                        checkarg(2,"fff");
161                          m4[3][0] = -atof(av[++i]);
162                          m4[3][1] = -atof(av[++i]);
163                          m4[3][2] = -atof(av[++i]);
# Line 166 | Line 166 | char  *av[];
166                  case 'r':                       /* rotate */
167                          switch (av[i][2]) {
168                          case 'x':
169 <                                checkarg(3,1);
169 >                                checkarg(3,"f");
170                                  dtmp = -d2r(atof(av[++i]));
171                                  m4[1][1] = m4[2][2] = cos(dtmp);
172                                  m4[2][1] = -(m4[1][2] = sin(dtmp));
173                                  break;
174                          case 'y':
175 <                                checkarg(3,1);
175 >                                checkarg(3,"f");
176                                  dtmp = -d2r(atof(av[++i]));
177                                  m4[0][0] = m4[2][2] = cos(dtmp);
178                                  m4[0][2] = -(m4[2][0] = sin(dtmp));
179                                  break;
180                          case 'z':
181 <                                checkarg(3,1);
181 >                                checkarg(3,"f");
182                                  dtmp = -d2r(atof(av[++i]));
183                                  m4[0][0] = m4[1][1] = cos(dtmp);
184                                  m4[1][0] = -(m4[0][1] = sin(dtmp));
# Line 189 | Line 189 | char  *av[];
189                          break;
190  
191                  case 's':                       /* scale */
192 <                        checkarg(2,1);
192 >                        checkarg(2,"f");
193                          dtmp = atof(av[i+1]);
194                          if (dtmp == 0.0) goto done;
195                          i++;
# Line 202 | Line 202 | char  *av[];
202                  case 'm':                       /* mirror */
203                          switch (av[i][2]) {
204                          case 'x':
205 <                                checkarg(3,0);
205 >                                checkarg(3,"");
206                                  xfsca *=
207                                  m4[0][0] = -1.0;
208                                  break;
209                          case 'y':
210 <                                checkarg(3,0);
210 >                                checkarg(3,"");
211                                  xfsca *=
212                                  m4[1][1] = -1.0;
213                                  break;
214                          case 'z':
215 <                                checkarg(3,0);
215 >                                checkarg(3,"");
216                                  xfsca *=
217                                  m4[2][2] = -1.0;
218                                  break;
# Line 222 | Line 222 | char  *av[];
222                          break;
223  
224                  case 'i':                       /* iterate */
225 <                        checkarg(2,1);
225 >                        checkarg(2,"i");
226                          while (icnt-- > 0) {
227                                  multmat4(ret->xfm, xfmat, ret->xfm);
228                                  ret->sca *= xfsca;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines