|
@@ -1,6 +1,6 @@
|
1
|
1
|
/* -*- Mode: C++; tab-width: 3; indent-tabs-mode: t; c-basic-offset: 3 -*- */
|
2
|
2
|
/*================================================================
|
3
|
|
- *
|
|
3
|
+ *
|
4
|
4
|
* Project : Freyja
|
5
|
5
|
* Author : Terry 'Mongoose' Hendrix II
|
6
|
6
|
* Website : http://www.westga.edu/~stu7440/
|
|
@@ -10,10 +10,10 @@
|
10
|
10
|
* Comments: 3d Matrix class
|
11
|
11
|
*
|
12
|
12
|
*
|
13
|
|
- * This file was generated using Mongoose's C++
|
|
13
|
+ * This file was generated using Mongoose's C++
|
14
|
14
|
* template generator script. <stu7440@westga.edu>
|
15
|
|
- *
|
16
|
|
- *-- History -------------------------------------------------
|
|
15
|
+ *
|
|
16
|
+ *-- History -------------------------------------------------
|
17
|
17
|
*
|
18
|
18
|
* 2002.05.11:
|
19
|
19
|
* Mongoose - Created
|
|
@@ -76,25 +76,25 @@ bool Matrix::getInvert(matrix_t out)
|
76
|
76
|
/* NB. OpenGL Matrices are COLUMN major. */
|
77
|
77
|
#define SWAP_ROWS(a, b) { float *_tmp = a; (a)=(b); (b)=_tmp; }
|
78
|
78
|
#define MAT(m,r,c) (m)[(c)*4+(r)]
|
79
|
|
-
|
|
79
|
+
|
80
|
80
|
float wtmp[4][8];
|
81
|
81
|
float m0, m1, m2, m3, s;
|
82
|
82
|
float *r0, *r1, *r2, *r3;
|
83
|
|
-
|
|
83
|
+
|
84
|
84
|
r0 = wtmp[0], r1 = wtmp[1], r2 = wtmp[2], r3 = wtmp[3];
|
85
|
|
-
|
|
85
|
+
|
86
|
86
|
r0[0] = MAT(m,0,0), r0[1] = MAT(m,0,1),
|
87
|
87
|
r0[2] = MAT(m,0,2), r0[3] = MAT(m,0,3),
|
88
|
88
|
r0[4] = 1.0, r0[5] = r0[6] = r0[7] = 0.0,
|
89
|
|
-
|
|
89
|
+
|
90
|
90
|
r1[0] = MAT(m,1,0), r1[1] = MAT(m,1,1),
|
91
|
91
|
r1[2] = MAT(m,1,2), r1[3] = MAT(m,1,3),
|
92
|
92
|
r1[5] = 1.0, r1[4] = r1[6] = r1[7] = 0.0,
|
93
|
|
-
|
|
93
|
+
|
94
|
94
|
r2[0] = MAT(m,2,0), r2[1] = MAT(m,2,1),
|
95
|
95
|
r2[2] = MAT(m,2,2), r2[3] = MAT(m,2,3),
|
96
|
96
|
r2[6] = 1.0, r2[4] = r2[5] = r2[7] = 0.0,
|
97
|
|
-
|
|
97
|
+
|
98
|
98
|
r3[0] = MAT(m,3,0), r3[1] = MAT(m,3,1),
|
99
|
99
|
r3[2] = MAT(m,3,2), r3[3] = MAT(m,3,3),
|
100
|
100
|
r3[7] = 1.0, r3[4] = r3[5] = r3[6] = 0.0;
|
|
@@ -104,7 +104,7 @@ bool Matrix::getInvert(matrix_t out)
|
104
|
104
|
if (fabs(r2[0])>fabs(r1[0])) SWAP_ROWS(r2, r1);
|
105
|
105
|
if (fabs(r1[0])>fabs(r0[0])) SWAP_ROWS(r1, r0);
|
106
|
106
|
if (0.0 == r0[0]) return false;
|
107
|
|
-
|
|
107
|
+
|
108
|
108
|
/* eliminate first variable */
|
109
|
109
|
m1 = r1[0]/r0[0]; m2 = r2[0]/r0[0]; m3 = r3[0]/r0[0];
|
110
|
110
|
s = r0[1]; r1[1] -= m1 * s; r2[1] -= m2 * s; r3[1] -= m3 * s;
|
|
@@ -118,12 +118,12 @@ bool Matrix::getInvert(matrix_t out)
|
118
|
118
|
if (s != 0.0) { r1[6] -= m1 * s; r2[6] -= m2 * s; r3[6] -= m3 * s; }
|
119
|
119
|
s = r0[7];
|
120
|
120
|
if (s != 0.0) { r1[7] -= m1 * s; r2[7] -= m2 * s; r3[7] -= m3 * s; }
|
121
|
|
-
|
|
121
|
+
|
122
|
122
|
/* choose pivot - or die */
|
123
|
123
|
if (fabs(r3[1])>fabs(r2[1])) SWAP_ROWS(r3, r2);
|
124
|
124
|
if (fabs(r2[1])>fabs(r1[1])) SWAP_ROWS(r2, r1);
|
125
|
125
|
if (0.0 == r1[1]) return false;
|
126
|
|
-
|
|
126
|
+
|
127
|
127
|
/* eliminate second variable */
|
128
|
128
|
m2 = r2[1]/r1[1]; m3 = r3[1]/r1[1];
|
129
|
129
|
r2[2] -= m2 * r1[2]; r3[2] -= m3 * r1[2];
|
|
@@ -132,23 +132,23 @@ bool Matrix::getInvert(matrix_t out)
|
132
|
132
|
s = r1[5]; if (0.0 != s) { r2[5] -= m2 * s; r3[5] -= m3 * s; }
|
133
|
133
|
s = r1[6]; if (0.0 != s) { r2[6] -= m2 * s; r3[6] -= m3 * s; }
|
134
|
134
|
s = r1[7]; if (0.0 != s) { r2[7] -= m2 * s; r3[7] -= m3 * s; }
|
135
|
|
-
|
|
135
|
+
|
136
|
136
|
/* choose pivot - or die */
|
137
|
137
|
if (fabs(r3[2])>fabs(r2[2])) SWAP_ROWS(r3, r2);
|
138
|
138
|
if (0.0 == r2[2]) return false;
|
139
|
|
-
|
|
139
|
+
|
140
|
140
|
/* eliminate third variable */
|
141
|
141
|
m3 = r3[2]/r2[2];
|
142
|
142
|
r3[3] -= m3 * r2[3], r3[4] -= m3 * r2[4],
|
143
|
143
|
r3[5] -= m3 * r2[5], r3[6] -= m3 * r2[6],
|
144
|
144
|
r3[7] -= m3 * r2[7];
|
145
|
|
-
|
|
145
|
+
|
146
|
146
|
/* last check */
|
147
|
147
|
if (0.0 == r3[3]) return false;
|
148
|
|
-
|
|
148
|
+
|
149
|
149
|
s = 1.0/r3[3]; /* now back substitute row 3 */
|
150
|
150
|
r3[4] *= s; r3[5] *= s; r3[6] *= s; r3[7] *= s;
|
151
|
|
-
|
|
151
|
+
|
152
|
152
|
m2 = r2[3]; /* now back substitute row 2 */
|
153
|
153
|
s = 1.0/r2[2];
|
154
|
154
|
r2[4] = s * (r2[4] - r3[4] * m2), r2[5] = s * (r2[5] - r3[5] * m2),
|
|
@@ -159,7 +159,7 @@ bool Matrix::getInvert(matrix_t out)
|
159
|
159
|
m0 = r0[3];
|
160
|
160
|
r0[4] -= r3[4] * m0, r0[5] -= r3[5] * m0,
|
161
|
161
|
r0[6] -= r3[6] * m0, r0[7] -= r3[7] * m0;
|
162
|
|
-
|
|
162
|
+
|
163
|
163
|
m1 = r1[2]; /* now back substitute row 1 */
|
164
|
164
|
s = 1.0/r1[1];
|
165
|
165
|
r1[4] = s * (r1[4] - r2[4] * m1), r1[5] = s * (r1[5] - r2[5] * m1),
|
|
@@ -167,22 +167,22 @@ bool Matrix::getInvert(matrix_t out)
|
167
|
167
|
m0 = r0[2];
|
168
|
168
|
r0[4] -= r2[4] * m0, r0[5] -= r2[5] * m0,
|
169
|
169
|
r0[6] -= r2[6] * m0, r0[7] -= r2[7] * m0;
|
170
|
|
-
|
|
170
|
+
|
171
|
171
|
m0 = r0[1]; /* now back substitute row 0 */
|
172
|
172
|
s = 1.0/r0[0];
|
173
|
173
|
r0[4] = s * (r0[4] - r1[4] * m0), r0[5] = s * (r0[5] - r1[5] * m0),
|
174
|
174
|
r0[6] = s * (r0[6] - r1[6] * m0), r0[7] = s * (r0[7] - r1[7] * m0);
|
175
|
|
-
|
176
|
|
- MAT(out,0,0) = r0[4];
|
177
|
|
- MAT(out,0,1) = r0[5], MAT(out,0,2) = r0[6];
|
|
175
|
+
|
|
176
|
+ MAT(out,0,0) = r0[4];
|
|
177
|
+ MAT(out,0,1) = r0[5], MAT(out,0,2) = r0[6];
|
178
|
178
|
MAT(out,0,3) = r0[7], MAT(out,1,0) = r1[4];
|
179
|
179
|
MAT(out,1,1) = r1[5], MAT(out,1,2) = r1[6];
|
180
|
180
|
MAT(out,1,3) = r1[7], MAT(out,2,0) = r2[4];
|
181
|
181
|
MAT(out,2,1) = r2[5], MAT(out,2,2) = r2[6];
|
182
|
182
|
MAT(out,2,3) = r2[7], MAT(out,3,0) = r3[4];
|
183
|
183
|
MAT(out,3,1) = r3[5], MAT(out,3,2) = r3[6];
|
184
|
|
- MAT(out,3,3) = r3[7];
|
185
|
|
-
|
|
184
|
+ MAT(out,3,3) = r3[7];
|
|
185
|
+
|
186
|
186
|
return true;
|
187
|
187
|
#undef MAT
|
188
|
188
|
#undef SWAP_ROWS
|
|
@@ -267,7 +267,7 @@ void Matrix::multiply4v(vec4_t v, vec4_t result)
|
267
|
267
|
{
|
268
|
268
|
vec_t x = v[0], y = v[1], z = v[2], w = v[3];
|
269
|
269
|
|
270
|
|
-
|
|
270
|
+
|
271
|
271
|
result[0] = mMatrix[ 0]*x + mMatrix[ 1]*y + mMatrix[ 2]*z + mMatrix[ 3]*w;
|
272
|
272
|
result[1] = mMatrix[ 4]*x + mMatrix[ 5]*y + mMatrix[ 6]*z + mMatrix[ 7]*w;
|
273
|
273
|
result[2] = mMatrix[ 8]*x + mMatrix[ 9]*y + mMatrix[10]*z + mMatrix[11]*w;
|
|
@@ -296,11 +296,11 @@ void Matrix::print()
|
296
|
296
|
bool Matrix::isIdentity()
|
297
|
297
|
{
|
298
|
298
|
// Hhhmm... floating point using direct comparisions
|
299
|
|
- if (mMatrix[ 0] == 1 && mMatrix[ 1] == 0 && mMatrix[ 2] == 0 &&
|
300
|
|
- mMatrix[ 3] == 0 && mMatrix[ 4] == 0 && mMatrix[ 5] == 1 &&
|
301
|
|
- mMatrix[ 6] == 0 && mMatrix[ 7] == 0 && mMatrix[ 8] == 0 &&
|
|
299
|
+ if (mMatrix[ 0] == 1 && mMatrix[ 1] == 0 && mMatrix[ 2] == 0 &&
|
|
300
|
+ mMatrix[ 3] == 0 && mMatrix[ 4] == 0 && mMatrix[ 5] == 1 &&
|
|
301
|
+ mMatrix[ 6] == 0 && mMatrix[ 7] == 0 && mMatrix[ 8] == 0 &&
|
302
|
302
|
mMatrix[ 9] == 0 && mMatrix[10] == 1 && mMatrix[11] == 0 &&
|
303
|
|
- mMatrix[12] == 0 && mMatrix[13] == 0 && mMatrix[14] == 0 &&
|
|
303
|
+ mMatrix[12] == 0 && mMatrix[13] == 0 && mMatrix[14] == 0 &&
|
304
|
304
|
mMatrix[15] == 1)
|
305
|
305
|
return true;
|
306
|
306
|
|
|
@@ -448,17 +448,17 @@ void Matrix::multiply(const matrix_t a, const matrix_t b, matrix_t result)
|
448
|
448
|
result[ 1] = a[ 0] * b[ 4] + a[ 4] * b[ 5] + a[ 8] * b[ 6] + a[12] * b[ 7];
|
449
|
449
|
result[ 2] = a[ 0] * b[ 8] + a[ 4] * b[ 9] + a[ 8] * b[10] + a[12] * b[11];
|
450
|
450
|
result[ 3] = a[ 0] * b[12] + a[ 4] * b[13] + a[ 8] * b[14] + a[12] * b[15];
|
451
|
|
-
|
|
451
|
+
|
452
|
452
|
result[ 4] = a[ 1] * b[ 0] + a[ 5] * b[ 1] + a[ 9] * b[ 2] + a[13] * b[ 3];
|
453
|
453
|
result[ 5] = a[ 1] * b[ 4] + a[ 5] * b[ 5] + a[ 9] * b[ 6] + a[13] * b[ 7];
|
454
|
454
|
result[ 6] = a[ 1] * b[ 8] + a[ 5] * b[ 9] + a[ 9] * b[10] + a[13] * b[11];
|
455
|
455
|
result[ 7] = a[ 1] * b[12] + a[ 5] * b[13] + a[ 9] * b[14] + a[13] * b[15];
|
456
|
|
-
|
|
456
|
+
|
457
|
457
|
result[ 8] = a[ 2] * b[ 0] + a[ 6] * b[ 1] + a[10] * b[ 2] + a[14] * b[ 3];
|
458
|
458
|
result[ 9] = a[ 2] * b[ 4] + a[ 6] * b[ 5] + a[10] * b[ 6] + a[14] * b[ 7];
|
459
|
459
|
result[10] = a[ 2] * b[ 8] + a[ 6] * b[ 9] + a[10] * b[10] + a[14] * b[11];
|
460
|
460
|
result[11] = a[ 2] * b[12] + a[ 6] * b[13] + a[10] * b[14] + a[14] * b[15];
|
461
|
|
-
|
|
461
|
+
|
462
|
462
|
result[12] = a[ 3] * b[ 0] + a[ 7] * b[ 1] + a[11] * b[ 2] + a[15] * b[ 3];
|
463
|
463
|
result[13] = a[ 3] * b[ 4] + a[ 7] * b[ 5] + a[11] * b[ 6] + a[15] * b[ 7];
|
464
|
464
|
result[14] = a[ 3] * b[ 8] + a[ 7] * b[ 9] + a[11] * b[10] + a[15] * b[11];
|
|
@@ -469,17 +469,17 @@ void Matrix::multiply(const matrix_t a, const matrix_t b, matrix_t result)
|
469
|
469
|
result[ 1] = a[ 0] * b[ 1] + a[ 1] * b[ 5] + a[ 2] * b[ 9] + a[ 3] * b[13];
|
470
|
470
|
result[ 2] = a[ 0] * b[ 2] + a[ 1] * b[ 6] + a[ 2] * b[10] + a[ 3] * b[14];
|
471
|
471
|
result[ 3] = a[ 0] * b[ 3] + a[ 1] * b[ 7] + a[ 2] * b[11] + a[ 3] * b[15];
|
472
|
|
-
|
|
472
|
+
|
473
|
473
|
result[ 4] = a[ 4] * b[ 0] + a[ 5] * b[ 4] + a[ 6] * b[ 8] + a[ 7] * b[12];
|
474
|
474
|
result[ 5] = a[ 4] * b[ 1] + a[ 5] * b[ 5] + a[ 6] * b[ 9] + a[ 7] * b[13];
|
475
|
475
|
result[ 6] = a[ 4] * b[ 2] + a[ 5] * b[ 6] + a[ 6] * b[10] + a[ 7] * b[14];
|
476
|
476
|
result[ 7] = a[ 4] * b[ 3] + a[ 5] * b[ 7] + a[ 6] * b[11] + a[ 7] * b[15];
|
477
|
|
-
|
|
477
|
+
|
478
|
478
|
result[ 8] = a[ 8] * b[ 0] + a[ 9] * b[ 4] + a[10] * b[ 8] + a[11] * b[12];
|
479
|
479
|
result[ 9] = a[ 8] * b[ 1] + a[ 9] * b[ 5] + a[10] * b[ 9] + a[11] * b[13];
|
480
|
480
|
result[10] = a[ 8] * b[ 2] + a[ 9] * b[ 6] + a[10] * b[10] + a[11] * b[14];
|
481
|
481
|
result[11] = a[ 8] * b[ 3] + a[ 9] * b[ 7] + a[10] * b[11] + a[11] * b[15];
|
482
|
|
-
|
|
482
|
+
|
483
|
483
|
result[12] = a[12] * b[ 0] + a[13] * b[ 4] + a[14] * b[ 8] + a[15] * b[12];
|
484
|
484
|
result[13] = a[12] * b[ 1] + a[13] * b[ 5] + a[14] * b[ 9] + a[15] * b[13];
|
485
|
485
|
result[14] = a[12] * b[ 2] + a[13] * b[ 6] + a[14] * b[10] + a[15] * b[14];
|
|
@@ -489,16 +489,17 @@ void Matrix::multiply(const matrix_t a, const matrix_t b, matrix_t result)
|
489
|
489
|
|
490
|
490
|
|
491
|
491
|
////////////////////////////////////////////////////////////
|
492
|
|
-// Unit Test
|
|
492
|
+// Unit Test
|
493
|
493
|
////////////////////////////////////////////////////////////
|
494
|
494
|
|
495
|
495
|
#ifdef MATRIX_UNIT_TEST
|
|
496
|
+#include <strings.h>
|
496
|
497
|
/* <Order> is (r)ow or (c)ol */
|
497
|
498
|
void generateMatrixSourceTest(char order)
|
498
|
499
|
{
|
499
|
500
|
int i, j, k;
|
500
|
501
|
|
501
|
|
-
|
|
502
|
+
|
502
|
503
|
if (order == 'r')
|
503
|
504
|
{
|
504
|
505
|
printf("/* Row order */\n");
|
|
@@ -507,7 +508,7 @@ void generateMatrixSourceTest(char order)
|
507
|
508
|
{
|
508
|
509
|
printf("/* Column order */\n");
|
509
|
510
|
}
|
510
|
|
-
|
|
511
|
+
|
511
|
512
|
for (i = 0; i < 4; ++i)
|
512
|
513
|
{
|
513
|
514
|
for (j = 0; j < 4; ++j)
|
|
@@ -520,17 +521,17 @@ void generateMatrixSourceTest(char order)
|
520
|
521
|
{
|
521
|
522
|
printf("result[%2i] = ", j+i*4);
|
522
|
523
|
}
|
523
|
|
-
|
|
524
|
+
|
524
|
525
|
for (k = 0; k < 4; ++k)
|
525
|
526
|
{
|
526
|
527
|
if (order == 'r')
|
527
|
528
|
{
|
528
|
529
|
printf("a[%2i] * b[%2i]%s",
|
529
|
|
- k+i*4, j+k*4, (k == 3) ? ";\n" : " + ");
|
|
530
|
+ k+i*4, j+k*4, (k == 3) ? ";\n" : " + ");
|
530
|
531
|
}
|
531
|
532
|
else
|
532
|
533
|
{
|
533
|
|
- printf("a[%2i] * b[%2i]%s",
|
|
534
|
+ printf("a[%2i] * b[%2i]%s",
|
534
|
535
|
i+k*4, k+j*4, (k == 3) ? ";\n" : " + ");
|
535
|
536
|
}
|
536
|
537
|
|
|
@@ -584,7 +585,7 @@ int runMatrixUnitTest()
|
584
|
585
|
printf("Identity * Identity");
|
585
|
586
|
c.setIdentity();
|
586
|
587
|
b.setIdentity();
|
587
|
|
- a = c * b;
|
|
588
|
+ a = c * b;
|
588
|
589
|
break;
|
589
|
590
|
case 2:
|
590
|
591
|
printf("Identity *= Identity");
|
|
@@ -608,7 +609,7 @@ int runMatrixUnitTest()
|
608
|
609
|
printf("\n");
|
609
|
610
|
}
|
610
|
611
|
|
611
|
|
- /* 2003.06.18, Mongoose - These tests are weak and
|
|
612
|
+ /* 2003.06.18, Mongoose - These tests are weak and
|
612
|
613
|
only spot check some of the matrix */
|
613
|
614
|
|
614
|
615
|
|
|
@@ -619,23 +620,23 @@ int runMatrixUnitTest()
|
619
|
620
|
|
620
|
621
|
#ifdef COLUMN_ORDER
|
621
|
622
|
unsigned char i0 = 0, i1 = 4, i2 = 8, i3 = 12;
|
622
|
|
- unsigned char i4 = 1, i5 = 5, i6 = 9, i7 = 13;
|
|
623
|
+ unsigned char i4 = 1, i5 = 5, i6 = 9, i7 = 13;
|
623
|
624
|
unsigned char i8 = 2, i9 = 6, i10 = 10, i11 = 14;
|
624
|
625
|
unsigned char i12 = 3, i13 = 7, i14 = 11, i15 = 15;
|
625
|
626
|
#else
|
626
|
|
- unsigned char i0 = 0, i1 = 1, i2 = 2, i3 = 3;
|
627
|
|
- unsigned char i4 = 4, i5 = 5, i6 = 6, i7 = 7;
|
628
|
|
- unsigned char i8 = 8, i9 = 9, i10 = 10, i11 = 11;
|
|
627
|
+ unsigned char i0 = 0, i1 = 1, i2 = 2; // i3 = 3
|
|
628
|
+ unsigned char i4 = 4, i6 = 6; // i5 = 5, i7 = 7
|
|
629
|
+ unsigned char i8 = 8, i9 = 9, i10 = 10; // i11 = 11
|
629
|
630
|
unsigned char i12 = 12, i13 = 13, i14 = 14, i15 = 15;
|
630
|
631
|
#endif
|
631
|
632
|
|
632
|
|
- if (a.mMatrix[i12] != 10 ||
|
633
|
|
- a.mMatrix[i13] != 20 ||
|
|
633
|
+ if (a.mMatrix[i12] != 10 ||
|
|
634
|
+ a.mMatrix[i13] != 20 ||
|
634
|
635
|
a.mMatrix[i14] != 30)
|
635
|
636
|
{
|
636
|
637
|
++errs;
|
637
|
638
|
printf(" \t[ Failed ]\a\n"); // beep
|
638
|
|
- a.print();
|
|
639
|
+ a.print();
|
639
|
640
|
}
|
640
|
641
|
|
641
|
642
|
/* Cheap X rotation test */
|
|
@@ -643,12 +644,12 @@ int runMatrixUnitTest()
|
643
|
644
|
printf("I -> Rotate (90 degrees, 0, 0)\n");
|
644
|
645
|
a.rotate(90*0.01745329251994329f, 0, 0);
|
645
|
646
|
|
646
|
|
- if (a.mMatrix[i0] != 1 || a.mMatrix[i15] != 1 ||
|
|
647
|
+ if (a.mMatrix[i0] != 1 || a.mMatrix[i15] != 1 ||
|
647
|
648
|
a.mMatrix[i9] != -1 || a.mMatrix[i6] != 1)
|
648
|
649
|
{
|
649
|
650
|
++errs;
|
650
|
651
|
printf(" \t[ Failed ]\a\n"); // beep
|
651
|
|
- a.print();
|
|
652
|
+ a.print();
|
652
|
653
|
}
|
653
|
654
|
|
654
|
655
|
/* Cheap Y rotation test */
|
|
@@ -661,7 +662,7 @@ int runMatrixUnitTest()
|
661
|
662
|
{
|
662
|
663
|
++errs;
|
663
|
664
|
printf(" \t[ Failed ]\a\n"); // beep
|
664
|
|
- a.print();
|
|
665
|
+ a.print();
|
665
|
666
|
}
|
666
|
667
|
|
667
|
668
|
/* Cheap Z rotation test */
|
|
@@ -669,12 +670,12 @@ int runMatrixUnitTest()
|
669
|
670
|
printf("I -> Rotate (0, 0, 90 degrees)\n");
|
670
|
671
|
a.rotate(0, 0, 90*0.01745329251994329f);
|
671
|
672
|
|
672
|
|
- if (a.mMatrix[i4] != -1 || a.mMatrix[i15] != 1 ||
|
|
673
|
+ if (a.mMatrix[i4] != -1 || a.mMatrix[i15] != 1 ||
|
673
|
674
|
a.mMatrix[i1] != 1 || a.mMatrix[i10] != 1)
|
674
|
675
|
{
|
675
|
676
|
++errs;
|
676
|
677
|
printf(" \t[ Failed ]\a\n"); // beep
|
677
|
|
- a.print();
|
|
678
|
+ a.print();
|
678
|
679
|
}
|
679
|
680
|
|
680
|
681
|
printf("\n%i errors\n", errs);
|
|
@@ -699,7 +700,7 @@ int runMatrixUnitTest()
|
699
|
700
|
a.translate(-10, -20, -30);
|
700
|
701
|
printf(" -> Rotate (0, 0, -90 degrees)\n");
|
701
|
702
|
a.rotate(0, 0, -90*0.01745329251994329f);
|
702
|
|
- a.print();
|
|
703
|
+ a.print();
|
703
|
704
|
|
704
|
705
|
printf("\n%i errors\n", errs);
|
705
|
706
|
|