/*
- * Sixth 3D engine. Copyright ©2012-2020, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 3 of the GNU Lesser General Public License
- * or later as published by the Free Software Foundation.
- *
+ * Sixth 3D engine. Author: Svjatoslav Agejenko.
+ * This project is released under Creative Commons Zero (CC0) license.
*/
-
-
package eu.svjatoslav.sixth.e3d.gui;
import eu.svjatoslav.sixth.e3d.geometry.Point3D;
-import eu.svjatoslav.sixth.e3d.math.GeometryCoordinate;
-import eu.svjatoslav.sixth.e3d.math.TransformPipe;
+import eu.svjatoslav.sixth.e3d.math.TransformsStack;
+import eu.svjatoslav.sixth.e3d.math.Vertex;
+
+/**
+ * Tracks the position of the user in the 3D space.
+ * <p>
+ * It can be used to determine the angle between the user and the object.
+ * Also, it can be used to determine the distance between the user and the object.
+ */
public class UserRelativityTracker {
private final static int minimalSliceFactor = 5;
- public GeometryCoordinate center = new GeometryCoordinate();
- public GeometryCoordinate right;
- public GeometryCoordinate down;
+ public Vertex center = new Vertex();
+ public Vertex right;
+ public Vertex down;
public UserRelativityTracker() {
}
- public void analyze(final TransformPipe transformPipe,
+ public void analyze(final TransformsStack transformPipe,
final RenderingContext renderingContext) {
- center.transform(transformPipe, renderingContext);
+ center.calculateLocationRelativeToViewer(transformPipe, renderingContext);
if (right != null) {
- right.transform(transformPipe, renderingContext);
- down.transform(transformPipe, renderingContext);
+ right.calculateLocationRelativeToViewer(transformPipe, renderingContext);
+ down.calculateLocationRelativeToViewer(transformPipe, renderingContext);
}
}
public void enableOrientationTracking() {
- right = new GeometryCoordinate(new Point3D(10, 0, 0));
- down = new GeometryCoordinate(new Point3D(0, 10, 0));
+ right = new Vertex(new Point3D(10, 0, 0));
+ down = new Vertex(new Point3D(0, 10, 0));
}
public double getAngleXY() {