41 lines
1.2 KiB
C++
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);
|
|
}
|
|
|