X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Fgeometry%2FPoint3D.java;h=120ea323ac139c27db1d932dc1fae8941d0800d4;hb=a3ff3683bd0a025061667b26b6fcf56fe20f0afc;hp=1c8700a5bda10161ac3d8ba261f0f5e716dea83b;hpb=3e2b906bd05617a4d9725de39ac14c9ea1f8736c;p=sixth-3d.git 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 1c8700a..120ea32 100755 --- a/src/main/java/eu/svjatoslav/sixth/e3d/geometry/Point3D.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/geometry/Point3D.java @@ -1,5 +1,5 @@ /* - * Sixth 3D engine. Author: Svjatoslav Agejenko. + * Sixth 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ package eu.svjatoslav.sixth.e3d.geometry; @@ -58,6 +58,21 @@ public class Point3D implements Cloneable { return this; } + /** + * Add coordinates of current point to other point. Value of current point will not be changed. + * + * @return current point. + */ + public Point3D addTo(final Point3D... otherPoints) { + for (final Point3D otherPoint : otherPoints) otherPoint.add(this); + return this; + } + + /** + * Create new point by cloning position of current point. + * + * @return newly created clone. + */ public Point3D clone() { return new Point3D(this); } @@ -143,12 +158,12 @@ public class Point3D implements Cloneable { *

* See also: Let's remove Quaternions from every 3D Engine * - * @param center center point. + * @param center center point. * @param angleXZ angle around XZ axis. * @param angleYZ angle around YZ axis. */ - public void rotate(final Point3D center, final double angleXZ, - final double angleYZ) { + public Point3D rotate(final Point3D center, final double angleXZ, + final double angleYZ) { final double s1 = sin(angleXZ); final double c1 = cos(angleXZ); @@ -168,6 +183,12 @@ public class Point3D implements Cloneable { x = x1 + center.x; y = y1 + center.y; z = z2 + center.z; + + return this; + } + + public Point3D rotate(final double angleXZ, final double angleYZ) { + return rotate(new Point3D(0, 0, 0), angleXZ, angleYZ); } /** @@ -209,6 +230,7 @@ public class Point3D implements Cloneable { /** * Set current point coordinates to given values. + * * @param x X coordinate. * @param y Y coordinate. * @param z Z coordinate.