int mat_cleanup(t_matrix *buf, t_matrix *pos, t_matrix *ang) { t_matrix transfo; t_matrix tmp; mat_rotate_x(buf, M_IJ(ang, 0, 0), 1); mat_rotate_y(&transfo, M_IJ(ang, 1, 0), 1); mat_prod(&tmp, &transfo, buf); *buf = tmp; mat_rotate_z(&transfo, M_IJ(ang, 2, 0), 1); mat_prod(&tmp, &transfo, buf); *buf = tmp; mat_translate(&transfo, pos, 1); mat_prod(&tmp, &transfo, buf); *buf = tmp; return (0); }
int mat_setup(t_matrix *buf, t_matrix *pos, t_matrix *ang, t_matrix *scale) { t_matrix transfo; t_matrix tmp; mat_translate(buf, pos, -1); mat_rotate_z(&transfo, M_IJ(ang, 2, 0), -1); mat_prod(&tmp, &transfo, buf); *buf = tmp; mat_rotate_y(&transfo, M_IJ(ang, 1, 0), -1); mat_prod(&tmp, &transfo, buf); *buf = tmp; mat_rotate_x(&transfo, M_IJ(ang, 0, 0), -1); mat_prod(&tmp, &transfo, buf); *buf = tmp; mat_scale(&transfo, scale, -1); mat_prod(&tmp, &transfo, buf); *buf = tmp; return (0); }
void multiply() // mat['!'] = mat['!'] * mat['@']; { int * temp; if (mat['!'] == NULL) { mat['!'] = mat['@']; bif_rows['!'] = bif_rows['@']; bif_cols['!'] = bif_cols['@']; return; } temp = mat_prod(mat['!'], fib[bif_rows['!']], fib[bif_cols['!']], mat['@'], fib[bif_rows['@']], fib[bif_cols['@']]); free(mat['!']); mat['!'] = temp; bif_cols['!'] = bif_cols['@']; }