/*
- * 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;
import static java.lang.Math.sqrt;
+/**
+ * Used to represent point in a 2D space or vector.
+ *
+ * @see Point3D
+ */
public class Point2D implements Cloneable {
public double x, y;
this.y = y;
}
- public Point2D(final Point2D source) {
- x = source.x;
- y = source.y;
+ public Point2D(final Point2D parent) {
+ x = parent.x;
+ y = parent.y;
}
- public Point2D add(final Point2D direction) {
- x += direction.x;
- y += direction.y;
+
+ /**
+ * Add other point to current point. Value of other point will not be changed.
+ *
+ * @return current point.
+ */
+ public Point2D add(final Point2D otherPoint) {
+ x += otherPoint.x;
+ y += otherPoint.y;
return this;
}
+ /**
+ * @return true if current point coordinates are equal to zero.
+ */
public boolean isZero() {
return (x == 0) && (y == 0);
}
return new Point2D(this);
}
- public void clone(final Point2D source) {
- x = source.x;
- y = source.y;
+ /**
+ * Copy coordinates from other point to current point. Value of other point will not be changed.
+ */
+ public void clone(final Point2D otherPoint) {
+ x = otherPoint.x;
+ y = otherPoint.y;
}
- public Point2D getMiddle(final Point2D p1, final Point2D p2) {
+ /**
+ * Set current point to middle of two other points.
+ *
+ * @param p1 first point.
+ * @param p2 second point.
+ * @return current point.
+ */
+ public Point2D setToMiddle(final Point2D p1, final Point2D p2) {
x = (p1.x + p2.x) / 2d;
y = (p1.y + p2.y) / 2d;
return this;
/**
* Compute distance to another point.
+ *
+ * @param anotherPoint point to compute distance to.
+ * @return distance from current point to another point.
*/
public double getDistanceTo(final Point2D anotherPoint) {
final double xDiff = x - anotherPoint.x;
return sqrt(((xDiff * xDiff) + (yDiff * yDiff)));
}
+ /**
+ * Calculate length of vector.
+ *
+ * @return length of vector.
+ */
public double getVectorLength() {
return sqrt(((x * x) + (y * y)));
}
+ /**
+ * Invert current point.
+ *
+ * @return current point.
+ */
public Point2D invert() {
x = -x;
y = -y;
return this;
}
+ /**
+ * Round current point coordinates to integer.
+ */
public void roundToInteger() {
x = (int) x;
y = (int) y;
}
- public Point2D subtract(final Point2D point) {
- x -= point.x;
- y -= point.y;
+ /**
+ * Subtract other point from current point. Value of other point will not be changed.
+ *
+ * @return current point.
+ */
+ public Point2D subtract(final Point2D otherPoint) {
+ x -= otherPoint.x;
+ y -= otherPoint.y;
return this;
}
+ /**
+ * Convert current point to 3D point.
+ * Value of the z coordinate will be set to zero.
+ *
+ * @return 3D point.
+ */
public Point3D to3D() {
return new Point3D(x, y, 0);
}
+ /**
+ * Set current point to zero.
+ *
+ * @return current point.
+ */
public Point2D zero() {
x = 0;
y = 0;