예제 #1
0
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);
}
예제 #2
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);
}
예제 #3
0
파일: knot.c 프로젝트: freshbugs/knot
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['@'];
}