2 * Sixth 3D engine. Author: Svjatoslav Agejenko.
3 * This project is released under Creative Commons Zero (CC0) license.
5 package eu.svjatoslav.sixth.e3d.math;
7 import eu.svjatoslav.sixth.e3d.geometry.Point2D;
8 import eu.svjatoslav.sixth.e3d.geometry.Point3D;
9 import eu.svjatoslav.sixth.e3d.gui.RenderingContext;
11 public class GeometryCoordinate {
13 public Point3D coordinate;
14 public Point3D transformedCoordinate;
15 public Point2D onScreenCoordinate;
17 private int lastTransformedFrame;
19 public GeometryCoordinate() {
20 coordinate = new Point3D();
21 transformedCoordinate = new Point3D();
22 onScreenCoordinate = new Point2D();
25 public GeometryCoordinate(final Point3D location) {
26 coordinate = location;
27 transformedCoordinate = new Point3D();
28 onScreenCoordinate = new Point2D();
31 public void transform(final TransformPipe transforms,
32 final RenderingContext renderContext) {
34 if (lastTransformedFrame == renderContext.frameNumber)
37 lastTransformedFrame = renderContext.frameNumber;
39 transforms.transform(coordinate, transformedCoordinate);
41 onScreenCoordinate.x = ((transformedCoordinate.x / transformedCoordinate.z) * renderContext.zoom)
42 + renderContext.xCenter;
43 onScreenCoordinate.y = ((transformedCoordinate.y / transformedCoordinate.z) * renderContext.zoom)
44 + renderContext.yCenter;