camera.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * 3D Engine
  3. * camera.h:
  4. * Based on pikuma.com 3D software renderer in C
  5. * Copyright (c) 2021 986-Studio. All rights reserved.
  6. *
  7. * Created by Manoël Trapier on 11/03/2021.
  8. */
  9. #ifndef THREEDENGINE_SOURCE_INCLUDE_CAMERA_H
  10. #define THREEDENGINE_SOURCE_INCLUDE_CAMERA_H
  11. #include <vector.h>
  12. #include <matrix.h>
  13. /***********************************************************************************************************************
  14. * Data types
  15. **********************************************************************************************************************/
  16. typedef struct camera_t
  17. {
  18. vec3_t position;
  19. vec3_t direction;
  20. vec4_t target;
  21. vec3_t up;
  22. double yawAngle;
  23. double pitchAngle;
  24. } camera_t;
  25. /***********************************************************************************************************************
  26. * Prototypes
  27. **********************************************************************************************************************/
  28. void createCamera(camera_t *camera);
  29. void cameraSetTarget(camera_t *camera, vec3_t target);
  30. void cameraSetUp(camera_t *camera, vec3_t up);
  31. void cameraSetDirection(camera_t *camera, vec3_t direction);
  32. void cameraMoveForward(camera_t *camera, double distance);
  33. void cameraMoveBackward(camera_t *camera, double distance);
  34. void cameraMoveRelative(camera_t *camera, double x, double y, double z);
  35. void cameraRotateBy(camera_t *camera, double yaw, double pitch);
  36. matrix4_t cameraGetViewMatrix(camera_t *camera);
  37. #endif /* THREEDENGINE_SOURCE_INCLUDE_CAMERA_H */