ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libgender/util.C
(Generate patch)

Comparing libgender/util.C (file contents):
Revision 1.11 by root, Tue Oct 5 01:50:20 2004 UTC vs.
Revision 1.12 by root, Tue Oct 5 03:39:47 2004 UTC

44 ); 44 );
45} 45}
46 46
47///////////////////////////////////////////////////////////////////////////// 47/////////////////////////////////////////////////////////////////////////////
48 48
49void gl_matrix::diagonal (GLfloat v) 49void matrix::diagonal (GLfloat v)
50{ 50{
51 for (int i = 4; i--; ) 51 for (int i = 4; i--; )
52 for (int j = 4; j--; ) 52 for (int j = 4; j--; )
53 data[i][j] = i == j ? v : 0.; 53 data[i][j] = i == j ? v : 0.;
54} 54}
55 55
56const gl_matrix operator *(const gl_matrix &a, const gl_matrix &b) 56const matrix operator *(const matrix &a, const matrix &b)
57{ 57{
58 gl_matrix r; 58 matrix r;
59 59
60 // taken from mesa 60 // taken from mesa
61 for (int i = 0; i < 4; i++) 61 for (int i = 0; i < 4; i++)
62 { 62 {
63 const GLfloat ai0=a(i,0), ai1=a(i,1), ai2=a(i,2), ai3=a(i,3); 63 const GLfloat ai0=a(i,0), ai1=a(i,1), ai2=a(i,2), ai3=a(i,3);
69 } 69 }
70 70
71 return r; 71 return r;
72} 72}
73 73
74const gl_matrix gl_matrix::rotation (GLfloat angle, const vec3 &axis) 74const matrix matrix::rotation (GLfloat angle, const vec3 &axis)
75{ 75{
76 GLfloat xx, yy, zz, xy, yz, zx, xs, ys, zs, one_c, s, c; 76 GLfloat xx, yy, zz, xy, yz, zx, xs, ys, zs, one_c, s, c;
77 77
78 s = (GLfloat) sinf (angle * DEG2RAD); 78 s = (GLfloat) sinf (angle * DEG2RAD);
79 c = (GLfloat) cosf (angle * DEG2RAD); 79 c = (GLfloat) cosf (angle * DEG2RAD);
80 80
81 const GLfloat mag = abs (axis); 81 const GLfloat mag = abs (axis);
82 82
83 if (mag <= 1.0e-4) 83 if (mag <= 1.0e-4)
84 return gl_matrix (1); 84 return matrix (1);
85 85
86 gl_matrix m; 86 matrix m;
87 const vec3 n = axis * (1. / mag); 87 const vec3 n = axis * (1. / mag);
88 88
89 /* 89 /*
90 * Arbitrary axis rotation matrix. 90 * Arbitrary axis rotation matrix.
91 * 91 *
171 m(3,3) = 1; 171 m(3,3) = 1;
172 172
173 return m; 173 return m;
174} 174}
175 175
176const vec3 operator *(const gl_matrix &a, const vec3 &v) 176const vec3 operator *(const matrix &a, const vec3 &v)
177{ 177{
178 return vec3 ( 178 return vec3 (
179 a(0,0) * v.x + a(0,1) * v.y + a(0,2) * v.z + a(0,3), 179 a(0,0) * v.x + a(0,1) * v.y + a(0,2) * v.z + a(0,3),
180 a(1,0) * v.x + a(1,1) * v.y + a(1,2) * v.z + a(1,3), 180 a(1,0) * v.x + a(1,1) * v.y + a(1,2) * v.z + a(1,3),
181 a(2,0) * v.x + a(2,1) * v.y + a(2,2) * v.z + a(2,3) 181 a(2,0) * v.x + a(2,1) * v.y + a(2,2) * v.z + a(2,3)
182 ); 182 );
183} 183}
184 184
185void gl_matrix::print () 185void matrix::print ()
186{ 186{
187 printf ("\n"); 187 printf ("\n");
188 printf ("[ %f, %f, %f, %f ]\n", data[0][0], data[1][0], data[2][0], data[3][0]); 188 printf ("[ %f, %f, %f, %f ]\n", data[0][0], data[1][0], data[2][0], data[3][0]);
189 printf ("[ %f, %f, %f, %f ]\n", data[0][1], data[1][1], data[2][1], data[3][1]); 189 printf ("[ %f, %f, %f, %f ]\n", data[0][1], data[1][1], data[2][1], data[3][1]);
190 printf ("[ %f, %f, %f, %f ]\n", data[0][2], data[1][2], data[2][2], data[3][2]); 190 printf ("[ %f, %f, %f, %f ]\n", data[0][2], data[1][2], data[2][2], data[3][2]);
191 printf ("[ %f, %f, %f, %f ]\n", data[0][3], data[1][3], data[2][3], data[3][3]); 191 printf ("[ %f, %f, %f, %f ]\n", data[0][3], data[1][3], data[2][3], data[3][3]);
192} 192}
193 193
194const gl_matrix gl_matrix::translation (const vec3 &v) 194const matrix matrix::translation (const vec3 &v)
195{ 195{
196 gl_matrix m(1); 196 matrix m(1);
197 197
198 m(0,3) = v.x; 198 m(0,3) = v.x;
199 m(1,3) = v.y; 199 m(1,3) = v.y;
200 m(2,3) = v.z; 200 m(2,3) = v.z;
201 201

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines