X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Fgui%2FUserRelativityTracker.java;h=d491b0fe55da242210a1884530fdcb20a401fecb;hb=HEAD;hp=dd706db3929d1790e3bf89d05be82843523210a1;hpb=a2131986d65a769e3d589e4e0370d4af0ce10c38;p=sixth-3d.git diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/gui/UserRelativityTracker.java b/src/main/java/eu/svjatoslav/sixth/e3d/gui/UserRelativityTracker.java index dd706db..d491b0f 100644 --- a/src/main/java/eu/svjatoslav/sixth/e3d/gui/UserRelativityTracker.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/gui/UserRelativityTracker.java @@ -18,8 +18,22 @@ import eu.svjatoslav.sixth.e3d.math.Vertex; public class UserRelativityTracker { private final static int minimalSliceFactor = 5; + + /** + * Points to 0, 0, 0 in object own relative space. + */ public Vertex center = new Vertex(); + + /** + * Points to 10, 0, 0 in object own relative space if orientation tracking is enabled. + * It is used to determine the angle between the user and the object. + */ public Vertex right; + + /** + * Points to 0, 10, 0 in object own relative space if orientation tracking is enabled. + * It is used to determine the angle between the user and the object. + */ public Vertex down; public UserRelativityTracker() { @@ -31,32 +45,53 @@ public class UserRelativityTracker { center.calculateLocationRelativeToViewer(transformPipe, renderingContext); - if (right != null) { + if (right != null) { // If orientation tracking is enabled. right.calculateLocationRelativeToViewer(transformPipe, renderingContext); down.calculateLocationRelativeToViewer(transformPipe, renderingContext); } } + /** + * Initializes the orientation tracking. + * Orientation tracking is used to determine the angle between the user and the object. + * Orientation tracking is disabled by default and it is optional. + */ public void enableOrientationTracking() { right = new Vertex(new Point3D(10, 0, 0)); down = new Vertex(new Point3D(0, 10, 0)); } + /** + * Calculates the angle between the user and the object in the XY plane. + * @return the angle between the user and the object in the XY plane. + */ public double getAngleXY() { return center.transformedCoordinate .getAngleXY(down.transformedCoordinate); } + /** + * Calculates the angle between the user and the object in the XZ plane. + * @return the angle between the user and the object in the XZ plane. + */ public double getAngleXZ() { return center.transformedCoordinate .getAngleXZ(right.transformedCoordinate); } + /** + * Calculates the angle between the user and the object in the YZ plane. + * @return the angle between the user and the object in the YZ plane. + */ public double getAngleYZ() { return center.transformedCoordinate .getAngleYZ(down.transformedCoordinate); } + /** + * Calculates the distance between the user and the object. + * Distance to the user can be used to determine object detail level. + */ public double getDistanceToUser() { return center.transformedCoordinate.getVectorLength(); }