Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.minecraft.server;
- import java.util.ArrayList;
- public class Volume2D {
- private static ArrayList<Volume2D> volumes = new ArrayList<Volume2D>();
- private static int counter = 0;
- public double X;
- public double Y;
- public double Z;
- public static Volume2D create(double x, double y, double z) {
- return new Volume2D(x, y, z);
- }
- public static void reset() {
- counter = 0;
- }
- public static Volume2D get(double x, double y, double z) {
- if (counter >= volumes.size())
- volumes.add(create(0.0D, 0.0D, 0.0D));
- return (volumes.get(counter++)).reset(x, y, z);
- }
- private Volume2D(double x, double y, double z) {
- if (x == -0.0D) x = 0.0D;
- if (y == -0.0D) y = 0.0D;
- if (z == -0.0D) z = 0.0D;
- X = x; Y = y; Z = z;
- }
- private Volume2D reset(double z, double y, double x) {
- X = z; Y = y; Z = x;
- return this;
- }
- public Volume2D b() {
- double d1 = MathFuncs.sqrt(X * X + Y * Y + Z * Z);
- if (d1 < 0.0001D) return get(0.0D, 0.0D, 0.0D);
- return get(X / d1, Y / d1, Z / d1);
- }
- public Volume2D translate(double x, double y, double z) {
- return get(X + x, Y + y, Z + z);
- }
- public double a(Volume2D v) {
- double d1 = v.X - X;
- double d2 = v.Y - Y;
- double d3 = v.Z - Z;
- return MathFuncs.sqrt(d1 * d1 + d2 * d2 + d3 * d3);
- }
- public double b(Volume2D v) {
- double d1 = v.X - X;
- double d2 = v.Y - Y;
- double d3 = v.Z - Z;
- return d1 * d1 + d2 * d2 + d3 * d3;
- }
- public double d(double x, double y, double z) {
- double d1 = x - X;
- double d2 = y - Y;
- double d3 = z - Z;
- return d1 * d1 + d2 * d2 + d3 * d3;
- }
- public double c() {
- return MathFuncs.sqrt(X*X + Y*Y + Z*Z);
- }
- public Volume2D a(Volume2D v, double paramDouble) {
- double d1 = v.X - X;
- double d2 = v.Y - Y;
- double d3 = v.Z - Z;
- if (d1*d1 < 1.000000011686097E-007D) return null;
- double d4 = (paramDouble - X) / d1;
- if ((d4 < 0.0D) || (d4 > 1.0D)) return null;
- return get(X + d1*d4, Y + d2*d4, Z + d3*d4);
- }
- public Volume2D b(Volume2D v, double paramDouble) {
- double d1 = v.X - X;
- double d2 = v.Y - Y;
- double d3 = v.Z - Z;
- if (d2 * d2 < 1.000000011686097E-007D) return null;
- double d4 = (paramDouble - this.Y) / d2;
- if ((d4 < 0.0D) || (d4 > 1.0D)) return null;
- return get(this.X + d1 * d4, this.Y + d2 * d4, this.Z + d3 * d4);
- }
- public Volume2D c(Volume2D paramba, double paramDouble) {
- double d1 = paramba.X - this.X;
- double d2 = paramba.Y - this.Y;
- double d3 = paramba.Z - this.Z;
- if (d3 * d3 < 1.000000011686097E-007D) return null;
- double d4 = (paramDouble - this.Z) / d3;
- if ((d4 < 0.0D) || (d4 > 1.0D)) return null;
- return get(this.X + d1 * d4, this.Y + d2 * d4, this.Z + d3 * d4);
- }
- public String toString() {
- return String.format("(%f, %f, %f)", X, Y, Z);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement