46 lines
1.1 KiB
Java
46 lines
1.1 KiB
Java
package games.dmg.spigottyrant;
|
|
|
|
public final class ArenaGeometry {
|
|
private ArenaGeometry() {
|
|
}
|
|
|
|
public static boolean contains(
|
|
ArenaLocation center,
|
|
double radius,
|
|
String worldName,
|
|
double x,
|
|
double y,
|
|
double z
|
|
) {
|
|
if (!center.worldName().equals(worldName)) {
|
|
return false;
|
|
}
|
|
double deltaX = x - center.x();
|
|
double deltaZ = z - center.z();
|
|
return deltaX * deltaX + deltaZ * deltaZ <= radius * radius;
|
|
}
|
|
|
|
public static ArenaPoint outside(
|
|
ArenaLocation center,
|
|
double radius,
|
|
double x,
|
|
double y,
|
|
double z
|
|
) {
|
|
double deltaX = x - center.x();
|
|
double deltaZ = z - center.z();
|
|
double length = Math.hypot(deltaX, deltaZ);
|
|
if (length < 0.0001) {
|
|
deltaX = 1.0;
|
|
deltaZ = 0.0;
|
|
length = 1.0;
|
|
}
|
|
double distance = radius + 1.0;
|
|
return new ArenaPoint(
|
|
center.x() + deltaX / length * distance,
|
|
y,
|
|
center.z() + deltaZ / length * distance
|
|
);
|
|
}
|
|
}
|