InterpolatedCurve class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.math
Файл: com/hypixel/hytale/builtin/hytalegenerator/math/InterpolatedCurve.java
implements: Double2DoubleFunction
Поля (5)
| Модификаторы | Тип | Имя |
|---|---|---|
|
double |
var3 |
|
double |
var3 |
|
double |
var5 |
|
double |
var5 |
|
|
var5 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException() |
public |
double |
getdouble get(double var1) |
|
|
if if(var1 < this.positionA) |
|
|
if if(var1 > this.positionB) |
|
|
if if(this.distance == 0.0) |
public |
double |
transitionCurvedouble transitionCurve(double var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.math;
class="kw">import it.unimi.dsi.fastutil.doubles.Double2DoubleFunction;
class="kw">import javax.annotation.Nonnull;
class="kw">public class InterpolatedCurve class="kw">implements Double2DoubleFunction {
@Nonnull
class="kw">private class="kw">final Double2DoubleFunction functionA;
@Nonnull
class="kw">private class="kw">final Double2DoubleFunction functionB;
class="kw">private class="kw">final double positionA;
class="kw">private class="kw">final double positionB;
class="kw">private class="kw">final double distance;
class="kw">private class="kw">final double smoothTransition;
class="kw">public InterpolatedCurve(double var1, double var3, double var5, @Nonnull Double2DoubleFunction var7, @Nonnull Double2DoubleFunction var8) {
if (!(var5 < 0.0) && !(var5 > 1.0)) {
this.smoothTransition = var5;
this.positionA = Math.min(var1, var3);
this.positionB = Math.max(var1, var3);
this.distance = this.positionB - this.positionA;
this.functionA = var7;
this.functionB = var8;
} else {
throw new IllegalArgumentException();
}
}
class="kw">public double get(double var1) {
if (var1 < this.positionA) {
class="kw">return this.functionA.get(var1);
}
if (var1 > this.positionB) {
class="kw">return this.functionB.get(var1);
}
if (this.distance == 0.0) {
class="kw">return (this.functionA.get(var1) + this.functionB.get(var1)) * 0.5;
}
double var3 = this.transitionCurve((var1 - this.positionA) / this.distance);
double var5 = 1.0 - var3;
class="kw">return var5 * this.functionA.get(var1) + var3 * this.functionB.get(var1);
}
class="kw">public double transitionCurve(double var1) {
double var3 = var1 * Math.PI;
double var5 = Math.cos(var3);
var5++;
var5 /= 2.0;
var5 = 1.0 - var5;
class="kw">return var5 * this.smoothTransition + var1 * (1.0 - this.smoothTransition);
}
}