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.1 by greg, Thu Feb 2 10:34:41 1989 UTC vs.
Revision 1.2 by greg, Fri Mar 24 16:59:48 1989 UTC

# Line 13 | Line 13 | static char SCCSid[] = "$SunId$ LBL";
13  
14   #define  PI             3.14159265358979323846
15  
16 + #define  checkarg(a,n)  if (strcmp(av[i],a) || i+n >= ac) return(i)
17  
18 +
19   int
20   xf(xfmat, xfsca, ac, av)                /* get transform specification */
21   double  xfmat[4][4];
# Line 33 | Line 35 | char  *av[];
35                  switch (av[i][1]) {
36          
37                  case 't':                       /* translate */
38 +                        checkarg("-t",3);
39                          m4[3][0] = atof(av[++i]);
40                          m4[3][1] = atof(av[++i]);
41                          m4[3][2] = atof(av[++i]);
# Line 41 | Line 44 | char  *av[];
44                  case 'r':                       /* rotate */
45                          switch (av[i][2]) {
46                          case 'x':
47 +                                checkarg("-rx",1);
48                                  theta = PI/180.0 * atof(av[++i]);
49                                  m4[1][1] = m4[2][2] = cos(theta);
50                                  m4[2][1] = -(m4[1][2] = sin(theta));
51                                  break;
52                          case 'y':
53 +                                checkarg("-ry",1);
54                                  theta = PI/180 * atof(av[++i]);
55                                  m4[0][0] = m4[2][2] = cos(theta);
56                                  m4[0][2] = -(m4[2][0] = sin(theta));
57                                  break;
58                          case 'z':
59 +                                checkarg("-rz",1);
60                                  theta = PI/180 * atof(av[++i]);
61                                  m4[0][0] = m4[1][1] = cos(theta);
62                                  m4[1][0] = -(m4[0][1] = sin(theta));
# Line 61 | Line 67 | char  *av[];
67                          break;
68  
69                  case 's':                       /* scale */
70 +                        checkarg("-s",1);
71                          *xfsca *=
72                          m4[0][0] =
73                          m4[1][1] =
# Line 70 | Line 77 | char  *av[];
77                  case 'm':                       /* mirror */
78                          switch (av[i][2]) {
79                          case 'x':
80 +                                checkarg("-mx",0);
81                                  *xfsca *=
82                                  m4[0][0] = -1.0;
83                                  break;
84                          case 'y':
85 +                                checkarg("-my",0);
86                                  *xfsca *=
87                                  m4[1][1] = -1.0;
88                                  break;
89                          case 'z':
90 +                                checkarg("-mz",0);
91                                  *xfsca *=
92                                  m4[2][2] = -1.0;
93                                  break;
# Line 116 | Line 126 | char  *av[];
126                  switch (av[i][1]) {
127          
128                  case 't':                       /* translate */
129 +                        checkarg("-t",3);
130                          m4[3][0] = -atof(av[++i]);
131                          m4[3][1] = -atof(av[++i]);
132                          m4[3][2] = -atof(av[++i]);
# Line 124 | Line 135 | char  *av[];
135                  case 'r':                       /* rotate */
136                          switch (av[i][2]) {
137                          case 'x':
138 +                                checkarg("-rx",1);
139                                  theta = -PI/180.0 * atof(av[++i]);
140                                  m4[1][1] = m4[2][2] = cos(theta);
141                                  m4[2][1] = -(m4[1][2] = sin(theta));
142                                  break;
143                          case 'y':
144 +                                checkarg("-ry",1);
145                                  theta = -PI/180.0 * atof(av[++i]);
146                                  m4[0][0] = m4[2][2] = cos(theta);
147                                  m4[0][2] = -(m4[2][0] = sin(theta));
148                                  break;
149                          case 'z':
150 +                                checkarg("-rz",1);
151                                  theta = -PI/180.0 * atof(av[++i]);
152                                  m4[0][0] = m4[1][1] = cos(theta);
153                                  m4[1][0] = -(m4[0][1] = sin(theta));
# Line 144 | Line 158 | char  *av[];
158                          break;
159  
160                  case 's':                       /* scale */
161 +                        checkarg("-s",1);
162                          *xfsca *=
163                          m4[0][0] =
164                          m4[1][1] =
# Line 153 | Line 168 | char  *av[];
168                  case 'm':                       /* mirror */
169                          switch (av[i][2]) {
170                          case 'x':
171 +                                checkarg("-mx",0);
172                                  *xfsca *=
173                                  m4[0][0] = -1.0;
174                                  break;
175                          case 'y':
176 +                                checkarg("-my",0);
177                                  *xfsca *=
178                                  m4[1][1] = -1.0;
179                                  break;
180                          case 'z':
181 +                                checkarg("-mz",0);
182                                  *xfsca *=
183                                  m4[2][2] = -1.0;
184                                  break;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines