Mercurial > hg > dmlib
diff vecmattest.c @ 0:32250b436bca
Initial re-import.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 28 Sep 2012 01:54:23 +0300 |
parents | |
children | 07c4f1a7ddc6 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vecmattest.c Fri Sep 28 01:54:23 2012 +0300 @@ -0,0 +1,84 @@ +#include "dmlib.h" +#include "dmvecmat.h" + +void printTest(const char *test, int expected, int result) +{ + fprintf(stderr, "Test '%s': %s\n", test, + expected == result ? "OK" : "FAILED!"); +} + +#define tst(X, R) printTest(# X, (X), (R)) + + +void dm_vector_fprintf(FILE *f, const char *name, DMVector *v) +{ + if (name != NULL) + fprintf(f, "%s=", name); + + fprintf(f, "[<%1.3f, %1.3f, %1.3f>=%1.3f]", v->x, v->y, v->z, dm_vector_length(v)); + + if (name != NULL) + fprintf(f, "\n"); +} + + +void dm_vector_printf(const char *name, DMVector *v) +{ + dm_vector_fprintf(stdout, name, v); +} + + +void dm_matrix_fprintf(FILE *f, const char *name, DMMatrix *mat) +{ + int i, j, k, pad = 0; + char *tmp = NULL; + + if (name != NULL) + { + tmp = dm_strdup_printf("%s=", name); + pad = strlen(tmp); + } + + for (i = 0; i < DM_MATRIX_SIZE; i++) + { + if (i == 1) + fputs(tmp, f); + else + for (k = 0; k < pad; k++) + fputc(' ', f); + + fprintf(f, "["); + for (j = 0; j < DM_MATRIX_SIZE; j++) + fprintf(f, "% 8.3f%s", mat->m[i][j], j < DM_MATRIX_SIZE - 1 ? " " : ""); + + fprintf(f, "]\n"); + } +} + + +void dm_matrix_printf(const char *name, DMMatrix *mat) +{ + dm_matrix_fprintf(stdout, name, mat); +} + + +int main(int argc, char *argv[]) +{ + DMVector a = { -5, 1, 17 }, b = { 1, 2, 0.5 }; + DMMatrix m; + + (void) argc; + (void) argv; + + dm_vector_printf("a", &a); + dm_vector_printf("b", &a); + + dm_matrix_rot_a(&m, 0.5, 0.9, 0.1); + dm_matrix_printf("m", &m); + + dm_vector_mul_by_mat(&b, &a, &m); + + dm_vector_printf("nb", &b); + + return 0; +}