2 * Sixth 3D engine. Author: Svjatoslav Agejenko.
3 * This project is released under Creative Commons Zero (CC0) license.
8 package eu.svjatoslav.sixth.e3d.math;
10 import eu.svjatoslav.sixth.e3d.geometry.Point2D;
11 import eu.svjatoslav.sixth.e3d.geometry.Point3D;
12 import eu.svjatoslav.sixth.e3d.gui.RenderingContext;
14 public class GeometryCoordinate {
16 public Point3D coordinate;
17 public Point3D transformedCoordinate;
18 public Point2D onScreenCoordinate;
20 private int lastTransformedFrame;
22 public GeometryCoordinate() {
23 coordinate = new Point3D();
24 transformedCoordinate = new Point3D();
25 onScreenCoordinate = new Point2D();
28 public GeometryCoordinate(final Point3D location) {
29 coordinate = location;
30 transformedCoordinate = new Point3D();
31 onScreenCoordinate = new Point2D();
34 public void transform(final TransformPipe transforms,
35 final RenderingContext renderContext) {
37 if (lastTransformedFrame == renderContext.frameNumber)
40 lastTransformedFrame = renderContext.frameNumber;
42 transforms.transform(coordinate, transformedCoordinate);
44 onScreenCoordinate.x = ((transformedCoordinate.x / transformedCoordinate.z) * renderContext.zoom)
45 + renderContext.xCenter;
46 onScreenCoordinate.y = ((transformedCoordinate.y / transformedCoordinate.z) * renderContext.zoom)
47 + renderContext.yCenter;