30 for (i = 0; i < 4; i++) {
31 for (j = 0; j < 4; j++) m[i][j] = 0.0
f;
45 for (i = 0; i < 4; i++) {
46 for (j = 0; j < 4; j++) m[i][j] = 0.0;
48 for (i = 0; i < 4; i++) m[i][i] = 1.0;
57 memcpy(dest, src, 16 *
sizeof(
float));
68 for (j = 0; j < 4; j++) {
69 for (i = 0; i < 4; i++) {
84 for (j = 0; j < 4; j++) {
85 for (i = j + 1; i < 4; i++) {
101 for (j = 0; j < 4; j++) {
102 for (i = 0; i < 4; i++) {
103 m[
j][
i] = a[
j][
i] + b[
j][
i];
120 for (j = 0; j < 4; j++) {
121 for (i = 0; i < 4; i++) {
122 m[
j][
i] = a[
j][
i] - b[
j][
i];
137 memcpy(tmp, a, 16 *
sizeof(
float));
138 for (j = 0; j < 4; j++) {
139 for (i = 0; i < 4; i++) {
141 for (k = 0; k < 4; k++) ab += tmp[k][i] * b[j][k];
158 for (j = 0; j < 4; j++) {
159 for (i = 0; i < 4; i++) {
170 return((a)*(d) - (b)*(c));
176 float a1,
float a2,
float a3,
177 float b1,
float b2,
float b3,
178 float c1,
float c2,
float c3) {
180 a1*
det2x2(b2, b3, c2, c3) -
181 b1*
det2x2(a2, a3, c2, c3) +
192 float a1, a2, a3, a4, b1, b2, b3, b4, c1, c2, c3, c4, d1, d2, d3, d4;
211 a1 *
det3x3(b2, b3, b4, c2, c3, c4, d2, d3, d4) -
212 b1 *
det3x3(a2, a3, a4, c2, c3, c4, d2, d3, d4) +
213 c1 *
det3x3(a2, a3, a4, b2, b3, b4, d2, d3, d4) -
214 d1 *
det3x3(a2, a3, a4, b2, b3, b4, c2, c3, c4)
231 int pvt_i[4], pvt_j[4];
237 for (k = 0; k < 4; k++) {
242 for (i = k; i < 4; i++) {
243 for (j = k; j < 4; j++) {
244 if (
fabs(m[i][j]) >
fabs(pvt_val)) {
253 determinat *= pvt_val;
261 for (j = 0; j < 4; j++) {
271 for (i = 0; i < 4; i++) {
279 for (i = 0; i < 4; i++) {
280 if (i != k) m[
i][
k] /= (-pvt_val) ;
284 for (i = 0; i < 4; i++) {
286 for (j = 0; j < 4; j++) {
287 if (i != k && j != k) m[
i][
j] += hold * m[
k][
j];
292 for (j = 0; j < 4; j++) {
293 if (j != k) m[
k][
j] /= pvt_val;
297 m[
k][
k] = 1.0f / pvt_val;
302 for (k = 4 - 2; k >= 0; k--) {
305 for (j = 0; j < 4; j++) {
314 for (i = 0; i < 4; i++) {
331 for (i = 0; i < 3; i++) {
332 m[3][
i] += m[0][
i] * x + m[1][
i] * y + m[2][
i] *
z;
344 for (i = 0; i < 4; i++) {
357 float s, xs, ys, zs, wx, wy, wz, xx, xy, xz, yy, yz, zz,
l;
360 l = q[0] * q[0] + q[1] * q[1] + q[2] * q[2] + q[3] * q[3];
380 R[0][0] = 1.0f - (yy + zz);
384 R[1][1] = 1.0f - (xx + zz);
388 R[2][2] = 1.0f - (xx + yy);
389 R[3][0] = R[3][1] = R[3][2] = R[0][3] = R[1][3] = R[2][3] = 0.0f;
425 float x[3],
y[3],
z[3];
430 if (y[0] != 0. || y[1] != 0) {
LIB3DSAPI void lib3ds_matrix_rotate_quat(float m[4][4], float q[4])
LIB3DSAPI void lib3ds_matrix_add(float m[4][4], float a[4][4], float b[4][4])
GLboolean GLboolean GLboolean GLboolean a
LIB3DSAPI void lib3ds_matrix_rotate(float m[4][4], float angle, float ax, float ay, float az)
LIB3DSAPI void lib3ds_matrix_scale(float m[4][4], float x, float y, float z)
return Display return Display Bool Bool int d
LIB3DSAPI void lib3ds_matrix_identity(float m[4][4])
static float det2x2(float a, float b, float c, float d)
LIB3DSAPI void lib3ds_matrix_mult(float m[4][4], float a[4][4], float b[4][4])
LIB3DSAPI void lib3ds_vector_make(float c[3], float x, float y, float z)
static float det3x3(float a1, float a2, float a3, float b1, float b2, float b3, float c1, float c2, float c3)
LIB3DSAPI void lib3ds_vector_normalize(float c[3])
EGLSurface EGLint EGLint y
LIB3DSAPI void lib3ds_matrix_neg(float m[4][4])
LIB3DSAPI void lib3ds_matrix_translate(float m[4][4], float x, float y, float z)
LIB3DSAPI void lib3ds_vector_sub(float c[3], float a[3], float b[3])
LIB3DSAPI void lib3ds_matrix_camera(float m[4][4], float pos[3], float tgt[3], float roll)
GLdouble GLdouble GLdouble GLdouble q
LIB3DSAPI void lib3ds_matrix_scalar(float m[4][4], float k)
LIB3DSAPI void lib3ds_matrix_zero(float m[4][4])
LIB3DSAPI void lib3ds_vector_cross(float c[3], float a[3], float b[3])
LIB3DSAPI void lib3ds_matrix_sub(float m[4][4], float a[4][4], float b[4][4])
GLdouble GLdouble GLdouble b
GLint GLint GLint GLint z
LIB3DSAPI int lib3ds_matrix_inv(float m[4][4])
LIB3DSAPI float lib3ds_matrix_det(float m[4][4])
LIB3DSAPI void lib3ds_quat_axis_angle(float c[4], float axis[3], float angle)
LIB3DSAPI void lib3ds_matrix_transpose(float m[4][4])
LIB3DSAPI void lib3ds_matrix_copy(float dest[4][4], float src[4][4])