2 * Sixth 3D engine. Author: Svjatoslav Agejenko.
3 * This project is released under Creative Commons Zero (CC0) license.
5 package eu.svjatoslav.sixth.e3d.renderer.octree.raytracer;
7 import eu.svjatoslav.sixth.e3d.geometry.Point3D;
8 import eu.svjatoslav.sixth.e3d.gui.Avatar;
10 public class CameraView {
18 public CameraView(final Avatar avatar, final double zoom) {
19 computeCameraCoordinates(avatar, zoom);
22 private void computeCameraCoordinates(final Avatar avatar, final double zoom) {
23 camCenter = new Point3D(avatar.getLocation()).scaleDown(zoom);
25 upLeft = new Point3D(camCenter.x, camCenter.y, camCenter.z
26 + Camera.CAMERA_SIZE);
27 upRight = new Point3D(upLeft);
28 downLeft = new Point3D(upLeft);
29 downRight = new Point3D(upLeft);
31 final float viewAngle = (float) .6;
33 upLeft.rotate(camCenter, -viewAngle, -viewAngle);
34 upRight.rotate(camCenter, viewAngle, -viewAngle);
35 downLeft.rotate(camCenter, -viewAngle, viewAngle);
36 downRight.rotate(camCenter, viewAngle, viewAngle);
38 upLeft.rotate(camCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ());
39 upRight.rotate(camCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ());
40 downLeft.rotate(camCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ());
41 downRight.rotate(camCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ());