room101/CAMERA.CPP

41 lines
1.2 KiB
C++

#include "camera.hpp"
#include "memory.hpp"
/*******************************************************************************
** CameraCreate
*******************************************************************************/
void
CameraCreate(Camera* camera, Picture* fb, Picture* zb, float aspect)
{
memset(camera, 0, sizeof(Camera));
camera->fb = fb;
camera->zb = zb;
camera->origin[0] = fb->width / 2.0f;
camera->origin[1] = fb->height / 2.0f;
camera->aspect = aspect;
}
/*******************************************************************************
** CameraLookAt
*******************************************************************************/
void
CameraLookAt(Camera* camera, Vector A, Vector B)
{
Vector up = {0.0f, 1.0f, 0.0f};
Vector dir;
Matrix matrix;
VectorSubtract(dir, B, A);
MatrixView(matrix, dir, up, 0.0f);
CameraLocate(camera, matrix);
}
/*******************************************************************************
** CameraLocate
*******************************************************************************/
void
CameraLocate(Camera* camera, Matrix matrix)
{
MatrixCopy(camera->matrix, matrix);
}