2 * Sixth 3D engine. Author: Svjatoslav Agejenko.
3 * This project is released under Creative Commons Zero (CC0) license.
8 package eu.svjatoslav.sixth.e3d.renderer.octree.raytracer;
10 import eu.svjatoslav.sixth.e3d.geometry.Point3D;
11 import eu.svjatoslav.sixth.e3d.gui.Avatar;
13 public class CameraView {
21 public CameraView(final Avatar avatar, final double zoom) {
22 computeCameraCoordinates(avatar, zoom);
25 private void computeCameraCoordinates(final Avatar avatar, final double zoom) {
26 camCenter = new Point3D(avatar.getLocation()).scaleDown(zoom);
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);
34 final float viewAngle = (float) .6;
36 upLeft.rotate(camCenter, -viewAngle, -viewAngle);
37 upRight.rotate(camCenter, viewAngle, -viewAngle);
38 downLeft.rotate(camCenter, -viewAngle, viewAngle);
39 downRight.rotate(camCenter, viewAngle, viewAngle);
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());