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 cameraCenter = new Point3D(avatar.getLocation()).scaleDown(zoom);
25 topLeft = new Point3D(cameraCenter.x, cameraCenter.y, cameraCenter.z
27 topRight = new Point3D(topLeft);
28 bottomLeft = new Point3D(topLeft);
29 bottomRight = new Point3D(topLeft);
31 final float viewAngle = (float) .6;
33 topLeft.rotate(cameraCenter, -viewAngle, -viewAngle);
34 topRight.rotate(cameraCenter, viewAngle, -viewAngle);
35 bottomLeft.rotate(cameraCenter, -viewAngle, viewAngle);
36 bottomRight.rotate(cameraCenter, viewAngle, viewAngle);
38 topLeft.rotate(cameraCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ());
39 topRight.rotate(cameraCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ());
40 bottomLeft.rotate(cameraCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ());
41 bottomRight.rotate(cameraCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ());