MortonCode class

Пакет: com.hypixel.hytale.component.spatial

Файл: com/hypixel/hytale/component/spatial/MortonCode.java

Поля (14)

МодификаторыТипИмя
final int BITS_PER_AXIS
var0
var0
var0
var0
var0
double var18
var2
double var20
double var22
long var24
long var26
long var28
var4

Методы (4)

МодификаторыВозвратСигнатура
static long encodelong encode(double var0, double var2, double var4, double var6, double var8, double var10, double var12, double var14, double var16)
static long expandBitslong expandBits(long var0)
static long interleaveBitslong interleaveBits(long var0, long var2, long var4)
abstract return interleaveBitsreturn interleaveBits(var24, var26, var28)

Исходный код

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

class="kw">public class MortonCode {
   class="kw">private class="kw">static class="kw">final int BITS_PER_AXIS = 21;
   class="kw">private class="kw">static class="kw">final long MAX_COORD = 2097151L;

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

   class="kw">public class="kw">static long encode(double var0, double var2, double var4, double var6, double var8, double var10, double var12, double var14, double var16) {
      double var18 = (var0 - var6) / (var12 - var6);
      double var20 = (var2 - var8) / (var14 - var8);
      double var22 = (var4 - var10) / (var16 - var10);
      long var24 = Math.min(Math.max((long)(var18 * 2097151.0), 0L), 2097151L);
      long var26 = Math.min(Math.max((long)(var20 * 2097151.0), 0L), 2097151L);
      long var28 = Math.min(Math.max((long)(var22 * 2097151.0), 0L), 2097151L);
      class="kw">return interleaveBits(var24, var26, var28);
   }

   class="kw">private class="kw">static long interleaveBits(long var0, long var2, long var4) {
      var0 = expandBits(var0);
      var2 = expandBits(var2);
      var4 = expandBits(var4);
      class="kw">return var0 | var2 << 1 | var4 << 2;
   }

   class="kw">private class="kw">static long expandBits(long var0) {
      var0 &= 2097151L;
      var0 = (var0 | var0 << 32) & 8725724278095871L;
      var0 = (var0 | var0 << 16) & 8725728556220671L;
      var0 = (var0 | var0 << 8) & 1157144660301377551L;
      var0 = (var0 | var0 << 4) & 1207822528635744451L;
      class="kw">return (var0 | var0 << 2) & 1317624576693539401L;
   }
}