Changed license to Creative Commons Zero (CC0).
[sixth-3d.git] / src / main / java / eu / svjatoslav / sixth / e3d / renderer / octree / raytracer / CameraView.java
1 /*
2  * Sixth 3D engine. Author: Svjatoslav Agejenko. 
3  * This project is released under Creative Commons Zero (CC0) license.
4  *
5 *
6  */
7
8 package eu.svjatoslav.sixth.e3d.renderer.octree.raytracer;
9
10 import eu.svjatoslav.sixth.e3d.geometry.Point3D;
11 import eu.svjatoslav.sixth.e3d.gui.Avatar;
12
13 public class CameraView {
14
15     Point3D camCenter;
16     Point3D upLeft;
17     Point3D upRight;
18     Point3D downLeft;
19     Point3D downRight;
20
21     public CameraView(final Avatar avatar, final double zoom) {
22         computeCameraCoordinates(avatar, zoom);
23     }
24
25     private void computeCameraCoordinates(final Avatar avatar, final double zoom) {
26         camCenter = new Point3D(avatar.getLocation()).scaleDown(zoom);
27
28         upLeft = new Point3D(camCenter.x, camCenter.y, camCenter.z
29                 + Camera.CAMERA_SIZE);
30         upRight = new Point3D(upLeft);
31         downLeft = new Point3D(upLeft);
32         downRight = new Point3D(upLeft);
33
34         final float viewAngle = (float) .6;
35
36         upLeft.rotate(camCenter, -viewAngle, -viewAngle);
37         upRight.rotate(camCenter, viewAngle, -viewAngle);
38         downLeft.rotate(camCenter, -viewAngle, viewAngle);
39         downRight.rotate(camCenter, viewAngle, viewAngle);
40
41         upLeft.rotate(camCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ());
42         upRight.rotate(camCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ());
43         downLeft.rotate(camCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ());
44         downRight.rotate(camCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ());
45     }
46
47 }