X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Frenderer%2Foctree%2Fraytracer%2FCamera.java;h=559cc6cacc08f21eaf00bc9f2b023997a242f11f;hb=a3ff3683bd0a025061667b26b6fcf56fe20f0afc;hp=f205ebfdb03ee8fefa973ff627da9e13d520448e;hpb=316a696bf9db6e8eddf90ef3df5e1119481c0192;p=sixth-3d.git diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/renderer/octree/raytracer/Camera.java b/src/main/java/eu/svjatoslav/sixth/e3d/renderer/octree/raytracer/Camera.java index f205ebf..559cc6c 100755 --- a/src/main/java/eu/svjatoslav/sixth/e3d/renderer/octree/raytracer/Camera.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/renderer/octree/raytracer/Camera.java @@ -1,5 +1,5 @@ /* - * Sixth 3D engine. Author: Svjatoslav Agejenko. + * Sixth 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ package eu.svjatoslav.sixth.e3d.renderer.octree.raytracer; @@ -18,12 +18,15 @@ import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; +/** + * Camera that sees the raytraced scene. + * It is represented on the scene as a textured rectangle. + */ public class Camera extends TexturedRectangle { - public static final int CAMERA_SIZE = 100; + public static final int SIZE = 100; public static final int IMAGE_SIZE = 500; private final CameraView cameraView; - private Point3D camCenter; public Camera(final Avatar avatar, final double zoom) { super(new Transform(avatar.getLocation().clone())); @@ -51,36 +54,30 @@ public class Camera extends TexturedRectangle { } private void computeCameraCoordinates(final Avatar avatar) { - initialize(CAMERA_SIZE, CAMERA_SIZE, IMAGE_SIZE, IMAGE_SIZE, 3); - - camCenter = new Point3D(); + initialize(SIZE, SIZE, IMAGE_SIZE, IMAGE_SIZE, 3); - topLeft.setValues(camCenter.x, camCenter.y, camCenter.z + CAMERA_SIZE); + Point3D cameraCenter = new Point3D(); + topLeft.setValues(cameraCenter.x, cameraCenter.y, cameraCenter.z + SIZE); topRight.clone(topLeft); bottomLeft.clone(topLeft); bottomRight.clone(topLeft); final float viewAngle = (float) .6; - topLeft.rotate(camCenter, -viewAngle, -viewAngle); - topRight.rotate(camCenter, viewAngle, -viewAngle); - bottomLeft.rotate(camCenter, -viewAngle, viewAngle); - bottomRight.rotate(camCenter, viewAngle, viewAngle); + topLeft.rotate(cameraCenter, -viewAngle, -viewAngle); + topRight.rotate(cameraCenter, viewAngle, -viewAngle); + bottomLeft.rotate(cameraCenter, -viewAngle, viewAngle); + bottomRight.rotate(cameraCenter, viewAngle, viewAngle); - topLeft.rotate(camCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ()); - topRight.rotate(camCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ()); - bottomLeft.rotate(camCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ()); - bottomRight.rotate(camCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ()); + topLeft.rotate(cameraCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ()); + topRight.rotate(cameraCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ()); + bottomLeft.rotate(cameraCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ()); + bottomRight.rotate(cameraCenter, -avatar.getAngleXZ(), -avatar.getAngleYZ()); final Color cameraColor = new Color(255, 255, 0, 255); final LineAppearance appearance = new LineAppearance(2, cameraColor); - // addShape(appearance.getLine(camCenter, upLeft)); - // addShape(appearance.getLine(camCenter, upRight)); - // addShape(appearance.getLine(camCenter, downLeft)); - // addShape(appearance.getLine(camCenter, downRight)); - addShape(appearance.getLine(topLeft, topRight)); addShape(appearance.getLine(bottomLeft, bottomRight)); addShape(appearance.getLine(topLeft, bottomLeft));