classpublicPriority 3
Cylinder
com.hypixel.hytale.math.shape.Cylinder
implements Shape
9
Methods
9
Public Methods
3
Fields
2
Constructors
Constructors
public
Cylinder()public
Cylinder(double height, double radiusX, double radiusZ)Methods
Public Methods (9)
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
double getHeight()public
double getRadiusX()public
double getRadiusZ()public
String toString()@Nonnull@Override
Fields
Public Fields (3)
public
double heightpublic
double radiusXpublic
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.BlockCylinderUtil;
import com.hypixel.hytale.math.util.MathUtil;
import javax.annotation.Nonnull;
public class Cylinder implements Shape {
public double height;
public double radiusX;
public double radiusZ;
public Cylinder() {
}
public Cylinder(double height, double radiusX, double radiusZ) {
this.height = height;
this.radiusX = radiusX;
this.radiusZ = radiusZ;
}
public double getRadiusX() {
return this.radiusX;
}
public double getRadiusZ() {
return this.radiusZ;
}
public double getHeight() {
return this.height;
}
@Nonnull
public Cylinder assign(double radius) {
this.radiusX = radius;
this.radiusZ = radius;
return this;
}
@Override
public boolean containsPosition(double x, double y, double z) {
if (!(y > this.height) && !(y < 0.0)) {
double result = x * x / (this.radiusX * this.radiusX) + z * z / (this.radiusZ * this.radiusZ);
return result <= 1.0;
} else {
return false;
}
}
@Override
public boolean forEachBlock(double x, double y, double z, double epsilon, @Nonnull TriIntPredicate consumer) {
return BlockCylinderUtil.forEachBlock(
MathUtil.floor(x),
MathUtil.floor(y),
MathUtil.floor(z),
MathUtil.floor(this.radiusX + epsilon),
MathUtil.floor(this.height + 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 BlockCylinderUtil.forEachBlock(
MathUtil.floor(x),
MathUtil.floor(y),
MathUtil.floor(z),
MathUtil.floor(this.radiusX + epsilon),
MathUtil.floor(this.height + epsilon),
MathUtil.floor(this.radiusZ + epsilon),
t,
consumer
);
}
@Override
public void expand(double radius) {
this.radiusX += radius;
this.radiusZ += radius;
}
@Nonnull
@Override
public Box getBox(double x, double y, double z) {
double biggestRadius = Math.max(this.radiusX, this.radiusZ);
Box boundingBox = new Box();
boundingBox.min.assign(x - biggestRadius, y, z - biggestRadius);
boundingBox.max.assign(x + biggestRadius, y + this.height, z + biggestRadius);
return boundingBox;
}
@Nonnull
protected Cylinder clone() {
return new Cylinder(this.height, this.radiusX, this.radiusZ);
}
@Nonnull
@Override
public String toString() {
return "Cylinder{height=" + this.height + ", radiusX=" + this.radiusX + ", radiusZ=" + this.radiusZ + "}";
}
}