10 for (
int i = 0; i < N; ++i) {
11 std::cout << x[i] <<
" ";
13 std::cout << std::endl;
17 for (
int j = 0; j < M; ++j) {
18 for (
int i = 0; i < N; ++i) {
19 std::cout << A[i][j] <<
" ";
21 std::cout << std::endl;
23 std::cout << std::endl;
29 return fabsf(x - y) < 1.0e-5f;
33 return length2(x - y) < 1.0e-4f;
37 return norm2_2(x - y) < 1.0e-3f;
46 assert(S1 ==
mat4(
vec4(1,0,0,0),
vec4(0,2,0,0),
vec4(0,0,3,0),
vec4(0,0,0,1)));
47 assert(S2 ==
mat4(
vec4(2,0,0,0),
vec4(0,6,0,0),
vec4(0,0,12,0),
vec4(0,0,0,1)));
51 assert(S1 * p ==
vec4(4,10,18,1));
52 assert(S1 * d ==
vec4(4,10,18,0));
53 assert(S2 * p ==
vec4(8,30,72,1));
54 assert(S2 * d ==
vec4(8,30,72,0));
56 assert(S1 * S2 == S2 * S1);
65 assert(T1 ==
mat4(
vec4(1,0,0,0),
vec4(0,1,0,0),
vec4(0,0,1,0),
vec4(1,2,3,1)));
66 assert(T2 ==
mat4(
vec4(1,0,0,0),
vec4(0,1,0,0),
vec4(0,0,1,0),
vec4(-1,3,2,1)));
71 assert((T1 * p) == (p +
vec4(1,2,3,0)));
72 assert((T1 * d) == d);
73 assert((T2 * p) == (p +
vec4(-1,3,2,0)));
74 assert((T2 * d) == d);
76 assert(T1 * T2 == T2 * T1);
96 assert(ST1 * p ==
vec4( 9,6,6,1));
97 assert(ST1 * d ==
vec4( 8,5,6,0));
98 assert(TS1 * p ==
vec4(10,6,6,1));
99 assert(TS1 * d ==
vec4( 8,5,6,0));
104 float deg90 =
M_PI / 2.0f;
106 float deg270 = -
M_PI / 2.0f;
113 assert(
approxEq(Rx0,
mat4(
vec4(1,0,0,0),
vec4(0, 1, 0,0),
vec4(0, 0, 1,0),
vec4(0,0,0,1))));
114 assert(
approxEq(Rx90,
mat4(
vec4(1,0,0,0),
vec4(0, 0, 1,0),
vec4(0,-1, 0,0),
vec4(0,0,0,1))));
115 assert(
approxEq(Rx180,
mat4(
vec4(1,0,0,0),
vec4(0,-1, 0,0),
vec4(0, 0,-1,0),
vec4(0,0,0,1))));
116 assert(
approxEq(Rx270,
mat4(
vec4(1,0,0,0),
vec4(0, 0,-1,0),
vec4(0, 1, 0,0),
vec4(0,0,0,1))));
132 assert(
approxEq(Ry0,
mat4(
vec4( 1,0, 0,0),
vec4(0,1,0,0),
vec4( 0,0, 1,0),
vec4(0,0,0,1))));
133 assert(
approxEq(Ry90,
mat4(
vec4( 0,0,-1,0),
vec4(0,1,0,0),
vec4( 1,0, 0,0),
vec4(0,0,0,1))));
134 assert(
approxEq(Ry180,
mat4(
vec4(-1,0, 0,0),
vec4(0,1,0,0),
vec4( 0,0,-1,0),
vec4(0,0,0,1))));
135 assert(
approxEq(Ry270,
mat4(
vec4( 0,0, 1,0),
vec4(0,1,0,0),
vec4(-1,0, 0,0),
vec4(0,0,0,1))));
151 assert(
approxEq(Rz0,
mat4(
vec4( 1, 0,0,0),
vec4( 0, 1,0,0),
vec4(0,0,1,0),
vec4(0,0,0,1))));
152 assert(
approxEq(Rz90,
mat4(
vec4( 0, 1,0,0),
vec4(-1, 0,0,0),
vec4(0,0,1,0),
vec4(0,0,0,1))));
153 assert(
approxEq(Rz180,
mat4(
vec4(-1, 0,0,0),
vec4( 0,-1,0,0),
vec4(0,0,1,0),
vec4(0,0,0,1))));
154 assert(
approxEq(Rz270,
mat4(
vec4( 0,-1,0,0),
vec4( 1, 0,0,0),
vec4(0,0,1,0),
vec4(0,0,0,1))));
169 mat4 rot3 = Rx90 * rot1;
173 assert(
approxEq(q,
vec4(-1.05647, 0.231566, 2.19778, 1)));
182 vec4(0, 0.00416667, 0, 0),
184 vec4(-1, -1, 0, 1))));
190 vec4(0, 0.00416667, 0, 0),
226 A =
ortho(l, r, b, t, n, f);
mat4 frustum(float left, float right, float bottom, float top, float nearVal, float farVal)
T length(const vecN< N, T > &x)
mat4 rotateY(float angle)
T length2(const vecN< N, T > &x)
matMxN< 4, 4, float > mat4
vecN< N, T > normalize(const vecN< N, T > &x)
T norm2_2(const matMxN< M, N, T > &A)
mat4 scale(const vec3 &xyz)
mat4 rotateZ(float angle)
matMxN< 2, 2, T > inverse(const matMxN< 2, 2, T > &A)
matMxN< N, M, T > transpose(const matMxN< M, N, T > &A)
mat4 translate(const vec3 &xyz)
mat4 rotate(float angle, const vec3 &axis)
mat4 ortho(float left, float right, float bottom, float top, float nearVal, float farVal)
mat4 rotateX(float angle)