/*
- * Sixth 3D engine. Copyright ©2012-2016, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
+ * Sixth 3D engine. Copyright ©2012-2018, 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
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() {
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);
}
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
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;
return this;
}
- public boolean withinDrawingLimits() {
+ public boolean isVisible() {
if (z > 0)
return true;