Tidied javadocs, generated double implementation.
This commit is contained in:
@@ -30,4 +30,42 @@ public class Rectangles
|
|||||||
double y2 = Math.max(src1.maxY(), src2.maxY());
|
double y2 = Math.max(src1.maxY(), src2.maxY());
|
||||||
dst.setBounds(x1, y1, x2 - x1, y2 - y1);
|
dst.setBounds(x1, y1, x2 - x1, y2 - y1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Computes the point inside the bounds of the rectangle that's closest to the given point,
|
||||||
|
* writing the result into {@code out}.
|
||||||
|
* @return {@code out} for call chaining convenience.
|
||||||
|
*/
|
||||||
|
public static Point closestInteriorPoint (IRectangle r, IPoint p, Point out) {
|
||||||
|
out.set(MathUtil.clamp(p.x(), r.minX(), r.maxX()),
|
||||||
|
MathUtil.clamp(p.y(), r.minY(), r.maxY()));
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Computes and returns the point inside the bounds of the rectangle that's closest to the
|
||||||
|
* given point.
|
||||||
|
*/
|
||||||
|
public static Point closestInteriorPoint (IRectangle r, IPoint p) {
|
||||||
|
return closestInteriorPoint(r, p, new Point());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the squared Euclidean distance between the given point and the nearest point inside
|
||||||
|
* the bounds of the given rectangle. If the supplied point is inside the rectangle, the
|
||||||
|
* distance will be zero.
|
||||||
|
*/
|
||||||
|
public static double pointRectDistanceSq (IRectangle r, IPoint p) {
|
||||||
|
Point p2 = closestInteriorPoint(r, p);
|
||||||
|
return Points.distanceSq(p.x(), p.y(), p2.x, p2.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the Euclidean distance between the given point and the nearest point inside the
|
||||||
|
* bounds of the given rectangle. If the supplied point is inside the rectangle, the distance
|
||||||
|
* will be zero.
|
||||||
|
*/
|
||||||
|
public static double pointRectDistance (IRectangle r, IPoint p) {
|
||||||
|
return Math.sqrt(pointRectDistanceSq(r, p));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,28 +30,30 @@ public class Rectangles
|
|||||||
float y2 = Math.max(src1.maxY(), src2.maxY());
|
float y2 = Math.max(src1.maxY(), src2.maxY());
|
||||||
dst.setBounds(x1, y1, x2 - x1, y2 - y1);
|
dst.setBounds(x1, y1, x2 - x1, y2 - y1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Computes the Point on the rectangle that's closest to the given point, writing
|
* Computes the point inside the bounds of the rectangle that's closest to the given point,
|
||||||
the result int {@code out}
|
* writing the result into {@code out}.
|
||||||
|
* @return {@code out} for call chaining convenience.
|
||||||
*/
|
*/
|
||||||
public static Point closestInteriorPoint (IRectangle r, IPoint p, Point out)
|
public static Point closestInteriorPoint (IRectangle r, IPoint p, Point out) {
|
||||||
{
|
|
||||||
out.set(MathUtil.clamp(p.x(), r.minX(), r.maxX()),
|
out.set(MathUtil.clamp(p.x(), r.minX(), r.maxX()),
|
||||||
MathUtil.clamp(p.y(), r.minY(), r.maxY()));
|
MathUtil.clamp(p.y(), r.minY(), r.maxY()));
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Computes the Point on the rectangle that's closest to the given point
|
* Computes and returns the point inside the bounds of the rectangle that's closest to the
|
||||||
|
* given point.
|
||||||
*/
|
*/
|
||||||
public static Point closestInteriorPoint (IRectangle r, IPoint p) {
|
public static Point closestInteriorPoint (IRectangle r, IPoint p) {
|
||||||
return closestInteriorPoint(r, p, new Point());
|
return closestInteriorPoint(r, p, new Point());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the squared Euclidean distance between the given point and the nearest point on the
|
* Returns the squared Euclidean distance between the given point and the nearest point inside
|
||||||
* given rectangle.
|
* the bounds of the given rectangle. If the supplied point is inside the rectangle, the
|
||||||
|
* distance will be zero.
|
||||||
*/
|
*/
|
||||||
public static float pointRectDistanceSq (IRectangle r, IPoint p) {
|
public static float pointRectDistanceSq (IRectangle r, IPoint p) {
|
||||||
Point p2 = closestInteriorPoint(r, p);
|
Point p2 = closestInteriorPoint(r, p);
|
||||||
@@ -59,8 +61,9 @@ public class Rectangles
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Euclidean distance between the given point and the nearest point on the
|
* Returns the Euclidean distance between the given point and the nearest point inside the
|
||||||
* given rectangle.
|
* bounds of the given rectangle. If the supplied point is inside the rectangle, the distance
|
||||||
|
* will be zero.
|
||||||
*/
|
*/
|
||||||
public static float pointRectDistance (IRectangle r, IPoint p) {
|
public static float pointRectDistance (IRectangle r, IPoint p) {
|
||||||
return FloatMath.sqrt(pointRectDistanceSq(r, p));
|
return FloatMath.sqrt(pointRectDistanceSq(r, p));
|
||||||
|
|||||||
Reference in New Issue
Block a user