classpublicPriority 3
Ellipsoid
com.hypixel.hytale.math.shape.Ellipsoid
implements Shape
6
Methods
6
Public Methods
3
Fields
3
Constructors
Constructors
public
Ellipsoid()public
Ellipsoid(double radius)public
Ellipsoid(double radiusX, double radiusY, double radiusZ)Methods
Public Methods (6)
public
boolean containsPosition(double x, double y, double z)@Override
public
void expand(double radius)@Override
public
boolean forEachBlock(double x, double y, double z, double epsilon, TriIntPredicate consumer)@Override
public
<T> boolean forEachBlock(double x, double y, double z, double epsilon, T t, TriIntObjPredicate<T> consumer)@Override
public
Box getBox(double x, double y, double z)@Nonnull@Override
public
String toString()@Nonnull@Override
Fields
Public Fields (3)
public
double radiusXpublic
double radiusYpublic
double radiusZInheritance
Parent
Current
Interface
Child
Use mouse wheel to zoom, drag to pan. Click nodes to navigate.
Related Classes
Source Code
package com.hypixel.hytale.math.shape;
import com.hypixel.hytale.function.predicate.TriIntObjPredicate;
import com.hypixel.hytale.function.predicate.TriIntPredicate;
import com.hypixel.hytale.math.block.BlockSphereUtil;
import com.hypixel.hytale.math.util.MathUtil;
import javax.annotation.Nonnull;
public class Ellipsoid implements Shape {
public double radiusX;
public double radiusY;
public double radiusZ;
public Ellipsoid() {
}
public Ellipsoid(double radius) {
this(radius, radius, radius);
}
public Ellipsoid(double radiusX, double radiusY, double radiusZ) {
this.radiusX = radiusX;
this.radiusY = radiusY;
this.radiusZ = radiusZ;
}
@Nonnull
public Ellipsoid assign(double radius) {
this.radiusX = radius;
this.radiusY = radius;
this.radiusZ = radius;
return this;
}
@Nonnull
@Override
public Box getBox(double x, double y, double z) {
Box boundingBox = new Box();
boundingBox.min.assign(x - this.radiusX, y - this.radiusY, z - this.radiusZ);
boundingBox.max.assign(x + this.radiusX, y + this.radiusY, z + this.radiusZ);
return boundingBox;
}
@Override
public boolean containsPosition(double x, double y, double z) {
double xRatio = x / this.radiusX;
double yRatio = y / this.radiusY;
double zRatio = z / this.radiusZ;
return xRatio * xRatio + yRatio * yRatio + zRatio * zRatio <= 1.0;
}
@Override
public void expand(double radius) {
this.radiusX += radius;
this.radiusY += radius;
this.radiusZ += radius;
}
@Override
public boolean forEachBlock(double x, double y, double z, double epsilon, @Nonnull TriIntPredicate consumer) {
return BlockSphereUtil.forEachBlock(
MathUtil.floor(x),
MathUtil.floor(y),
MathUtil.floor(z),
MathUtil.floor(this.radiusX + epsilon),
MathUtil.floor(this.radiusY + epsilon),
MathUtil.floor(this.radiusZ + epsilon),
null,
(_x, _y, _z, aVoid) -> consumer.test(_x, _y, _z)
);
}
@Override
public <T> boolean forEachBlock(double x, double y, double z, double epsilon, T t, @Nonnull TriIntObjPredicate<T> consumer) {
return BlockSphereUtil.forEachBlock(
MathUtil.floor(x),
MathUtil.floor(y),
MathUtil.floor(z),
MathUtil.floor(this.radiusX + epsilon),
MathUtil.floor(this.radiusY + epsilon),
MathUtil.floor(this.radiusZ + epsilon),
t,
consumer
);
}
@Nonnull
@Override
public String toString() {
return "Ellipsoid{radiusX=" + this.radiusX + ", radiusY=" + this.radiusY + ", radiusZ=" + this.radiusZ + "}";
}
}