VectorUtil class

Пакет: com.hypixel.hytale.builtin.hytalegenerator

Файл: com/hypixel/hytale/builtin/hytalegenerator/VectorUtil.java

Поля (81)

МодификаторыТипИмя
private int index
double var10
double var10
double var10
Vector3d var10
Vector3d var11
Vector3d var11
Vector3d var11
double var11
double var12
double var13
Vector3d var14
Vector3d var15
Vector3d var16
double var17
Vector3d var19
double var2
Vector3d var2
double var2
ArrayList var2
double var20
double var21
double var22
double var24
double var26
Vector3d var28
var28
var28
var28
Vector3d var29
var29
var29
var29
Vector3d var3
Vector3d var3
double var3
Vector3d var3
double var30
var30
var30
double var32
double var33
var33
var33
double var4
Vector3d var4
Vector3d var4
Vector3d var4
double var4
Vector3d var4
double var4
Vector2i var4
double var5
double var5
double var5
double var5
double var5
double var6
double var6
double var6
Vector3d var7
Vector3d var7
boolean[] var7
Vector3d var7
double var7
ArrayList var7
Vector3d var8
double var8
Vector3d var8
double var8
Vector3d var8
Vector3d var8
double var8
double var9
var9
double var9
var9
Vector3d var9
double var9
var9
double var9

Методы (62)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("negative shift")
public Retrieverpublic Retriever(int var1)
static double angledouble angle(@Nonnull Vector3d var0, @Nonnull Vector3d var1)
static boolean areasOverlapboolean areasOverlap(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2, @Nonnull Vector3d var3)
static void assignFlooredvoid assignFloored(@Nonnull Vector3i var0, @Nonnull Vector3d var1)
static void bitShiftLeftvoid bitShiftLeft(int var0, @Nonnull Vector3i var1)
static void bitShiftRightvoid bitShiftRight(int var0, @Nonnull Vector3i var1)
static double determinantdouble determinant(@Nonnull Vector3dc var0, @Nonnull Vector3dc var1)
static double determinantdouble determinant(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2)
static double distanceToLine3ddouble distanceToLine3d(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2, @Nonnull Vector3d var3, @Nonnull Vector3d var4, @Nonnull Vector3d var5, @Nonnull Vector3d var6, @Nonnull Vector3d var7)
static double distanceToSegment3ddouble distanceToSegment3d(@Nonnull Vector3dc var0, @Nonnull Vector3dc var1, @Nonnull Vector3dc var2)
for for(Pair var9 : var2)
abstract for for(int var3 = 0; var3 < var1.size()
public int frompublic int from(@Nonnull Vector3i var1)
public int frompublic int from(@Nonnull Vector2i var1)
public double frompublic double from(@Nonnull Vector3d var1)
public double frompublic double from(@Nonnull Vector2d var1)
public int getIndexpublic int getIndex()
if if(var2 >= var4 && var2 >= var6)
if if(var17 == 0.0)
if if(var4)
if if(var32 <= 0.0 && var21 <= 0.0)
if if(var32 >= var10 && var21 >= var10)
if if(var4)
if if(var24 < 0.0)
if if(var26 < 0.0)
if if(var24 < 0.0 || var24 > var10)
if if(var30 < 0.0)
if if(var26 < 0.0 || var26 > var12)
if if(var33 < 0.0)
if if(var0 < 0)
if if(var0 < 0)
static boolean isAnyGreaterboolean isAnyGreater(@Nonnull Vector3d var0, @Nonnull Vector3d var1)
static boolean isAnyGreaterboolean isAnyGreater(@Nonnull Vector3i var0, @Nonnull Vector3i var1)
static boolean isAnyGreaterboolean isAnyGreater(@Nonnull Vector2d var0, @Nonnull Vector2d var1)
static boolean isAnyGreaterboolean isAnyGreater(@Nonnull Vector2i var0, @Nonnull Vector2i var1)
static boolean isAnySmallerboolean isAnySmaller(@Nonnull Vector3d var0, @Nonnull Vector3d var1)
static boolean isAnySmallerboolean isAnySmaller(@Nonnull Vector3i var0, @Nonnull Vector3i var1)
static boolean isAnySmallerboolean isAnySmaller(@Nonnull Vector2d var0, @Nonnull Vector2d var1)
static boolean isAnySmallerboolean isAnySmaller(@Nonnull Vector2i var0, @Nonnull Vector2i var1)
static boolean isInsideboolean isInside(@Nonnull Vector3i var0, @Nonnull Vector3i var1, @Nonnull Vector3i var2)
static boolean isInsideboolean isInside(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2)
static boolean isInsideboolean isInside(@Nonnull Vector2d var0, @Nonnull Vector2d var1, @Nonnull Vector2d var2)
static boolean isSmallerboolean isSmaller(@Nonnull Vector3d var0, @Nonnull Vector3d var1)
static boolean isSmallerboolean isSmaller(@Nonnull Vector2d var0, @Nonnull Vector2d var1)
static boolean isSmallerboolean isSmaller(@Nonnull Vector2i var0, @Nonnull Vector2i var1)
static boolean isZeroboolean isZero(@Nonnull Vector3dc var0)
static boolean isZeroboolean isZero(@Nonnull Vector3ic var0)
static void nearestPointOnLine3dvoid nearestPointOnLine3d(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2, @Nonnull Vector3d var3, @Nonnull Vector3d var4, @Nonnull Vector3d var5, @Nonnull Vector3d var6, @Nonnull Vector3d var7)
static void nextDownvoid nextDown(@Nonnull Vector3d var0)
public static VectorUtil.Retriever ofIndexpublic static VectorUtil.Retriever ofIndex(int var0)
static void orthogonalVectorvoid orthogonalVector(@Nonnull Vector3d var0, @Nonnull Vector3d var1)
static void rotateAroundAxisvoid rotateAroundAxis(@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2)
static void rotateVectorByAxisAnglevoid rotateVectorByAxisAngle(@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2)
abstract int runint run(int var1, int var2, @Nonnull VectorUtil.Retriever var3)
abstract int runint run(@Nonnull VectorUtil.Retriever var1)
abstract int runint run(int var1, @Nonnull VectorUtil.Retriever var2)
static boolean[] shortestSegmentBetweenTwoSegmentsboolean[] shortestSegmentBetweenTwoSegments(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2, @Nonnull Vector3d var3, boolean var4, @Nonnull Vector3d var5, @Nonnull Vector3d var6)
return switchreturn switch(this.index)
return switchreturn switch(this.index)
return switchreturn switch(this.index)
return switchreturn switch(this.index)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator;

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.math.Calculator;
class="kw">import it.unimi.dsi.fastutil.Pair;
class="kw">import it.unimi.dsi.fastutil.doubles.DoubleObjectPair;
class="kw">import java.math.BigDecimal;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Comparator;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector2d;
class="kw">import org.joml.Vector2i;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3dc;
class="kw">import org.joml.Vector3i;
class="kw">import org.joml.Vector3ic;

class="kw">public class VectorUtil {
   class="kw">public VectorUtil() {
   }

   @Nonnull
   class="kw">public class="kw">static String toString(@Nonnull Vector3dc var0) {
      class="kw">return "{x="
         + BigDecimal.valueOf(var0.x()).toPlainString()
         + ", y="
         + BigDecimal.valueOf(var0.y()).toPlainString()
         + ", z="
         + BigDecimal.valueOf(var0.z()).toPlainString()
         + "}";
   }

   @Nonnull
   class="kw">public class="kw">static String toString(@Nonnull Vector3ic var0) {
      class="kw">return "{x=" + var0.x() + ", y=" + var0.y() + ", z=" + var0.z() + "}";
   }

   class="kw">public class="kw">static void nextDown(@Nonnull Vector3d var0) {
      var0.x = Math.nextDown(var0.x);
      var0.y = Math.nextDown(var0.y);
      var0.z = Math.nextDown(var0.z);
   }

   class="kw">public class="kw">static void orthogonalVector(@Nonnull Vector3d var0, @Nonnull Vector3d var1) {
      if (isZero(var0)) {
         var1.set(0.0);
      } else {
         double var2 = Math.abs(var0.x);
         double var4 = Math.abs(var0.y);
         double var6 = Math.abs(var0.z);
         if (var2 >= var4 && var2 >= var6) {
            var1.set(var0.y, -var0.x, 0.0);
         } else if (var4 >= var2 && var4 >= var6) {
            var1.set(0.0, var0.z, -var0.y);
         } else {
            var1.set(-var0.z, 0.0, var0.x);
         }
      }
   }

   class="kw">public class="kw">static boolean isZero(@Nonnull Vector3dc var0) {
      class="kw">return var0.x() == 0.0 && var0.y() == 0.0 && var0.z() == 0.0;
   }

   class="kw">public class="kw">static boolean isZero(@Nonnull Vector3ic var0) {
      class="kw">return var0.x() == 0 && var0.y() == 0 && var0.z() == 0;
   }

   class="kw">public class="kw">static void assignFloored(@Nonnull Vector3i var0, @Nonnull Vector3d var1) {
      var0.x = (int)Math.floor(var1.x);
      var0.y = (int)Math.floor(var1.y);
      var0.z = (int)Math.floor(var1.z);
   }

   class="kw">public class="kw">static boolean areasOverlap(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2, @Nonnull Vector3d var3) {
      class="kw">return isAnyGreater(var1, var2) && isAnySmaller(var0, var3);
   }

   class="kw">public class="kw">static double distanceToSegment3d(@Nonnull Vector3dc var0, @Nonnull Vector3dc var1, @Nonnull Vector3dc var2) {
      Vector3d var3 = new Vector3d(var2).fma(-1.0, var1);
      Vector3d var4 = new Vector3d(var0).fma(-1.0, var1);
      double var5 = var3.length();
      Vector3d var7 = new Vector3d(var3).normalize(1.0);
      Vector3d var8 = new Vector3d(var4).mul(1.0 / var5);
      double var9 = var7.dot(var8);
      var9 = Calculator.clamp(0.0, var9, 1.0);
      Vector3d var11 = new Vector3d(var3).mul(var9);
      class="kw">return var11.distance(var4);
   }

   class="kw">public class="kw">static double distanceToLine3d(
      @Nonnull Vector3d var0,
      @Nonnull Vector3d var1,
      @Nonnull Vector3d var2,
      @Nonnull Vector3d var3,
      @Nonnull Vector3d var4,
      @Nonnull Vector3d var5,
      @Nonnull Vector3d var6,
      @Nonnull Vector3d var7
   ) {
      var3.set(var2).sub(var1);
      var4.set(var0).sub(var1);
      double var8 = var3.length();
      var5.set(var3).normalize(1.0);
      var6.set(var4).mul(1.0 / var8);
      double var10 = var5.dot(var6);
      var7.set(var3).mul(var10);
      class="kw">return var7.distance(var4);
   }

   @Nonnull
   class="kw">public class="kw">static Vector3d nearestPointOnSegment3d(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2) {
      Vector3d var3 = new Vector3d(var2).fma(-1.0, var1);
      Vector3d var4 = new Vector3d(var0).fma(-1.0, var1);
      double var5 = var3.length();
      Vector3d var7 = new Vector3d(var3).normalize(1.0);
      Vector3d var8 = new Vector3d(var4).mul(1.0 / var5);
      double var9 = var7.dot(var8);
      var9 = Calculator.clamp(0.0, var9, 1.0);
      Vector3d var11 = new Vector3d(var3).mul(var9);
      class="kw">return var11.add(var1);
   }

   class="kw">public class="kw">static void nearestPointOnLine3d(
      @Nonnull Vector3d var0,
      @Nonnull Vector3d var1,
      @Nonnull Vector3d var2,
      @Nonnull Vector3d var3,
      @Nonnull Vector3d var4,
      @Nonnull Vector3d var5,
      @Nonnull Vector3d var6,
      @Nonnull Vector3d var7
   ) {
      var4.set(var2).sub(var1);
      var5.set(var0).sub(var1);
      double var8 = var4.length();
      var6.set(var4).normalize(1.0);
      var7.set(var5).mul(1.0 / var8);
      double var10 = var6.dot(var7);
      var3.set(var4).mul(var10);
      var3.add(var1);
   }

   class="kw">public class="kw">static boolean[] shortestSegmentBetweenTwoSegments(
      @Nonnull Vector3d var0,
      @Nonnull Vector3d var1,
      @Nonnull Vector3d var2,
      @Nonnull Vector3d var3,
      boolean var4,
      @Nonnull Vector3d var5,
      @Nonnull Vector3d var6
   ) {
      boolean[] var7 = new boolean[2];
      Vector3d var8 = new Vector3d(var1).fma(-1.0, var0);
      Vector3d var9 = new Vector3d(var3).fma(-1.0, var2);
      double var10 = var8.length();
      double var12 = var9.length();
      Vector3d var14 = new Vector3d(var8).mul(1.0 / var10);
      Vector3d var15 = new Vector3d(var9).mul(1.0 / var12);
      Vector3d var16 = var14.cross(var15, new Vector3d());
      double var17 = Math.pow(var16.length(), 2.0);
      if (var17 == 0.0) {
         var7[0] = true;
         double var32 = var14.dot(new Vector3d(var2).fma(-1.0, var0));
         if (var4) {
            double var21 = var14.dot(new Vector3d(var3).fma(-1.0, var0));
            if (var32 <= 0.0 && var21 <= 0.0) {
               if (Math.abs(var32) < Math.abs(var21)) {
                  var5.set(var0);
                  var6.set(var2);
                  var7[1] = true;
                  class="kw">return var7;
               }

               var5.set(var0);
               var6.set(var3);
               var7[1] = true;
               class="kw">return var7;
            }

            if (var32 >= var10 && var21 >= var10) {
               if (Math.abs(var32) < Math.abs(var21)) {
                  var5.set(var1);
                  var6.set(var2);
                  var7[1] = true;
                  class="kw">return var7;
               }

               var5.set(var1);
               var6.set(var3);
               var7[1] = true;
               class="kw">return var7;
            }
         }

         class="kw">return var7;
      } else {
         Vector3d var19 = new Vector3d(var2).fma(-1.0, var0);
         double var20 = determinant(var19, var15, var16);
         double var22 = determinant(var19, var14, var16);
         double var24 = var20 / var17;
         double var26 = var22 / var17;
         Vector3d var28 = new Vector3d(var14).mul(var24).add(var0);
         Vector3d var29 = new Vector3d(var15).mul(var26).add(var2);
         if (var4) {
            if (var24 < 0.0) {
               var28 = new Vector3d(var0);
            } else if (var24 > var10) {
               var28 = new Vector3d(var1);
            }

            if (var26 < 0.0) {
               var29 = new Vector3d(var2);
            } else if (var26 > var12) {
               var29 = new Vector3d(var3);
            }

            if (var24 < 0.0 || var24 > var10) {
               double var30 = var15.dot(new Vector3d(var28).fma(-1.0, var2));
               if (var30 < 0.0) {
                  var30 = 0.0;
               } else if (var30 > var12) {
                  var30 = var12;
               }

               var29 = new Vector3d(var2).add(new Vector3d(var15).mul(var30));
            }

            if (var26 < 0.0 || var26 > var12) {
               double var33 = var14.dot(new Vector3d(var29).fma(-1.0, var0));
               if (var33 < 0.0) {
                  var33 = 0.0;
               } else if (var33 > var10) {
                  var33 = var10;
               }

               var28 = new Vector3d(var0).add(new Vector3d(var14).mul(var33));
            }
         }

         var5.set(var28);
         var6.set(var29);
         var7[1] = true;
         class="kw">return var7;
      }
   }

   class="kw">public class="kw">static double determinant(@Nonnull Vector3dc var0, @Nonnull Vector3dc var1) {
      Vector3d var2 = var0.cross(var1, new Vector3d());
      class="kw">return var2.length();
   }

   class="kw">public class="kw">static double determinant(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2) {
      double var3 = var0.x * var1.y * var2.z + var1.x * var2.y * var0.z + var2.x * var0.y * var1.z;
      class="kw">return var3 - (var0.z * var1.y * var2.x + var1.z * var2.y * var0.x + var2.z * var0.y * var1.x);
   }

   @Nonnull
   class="kw">public class="kw">static DoubleObjectPair<Vector3d> distanceAndNearestPointOnSegment3d(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2) {
      Vector3d var3 = new Vector3d(var2).fma(-1.0, var1);
      Vector3d var4 = new Vector3d(var0).fma(-1.0, var1);
      double var5 = var3.length();
      Vector3d var7 = new Vector3d(var3).normalize(1.0);
      Vector3d var8 = new Vector3d(var4).mul(1.0 / var5);
      double var9 = var7.dot(var8);
      var9 = Calculator.clamp(0.0, var9, 1.0);
      Vector3d var11 = new Vector3d(var3).mul(var9);
      class="kw">return DoubleObjectPair.of(var11.distance(var4), var11.add(var1));
   }

   class="kw">public class="kw">static double angle(@Nonnull Vector3d var0, @Nonnull Vector3d var1) {
      double var2 = var0.x * var1.x + var0.y * var1.y + var0.z * var1.z;
      double var4 = Math.sqrt(var0.x * var0.x + var0.y * var0.y + var0.z * var0.z);
      double var6 = Math.sqrt(var1.x * var1.x + var1.y * var1.y + var1.z * var1.z);
      class="kw">return Math.acos(var2 / (var4 * var6));
   }

   class="kw">public class="kw">static void rotateAroundAxis(@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2) {
      Vector3d var4 = new Vector3d(var1);
      var4.normalize();
      double var5 = var4.x * (var4.x * var0.x + var4.y * var0.y + var4.z * var0.z) * (1.0 - Math.cos(var2))
         + var0.x * Math.cos(var2)
         + (-var4.z * var0.y + var4.y * var0.z) * Math.sin(var2);
      double var7 = var4.y * (var4.x * var0.x + var4.y * var0.y + var4.z * var0.z) * (1.0 - Math.cos(var2))
         + var0.y * Math.cos(var2)
         + (var4.z * var0.x - var4.x * var0.z) * Math.sin(var2);
      double var9 = var4.z * (var4.x * var0.x + var4.y * var0.y + var4.z * var0.z) * (1.0 - Math.cos(var2))
         + var0.z * Math.cos(var2)
         + (-var4.y * var0.x + var4.x * var0.y) * Math.sin(var2);
      var0.x = var5;
      var0.y = var7;
      var0.z = var9;
   }

   class="kw">public class="kw">static void rotateVectorByAxisAngle(@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2) {
      Vector3d var10 = var1.cross(var0, new Vector3d());
      double var11 = Math.cos(var2);
      double var13 = Math.sin(var2);
      double var4 = var0.x * var11 + var10.x * var13 + var1.x * var1.dot(var0) * (1.0 - var11);
      double var6 = var0.y * var11 + var10.y * var13 + var1.y * var1.dot(var0) * (1.0 - var11);
      double var8 = var0.z * var11 + var10.z * var13 + var1.z * var1.dot(var0) * (1.0 - var11);
      var0.x = var4;
      var0.y = var6;
      var0.z = var8;
   }

   class="kw">public class="kw">static boolean isInside(@Nonnull Vector3i var0, @Nonnull Vector3i var1, @Nonnull Vector3i var2) {
      class="kw">return var0.x >= var1.x && var0.x < var2.x && var0.y >= var1.y && var0.y < var2.y && var0.z >= var1.z && var0.z < var2.z;
   }

   class="kw">public class="kw">static boolean isInside(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2) {
      class="kw">return !isAnySmaller(var0, var1) && isSmaller(var0, var2);
   }

   class="kw">public class="kw">static boolean isAnySmaller(@Nonnull Vector3d var0, @Nonnull Vector3d var1) {
      class="kw">return var0.x < var1.x || var0.y < var1.y || var0.z < var1.z;
   }

   class="kw">public class="kw">static boolean isSmaller(@Nonnull Vector3d var0, @Nonnull Vector3d var1) {
      class="kw">return var0.x < var1.x && var0.y < var1.y && var0.z < var1.z;
   }

   class="kw">public class="kw">static boolean isAnyGreater(@Nonnull Vector3d var0, @Nonnull Vector3d var1) {
      class="kw">return var0.x > var1.x || var0.y > var1.y || var0.z > var1.z;
   }

   class="kw">public class="kw">static boolean isAnySmaller(@Nonnull Vector3i var0, @Nonnull Vector3i var1) {
      class="kw">return var0.x < var1.x || var0.y < var1.y || var0.z < var1.z;
   }

   class="kw">public class="kw">static boolean isAnyGreater(@Nonnull Vector3i var0, @Nonnull Vector3i var1) {
      class="kw">return var0.x > var1.x || var0.y > var1.y || var0.z > var1.z;
   }

   class="kw">public class="kw">static boolean isInside(@Nonnull Vector2d var0, @Nonnull Vector2d var1, @Nonnull Vector2d var2) {
      class="kw">return !isAnySmaller(var0, var1) && isSmaller(var0, var2);
   }

   class="kw">public class="kw">static boolean isAnySmaller(@Nonnull Vector2d var0, @Nonnull Vector2d var1) {
      class="kw">return var0.x < var1.x || var0.y < var1.y;
   }

   class="kw">public class="kw">static boolean isSmaller(@Nonnull Vector2d var0, @Nonnull Vector2d var1) {
      class="kw">return var0.x < var1.x && var0.y < var1.y;
   }

   class="kw">public class="kw">static boolean isAnyGreater(@Nonnull Vector2d var0, @Nonnull Vector2d var1) {
      class="kw">return var0.x > var1.x || var0.y > var1.y;
   }

   class="kw">public class="kw">static boolean isAnySmaller(@Nonnull Vector2i var0, @Nonnull Vector2i var1) {
      class="kw">return var0.x < var1.x || var0.y < var1.y;
   }

   class="kw">public class="kw">static boolean isSmaller(@Nonnull Vector2i var0, @Nonnull Vector2i var1) {
      class="kw">return var0.x < var1.x && var0.y < var1.y;
   }

   class="kw">public class="kw">static boolean isAnyGreater(@Nonnull Vector2i var0, @Nonnull Vector2i var1) {
      class="kw">return var0.x > var1.x || var0.y > var1.y;
   }

   @Nonnull
   class="kw">public class="kw">static Vector3i fromOperation(@Nonnull Vector3i var0, @Nonnull Vector3i var1, @Nonnull VectorUtil.BiOperation3i var2) {
      class="kw">return new Vector3i(
         var2.run(var0.x, var1.x, VectorUtil.Retriever.ofIndex(0)),
         var2.run(var0.y, var1.y, VectorUtil.Retriever.ofIndex(1)),
         var2.run(var0.z, var1.z, VectorUtil.Retriever.ofIndex(2))
      );
   }

   @Nonnull
   class="kw">public class="kw">static Vector3i fromOperation(@Nonnull VectorUtil.NakedOperation3i var0) {
      class="kw">return new Vector3i(var0.run(VectorUtil.Retriever.ofIndex(0)), var0.run(VectorUtil.Retriever.ofIndex(1)), var0.run(VectorUtil.Retriever.ofIndex(2)));
   }

   class="kw">public class="kw">static void bitShiftRight(int var0, @Nonnull Vector3i var1) {
      if (var0 < 0) {
         throw new IllegalArgumentException("negative shift");
      }

      var1.x >>= var0;
      var1.y >>= var0;
      var1.z >>= var0;
   }

   class="kw">public class="kw">static void bitShiftLeft(int var0, @Nonnull Vector3i var1) {
      if (var0 < 0) {
         throw new IllegalArgumentException("negative shift");
      }

      var1.x <<= var0;
      var1.y <<= var0;
      var1.z <<= var0;
   }

   @Nonnull
   class="kw">public class="kw">static List<Vector2i> orderByDistanceFrom(@Nonnull Vector2i var0, @Nonnull List<Vector2i> var1) {
      ArrayList var2 = new ArrayList<>(var1.size());

      for (int var3 = 0; var3 < var1.size(); var3++) {
         Vector2i var4 = var1.get(var3);
         double var5 = Calculator.distance(var4.x, var4.y, var0.x, var0.y);
         var2.add(Pair.of(var5, var4));
      }

      var2.sort(Comparator.comparingDouble(Pair::first));
      ArrayList var7 = new ArrayList<>(var2.size());

      for (Pair var9 : var2) {
         var7.add((Vector2i)var9.second());
      }

      class="kw">return var7;
   }

   @FunctionalInterface
   class="kw">public class="kw">interface BiOperation3i {
      int run(int var1, int var2, @Nonnull VectorUtil.Retriever var3);
   }

   @FunctionalInterface
   class="kw">public class="kw">interface NakedOperation3i {
      int run(@Nonnull VectorUtil.Retriever var1);
   }

   @FunctionalInterface
   class="kw">public class="kw">interface Operation3i {
      int run(int var1, @Nonnull VectorUtil.Retriever var2);
   }

   class="kw">public class="kw">static class Retriever {
      class="kw">private int index;

      class="kw">public Retriever(int var1) {
         this.index = var1;
      }

      @Nonnull
      class="kw">public class="kw">static VectorUtil.Retriever ofIndex(int var0) {
         class="kw">return new VectorUtil.Retriever(var0);
      }

      class="kw">public int getIndex() {
         class="kw">return this.index;
      }

      class="kw">public int from(@Nonnull Vector3i var1) {
         class="kw">return class="kw">switch (this.index) {
            case 0 -> var1.x;
            case 1 -> var1.y;
            case 2 -> var1.z;
            class="kw">default -> throw new IllegalArgumentException();
         };
      }

      class="kw">public int from(@Nonnull Vector2i var1) {
         class="kw">return class="kw">switch (this.index) {
            case 0 -> var1.x;
            case 1 -> var1.y;
            class="kw">default -> throw new IllegalArgumentException();
         };
      }

      class="kw">public double from(@Nonnull Vector3d var1) {
         class="kw">return class="kw">switch (this.index) {
            case 0 -> var1.x;
            case 1 -> var1.y;
            case 2 -> var1.z;
            class="kw">default -> throw new IllegalArgumentException();
         };
      }

      class="kw">public double from(@Nonnull Vector2d var1) {
         class="kw">return class="kw">switch (this.index) {
            case 0 -> var1.x;
            case 1 -> var1.y;
            class="kw">default -> throw new IllegalArgumentException();
         };
      }
   }
}