Formatting update
[sixth-3d.git] / src / main / java / eu / svjatoslav / sixth / e3d / math / GeometryCoordinate.java
1 /*
2  * Sixth 3D engine. Author: Svjatoslav Agejenko. 
3  * This project is released under Creative Commons Zero (CC0) license.
4  */
5 package eu.svjatoslav.sixth.e3d.math;
6
7 import eu.svjatoslav.sixth.e3d.geometry.Point2D;
8 import eu.svjatoslav.sixth.e3d.geometry.Point3D;
9 import eu.svjatoslav.sixth.e3d.gui.RenderingContext;
10
11 public class GeometryCoordinate {
12
13     public Point3D coordinate;
14     public Point3D transformedCoordinate;
15     public Point2D onScreenCoordinate;
16
17     private int lastTransformedFrame;
18
19     public GeometryCoordinate() {
20         coordinate = new Point3D();
21         transformedCoordinate = new Point3D();
22         onScreenCoordinate = new Point2D();
23     }
24
25     public GeometryCoordinate(final Point3D location) {
26         coordinate = location;
27         transformedCoordinate = new Point3D();
28         onScreenCoordinate = new Point2D();
29     }
30
31     public void transform(final TransformPipe transforms,
32                           final RenderingContext renderContext) {
33
34         if (lastTransformedFrame == renderContext.frameNumber)
35             return;
36
37         lastTransformedFrame = renderContext.frameNumber;
38
39         transforms.transform(coordinate, transformedCoordinate);
40
41         onScreenCoordinate.x = ((transformedCoordinate.x / transformedCoordinate.z) * renderContext.zoom)
42                 + renderContext.xCenter;
43         onScreenCoordinate.y = ((transformedCoordinate.y / transformedCoordinate.z) * renderContext.zoom)
44                 + renderContext.yCenter;
45     }
46 }