fxengine/src/camera.c

40 lines
858 B
C

#include <fxengine/camera.h>
#include <gint/std/string.h>
void fe_view_set(const fe_camera * cam)
{
fe_view_set_param(cam->dh, cam->dv, cam->roll, &cam->pos);
}
void fe_view_set_param(const double dh, const double dv, const double roulis, const fe_ipoint * camera)
{
const double A=fe_cos(dv);
const double B=fe_sin(dv);
const double C=fe_cos(roulis);
const double D=fe_sin(roulis);
const double E=fe_cos(dh);
const double F=fe_sin(dh);
// raccourcis
const double AD=A*D, BD=B*D;
fe_matrix[0][0]=C*E;
fe_matrix[0][1]=-C*F;
fe_matrix[0][2]=D;
fe_matrix[1][0]=BD*E+A*F;
fe_matrix[1][1]=-BD*F+A*E;
fe_matrix[1][2]=-B*C;
fe_matrix[2][0]=-AD*E+B*F;
fe_matrix[2][1]=AD*F+B*E;
fe_matrix[2][2]=A*C;
// assigner delta
memcpy(&fe_translate_delta, camera, sizeof(fe_ipoint));
}