SimplexNoiseField class

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

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

extends: NoiseField

Поля (38)

МодификаторыТипИмя
private int numberOfOctaves
private double octaveAmplitudeMultiplier
private double octaveFrequencyMultiplier
private double scaleW
private double scaleX
private double scaleY
private double scaleZ
final long seed
private long seed
SimplexNoiseField var1
double var11
double var11
var11
double var11
var11
double var13
double var13
var13
double var13
double var15
var15
double var16
double var17
double var3
var3
double var5
var5
double var5
double var7
var7
double var7
var7
Random var8
double var9
var9
double var9
var9
double var9

Методы (19)

МодификаторыВозвратСигнатура
private Builderprivate Builder()
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("octaves can't be smaller than 1")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("invalid number")
public SimplexNoiseField buildpublic SimplexNoiseField build()
for for(int var9 = 0; var9 < var7; var9++)
for for(int var15 = 0; var15 < var7; var15++)
for for(int var19 = 0; var19 < this.numberOfOctaves; var19++)
for for(int var15 = 0; var15 < this.numberOfOctaves; var15++)
for for(int var11 = 0; var11 < this.numberOfOctaves; var11++)
for for(int var7 = 0; var7 < this.numberOfOctaves; var7++)
public long getSeedlong getSeed()
if if(var7 <= 0)
if if(var1 <= 0)
public SimplexNoiseField.Builder withAmplitudeMultiplierpublic SimplexNoiseField.Builder withAmplitudeMultiplier(double var1)
public SimplexNoiseField.Builder withFrequencyMultiplierpublic SimplexNoiseField.Builder withFrequencyMultiplier(double var1)
public SimplexNoiseField.Builder withNumberOfOctavespublic SimplexNoiseField.Builder withNumberOfOctaves(int var1)
public SimplexNoiseField.Builder withScalepublic SimplexNoiseField.Builder withScale(double var1)
public SimplexNoiseField.Builder withScalepublic SimplexNoiseField.Builder withScale(double var1, double var3, double var5, double var7)
public SimplexNoiseField.Builder withSeedpublic SimplexNoiseField.Builder withSeed(long var1)

Исходный код

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

class="kw">import java.util.Random;
class="kw">import javax.annotation.Nonnull;

class="kw">public class SimplexNoiseField class="kw">extends NoiseField {
   class="kw">private class="kw">final long seed;
   @Nonnull
   class="kw">private class="kw">final double[] offsetX;
   @Nonnull
   class="kw">private class="kw">final double[] offsetY;
   @Nonnull
   class="kw">private class="kw">final double[] offsetZ;
   @Nonnull
   class="kw">private class="kw">final double[] offsetW;
   class="kw">private class="kw">final int numberOfOctaves;
   @Nonnull
   class="kw">private class="kw">final double[] octaveFrequency;
   @Nonnull
   class="kw">private class="kw">final double[] octaveAmplitude;
   class="kw">private class="kw">final double normalizer;

   class="kw">public SimplexNoiseField(long var1, double var3, double var5, int var7) {
      if (var7 <= 0) {
         throw new IllegalArgumentException("octaves can't be smaller than 1");
      }

      this.seed = var1;
      this.numberOfOctaves = var7;
      Random var8 = new Random(var1);
      this.offsetX = new double[var7];
      this.offsetY = new double[var7];
      this.offsetZ = new double[var7];
      this.offsetW = new double[var7];

      for (int var9 = 0; var9 < var7; var9++) {
         this.offsetX[var9] = var8.nextDouble() * 256.0;
         this.offsetY[var9] = var8.nextDouble() * 256.0;
         this.offsetZ[var9] = var8.nextDouble() * 256.0;
         this.offsetW[var9] = var8.nextDouble() * 256.0;
      }

      this.octaveAmplitude = new double[var7];
      this.octaveFrequency = new double[var7];
      double var16 = 1.0;
      double var11 = 1.0;
      double var13 = 0.0;

      for (int var15 = 0; var15 < var7; var15++) {
         this.octaveAmplitude[var15] = var11;
         this.octaveFrequency[var15] = var16;
         var13 += var11;
         var11 *= var3;
         var16 *= var5;
      }

      this.normalizer = 1.0 / var13;
   }

   @Nonnull
   class="kw">public class="kw">static SimplexNoiseField.Builder builder() {
      class="kw">return new SimplexNoiseField.Builder();
   }

   @Override
   class="kw">public double valueAt(double var1, double var3, double var5, double var7) {
      var1 /= this.scaleX;
      var3 /= this.scaleY;
      var5 /= this.scaleZ;
      var7 /= this.scaleW;
      double var9 = 0.0;
      double var11 = 0.0;
      double var13 = 0.0;
      double var15 = 0.0;
      double var17 = 0.0;

      for (int var19 = 0; var19 < this.numberOfOctaves; var19++) {
         var9 = var1 + this.offsetX[var19];
         var11 = var3 + this.offsetY[var19];
         var13 = var5 + this.offsetZ[var19];
         var15 = var7 + this.offsetW[var19];
         var17 += Simplex.noise(
               var9 * this.octaveFrequency[var19],
               var11 * this.octaveFrequency[var19],
               var13 * this.octaveFrequency[var19],
               var15 * this.octaveFrequency[var19]
            )
            * this.octaveAmplitude[var19];
      }

      class="kw">return var17 * this.normalizer;
   }

   @Override
   class="kw">public double valueAt(double var1, double var3, double var5) {
      var1 /= this.scaleX;
      var3 /= this.scaleY;
      var5 /= this.scaleZ;
      double var7 = 0.0;
      double var9 = 0.0;
      double var11 = 0.0;
      double var13 = 0.0;

      for (int var15 = 0; var15 < this.numberOfOctaves; var15++) {
         var7 = var1 + this.offsetX[var15];
         var9 = var3 + this.offsetY[var15];
         var11 = var5 + this.offsetZ[var15];
         var13 += HyperSimplex.noise(var7 * this.octaveFrequency[var15], var9 * this.octaveFrequency[var15], var11 * this.octaveFrequency[var15])
            * this.octaveAmplitude[var15];
      }

      class="kw">return var13 * this.normalizer;
   }

   @Override
   class="kw">public double valueAt(double var1, double var3) {
      var1 /= this.scaleX;
      var3 /= this.scaleY;
      double var5 = 0.0;
      double var7 = 0.0;
      double var9 = 0.0;

      for (int var11 = 0; var11 < this.numberOfOctaves; var11++) {
         var5 = var1 + this.offsetX[var11];
         var7 = var3 + this.offsetY[var11];
         var9 += HyperSimplex.noise(var5 * this.octaveFrequency[var11], var7 * this.octaveFrequency[var11]) * this.octaveAmplitude[var11];
      }

      class="kw">return var9 * this.normalizer;
   }

   @Override
   class="kw">public double valueAt(double var1) {
      var1 /= this.scaleX;
      double var3 = 0.0;
      double var5 = 0.0;

      for (int var7 = 0; var7 < this.numberOfOctaves; var7++) {
         var3 = var1 + this.offsetX[var7];
         var5 += HyperSimplex.noise(var3 * this.octaveFrequency[var7], 0.0) * this.octaveAmplitude[var7];
      }

      class="kw">return var5 * this.normalizer;
   }

   class="kw">public long getSeed() {
      class="kw">return this.seed;
   }

   class="kw">public class="kw">static class Builder {
      class="kw">private long seed = 1L;
      class="kw">private double octaveAmplitudeMultiplier = 0.5;
      class="kw">private double octaveFrequencyMultiplier = 2.0;
      class="kw">private int numberOfOctaves = 4;
      class="kw">private double scaleX;
      class="kw">private double scaleY;
      class="kw">private double scaleZ;
      class="kw">private double scaleW;

      class="kw">private Builder() {
      }

      @Nonnull
      class="kw">public SimplexNoiseField build() {
         SimplexNoiseField var1 = new SimplexNoiseField(this.seed, this.octaveAmplitudeMultiplier, this.octaveFrequencyMultiplier, this.numberOfOctaves);
         var1.setScale(this.scaleX, this.scaleY, this.scaleZ, this.scaleW);
         class="kw">return var1;
      }

      @Nonnull
      class="kw">public SimplexNoiseField.Builder withScale(double var1) {
         this.scaleX = var1;
         this.scaleY = var1;
         this.scaleZ = var1;
         this.scaleW = var1;
         class="kw">return this;
      }

      @Nonnull
      class="kw">public SimplexNoiseField.Builder withScale(double var1, double var3, double var5, double var7) {
         this.scaleX = var1;
         this.scaleY = var3;
         this.scaleZ = var5;
         this.scaleW = var7;
         class="kw">return this;
      }

      @Nonnull
      class="kw">public SimplexNoiseField.Builder withNumberOfOctaves(int var1) {
         if (var1 <= 0) {
            throw new IllegalArgumentException("invalid number");
         }

         this.numberOfOctaves = var1;
         class="kw">return this;
      }

      @Nonnull
      class="kw">public SimplexNoiseField.Builder withFrequencyMultiplier(double var1) {
         this.octaveFrequencyMultiplier = var1;
         class="kw">return this;
      }

      @Nonnull
      class="kw">public SimplexNoiseField.Builder withAmplitudeMultiplier(double var1) {
         this.octaveAmplitudeMultiplier = var1;
         class="kw">return this;
      }

      @Nonnull
      class="kw">public SimplexNoiseField.Builder withSeed(long var1) {
         this.seed = var1;
         class="kw">return this;
      }
   }
}