summaryrefslogtreecommitdiffstats
path: root/libdimension/camera.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2009-07-01 04:45:23 +0000
committerTavian Barnes <tavianator@gmail.com>2009-07-01 04:45:23 +0000
commit47c128a3106206038e45eb8b8abf6c712f29ac14 (patch)
tree1e0d0cbbf221214199b2473f9be40be9df17898c /libdimension/camera.c
parente701e589c6a8bc4dd25d6c3e42947b83b09c24dd (diff)
downloaddimension-47c128a3106206038e45eb8b8abf6c712f29ac14.tar.xz
New C++ dmnsn_camera* wrapper.
Diffstat (limited to 'libdimension/camera.c')
-rw-r--r--libdimension/camera.c57
1 files changed, 0 insertions, 57 deletions
diff --git a/libdimension/camera.c b/libdimension/camera.c
index c353cbe..d842869 100644
--- a/libdimension/camera.c
+++ b/libdimension/camera.c
@@ -34,60 +34,3 @@ dmnsn_delete_camera(dmnsn_camera *camera)
{
free(camera);
}
-
-/* Perspective camera */
-
-/* Perspective camera ray callback */
-static dmnsn_line dmnsn_perspective_camera_ray_fn(const dmnsn_camera *camera,
- const dmnsn_canvas *canvas,
- unsigned int x,
- unsigned int y);
-
-/* Create a new perspective camera. Rays are aimed from the origin to a screen
- located on the z = 1 frame, from (-0.5, -0.5) to (0.5, 0.5). Rays are then
- transformed by the matrix `trans'. */
-dmnsn_camera *
-dmnsn_new_perspective_camera(dmnsn_matrix trans)
-{
- dmnsn_camera *camera = dmnsn_new_camera();
- if (camera) {
- camera->ray_fn = &dmnsn_perspective_camera_ray_fn;
-
- camera->ptr = malloc(sizeof(dmnsn_matrix));
- if (!camera->ptr) {
- dmnsn_delete_camera(camera);
- return NULL;
- }
- *((dmnsn_matrix*)camera->ptr) = trans;
- }
- return camera;
-}
-
-/* Delete a perspective camera */
-void
-dmnsn_delete_perspective_camera(dmnsn_camera *camera)
-{
- if (camera) {
- free(camera->ptr);
- dmnsn_delete_camera(camera);
- }
-}
-
-static dmnsn_line
-dmnsn_perspective_camera_ray_fn(const dmnsn_camera *camera,
- const dmnsn_canvas *canvas,
- unsigned int x, unsigned int y)
-{
- dmnsn_matrix *trans = (dmnsn_matrix *)camera->ptr;
- dmnsn_line l;
-
- /* Rays originate at the origin, oddly enough */
- l.x0 = dmnsn_vector_construct(0.0, 0.0, 0.0);
-
- /* Aim at the z = 1 plane */
- l.n.x = ((double)x)/(canvas->x - 1) - 0.5;
- l.n.y = ((double)y)/(canvas->y - 1) - 0.5;
- l.n.z = 1.0;
-
- return dmnsn_matrix_line_mul(*trans, l);
-}