oracular (3) get_camera_matrix.3alleg4.gz

Provided by: allegro4-doc_4.4.3.1-5_all bug

NAME

       get_camera_matrix  -  Constructs  a  camera  matrix  for perspective projection. Allegro game programming
       library.

SYNOPSIS

       #include <allegro.h>

       void get_camera_matrix(MATRIX *m, fixed x, y, z, xfront,  yfront,  zfront,  fixed  xup,  yup,  zup,  fov,
       aspect);

DESCRIPTION

       Constructs  a  camera  matrix for translating world-space objects into a normalised view space, ready for
       the perspective projection. The x, y, and z parameters specify the camera position, xfront,  yfront,  and
       zfront  are  the  'in  front'  vector  specifying which way the camera is facing (this can be any length:
       normalisation is not required), and xup, yup, and zup are the 'up' direction vector.

       The fov parameter specifies the field of view (ie. width of the camera focus) in binary, 256  degrees  to
       the  circle  format.  For typical projections, a field of view in the region 32-48 will work well. 64 (90
       degrees) applies no extra scaling - so something which is one unit away from the viewer will be  directly
       scaled  to the viewport. A bigger FOV moves you closer to the viewing plane, so more objects will appear.
       A smaller FOV moves you away from the viewing plane, which means you see a smaller part of the world.

       Finally, the aspect ratio is used to scale the Y dimensions of the image relative to the X axis,  so  you
       can  use  it to adjust the proportions of the output image (set it to 1 for no scaling - but keep in mind
       that the projection also performs scaling according to the viewport  size).   Typically,  you  will  pass
       (float)w/(float)h, where w and h are the parameters you passed to set_projection_viewport.

       Note that versions prior to 4.1.0 multiplied this aspect ratio by 4/3.

SEE ALSO

       apply_matrix(3alleg4),            get_align_matrix(3alleg4),            set_projection_viewport(3alleg4),
       persp_project(3alleg4)