discord-jadx/app/src/main/java/androidx/constraintlayout/motion/utils/Oscillator.java

185 lines
6.0 KiB
Java

package androidx.constraintlayout.motion.utils;
import c.d.b.a.a;
import com.google.android.material.shadow.ShadowDrawableWrapper;
import java.util.Arrays;
public class Oscillator {
public static final int BOUNCE = 6;
public static final int COS_WAVE = 5;
public static final int REVERSE_SAW_WAVE = 4;
public static final int SAW_WAVE = 3;
public static final int SIN_WAVE = 0;
public static final int SQUARE_WAVE = 1;
public static String TAG = "Oscillator";
public static final int TRIANGLE_WAVE = 2;
public double PI2 = 6.283185307179586d;
public double[] mArea;
private boolean mNormalized = false;
public float[] mPeriod = new float[0];
public double[] mPosition = new double[0];
public int mType;
public void addPoint(double d, float f) {
int length = this.mPeriod.length + 1;
int binarySearch = Arrays.binarySearch(this.mPosition, d);
if (binarySearch < 0) {
binarySearch = (-binarySearch) - 1;
}
this.mPosition = Arrays.copyOf(this.mPosition, length);
this.mPeriod = Arrays.copyOf(this.mPeriod, length);
this.mArea = new double[length];
double[] dArr = this.mPosition;
System.arraycopy(dArr, binarySearch, dArr, binarySearch + 1, (length - binarySearch) - 1);
this.mPosition[binarySearch] = d;
this.mPeriod[binarySearch] = f;
this.mNormalized = false;
}
public double getDP(double d) {
if (d <= ShadowDrawableWrapper.COS_45) {
d = 1.0E-5d;
} else if (d >= 1.0d) {
d = 0.999999d;
}
int binarySearch = Arrays.binarySearch(this.mPosition, d);
if (binarySearch > 0 || binarySearch == 0) {
return ShadowDrawableWrapper.COS_45;
}
int i = (-binarySearch) - 1;
float[] fArr = this.mPeriod;
int i2 = i - 1;
double d2 = (double) (fArr[i] - fArr[i2]);
double[] dArr = this.mPosition;
double d3 = d2 / (dArr[i] - dArr[i2]);
return (((double) fArr[i2]) - (d3 * dArr[i2])) + (d * d3);
}
public double getP(double d) {
if (d < ShadowDrawableWrapper.COS_45) {
d = 0.0d;
} else if (d > 1.0d) {
d = 1.0d;
}
int binarySearch = Arrays.binarySearch(this.mPosition, d);
if (binarySearch > 0) {
return 1.0d;
}
if (binarySearch == 0) {
return ShadowDrawableWrapper.COS_45;
}
int i = (-binarySearch) - 1;
float[] fArr = this.mPeriod;
int i2 = i - 1;
double d2 = (double) (fArr[i] - fArr[i2]);
double[] dArr = this.mPosition;
double d3 = d2 / (dArr[i] - dArr[i2]);
return ((((d * d) - (dArr[i2] * dArr[i2])) * d3) / 2.0d) + ((d - dArr[i2]) * (((double) fArr[i2]) - (dArr[i2] * d3))) + this.mArea[i2];
}
public double getSlope(double d) {
switch (this.mType) {
case 1:
return ShadowDrawableWrapper.COS_45;
case 2:
return Math.signum((((getP(d) * 4.0d) + 3.0d) % 4.0d) - 2.0d) * getDP(d) * 4.0d;
case 3:
return getDP(d) * 2.0d;
case 4:
return (-getDP(d)) * 2.0d;
case 5:
return Math.sin(getP(d) * this.PI2) * getDP(d) * (-this.PI2);
case 6:
return ((((getP(d) * 4.0d) + 2.0d) % 4.0d) - 2.0d) * getDP(d) * 4.0d;
default:
return Math.cos(getP(d) * this.PI2) * getDP(d) * this.PI2;
}
}
public double getValue(double d) {
double abs;
switch (this.mType) {
case 1:
return Math.signum(0.5d - (getP(d) % 1.0d));
case 2:
abs = Math.abs((((getP(d) * 4.0d) + 1.0d) % 4.0d) - 2.0d);
break;
case 3:
return (((getP(d) * 2.0d) + 1.0d) % 2.0d) - 1.0d;
case 4:
abs = ((getP(d) * 2.0d) + 1.0d) % 2.0d;
break;
case 5:
return Math.cos(getP(d) * this.PI2);
case 6:
double abs2 = 1.0d - Math.abs(((getP(d) * 4.0d) % 4.0d) - 2.0d);
abs = abs2 * abs2;
break;
default:
return Math.sin(getP(d) * this.PI2);
}
return 1.0d - abs;
}
public void normalize() {
double d = 0.0d;
int i = 0;
while (true) {
float[] fArr = this.mPeriod;
if (i >= fArr.length) {
break;
}
d += (double) fArr[i];
i++;
}
double d2 = 0.0d;
int i2 = 1;
while (true) {
float[] fArr2 = this.mPeriod;
if (i2 >= fArr2.length) {
break;
}
int i3 = i2 - 1;
double[] dArr = this.mPosition;
d2 += (dArr[i2] - dArr[i3]) * ((double) ((fArr2[i3] + fArr2[i2]) / 2.0f));
i2++;
}
int i4 = 0;
while (true) {
float[] fArr3 = this.mPeriod;
if (i4 >= fArr3.length) {
break;
}
fArr3[i4] = (float) (((double) fArr3[i4]) * (d / d2));
i4++;
}
this.mArea[0] = 0.0d;
int i5 = 1;
while (true) {
float[] fArr4 = this.mPeriod;
if (i5 < fArr4.length) {
int i6 = i5 - 1;
double[] dArr2 = this.mPosition;
double d3 = dArr2[i5] - dArr2[i6];
double[] dArr3 = this.mArea;
dArr3[i5] = (d3 * ((double) ((fArr4[i6] + fArr4[i5]) / 2.0f))) + dArr3[i6];
i5++;
} else {
this.mNormalized = true;
return;
}
}
}
public void setType(int i) {
this.mType = i;
}
public String toString() {
StringBuilder L = a.L("pos =");
L.append(Arrays.toString(this.mPosition));
L.append(" period=");
L.append(Arrays.toString(this.mPeriod));
return L.toString();
}
}