X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=sixth-3d.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Fgeometry%2FPoint3D.java;h=462f310ac3f2e3aad1dcf0fdfcdfe88e9a67bfa0;hp=0b28de2559a4269475bb1afa6df70533e7afc23c;hb=baab2e2c2ad89695293f3136311c585c9a5afed1;hpb=2e7e46514dd35006e9dde07b1959540078292691 diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/geometry/Point3D.java b/src/main/java/eu/svjatoslav/sixth/e3d/geometry/Point3D.java index 0b28de2..462f310 100755 --- a/src/main/java/eu/svjatoslav/sixth/e3d/geometry/Point3D.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/geometry/Point3D.java @@ -9,13 +9,16 @@ package eu.svjatoslav.sixth.e3d.geometry; +import static java.lang.Math.cos; +import static java.lang.Math.sin; +import static java.lang.Math.sqrt; + /** - * Used to represent point in a 3D space, vector or speed. + * Used to represent point in a 3D space or vector. */ public class Point3D extends Point2D implements Cloneable { - public static final Point3D ZERO = new Point3D(); public double z; public Point3D() { @@ -70,6 +73,11 @@ public class Point3D extends Point2D implements Cloneable { return this; } + @Override + public boolean isZero(){ + return (x == 0) && (y == 0) && (z == 0); + } + public double getAngleXZ(final Point3D anotherPoint) { return Math.atan2(x - anotherPoint.x, z - anotherPoint.z); } @@ -86,8 +94,12 @@ public class Point3D extends Point2D implements Cloneable { final double yDelta = y - anotherPoint.y; final double zDelta = z - anotherPoint.z; - return Math - .sqrt(((xDelta * xDelta) + (yDelta * yDelta) + (zDelta * zDelta))); + return sqrt(((xDelta * xDelta) + (yDelta * yDelta) + (zDelta * zDelta))); + } + + @Override + public double getVectorLength() { + return sqrt(((x * x) + (y * y) + (z * z))); } @Override @@ -100,11 +112,11 @@ public class Point3D extends Point2D implements Cloneable { public void rotate(final Point3D center, final double angleXZ, final double angleYZ) { - final double s1 = Math.sin(angleXZ); - final double c1 = Math.cos(angleXZ); + final double s1 = sin(angleXZ); + final double c1 = cos(angleXZ); - final double s2 = Math.sin(angleYZ); - final double c2 = Math.cos(angleYZ); + final double s2 = sin(angleYZ); + final double c2 = cos(angleYZ); x -= center.x; y -= center.y; @@ -174,7 +186,7 @@ public class Point3D extends Point2D implements Cloneable { return this; } - public boolean withinDrawingLimits() { + public boolean isVisible() { if (z > 0) return true;