You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
2.1 KiB
153 lines
2.1 KiB
package mightypork.utils.math.coord;
|
|
|
|
|
|
public class Synths {
|
|
|
|
private static abstract class HeteroSynth extends VecProxy {
|
|
|
|
public HeteroSynth(Vec observed) {
|
|
super(observed);
|
|
}
|
|
|
|
|
|
@Override
|
|
protected abstract double processX(double x);
|
|
|
|
|
|
@Override
|
|
protected abstract double processY(double y);
|
|
|
|
|
|
@Override
|
|
protected abstract double processZ(double z);
|
|
}
|
|
|
|
private static abstract class UniformSynth extends VecProxy {
|
|
|
|
public UniformSynth(Vec observed) {
|
|
super(observed);
|
|
}
|
|
|
|
|
|
@Override
|
|
protected double processX(double x)
|
|
{
|
|
return super.processX(x);
|
|
}
|
|
|
|
|
|
@Override
|
|
protected double processY(double y)
|
|
{
|
|
return super.processY(y);
|
|
}
|
|
|
|
|
|
@Override
|
|
protected double processZ(double z)
|
|
{
|
|
return super.processZ(z);
|
|
}
|
|
|
|
|
|
protected abstract double process(double a);
|
|
}
|
|
|
|
public static class Round extends UniformSynth {
|
|
|
|
public Round(Vec observed) {
|
|
super(observed);
|
|
}
|
|
|
|
|
|
@Override
|
|
protected double process(double a)
|
|
{
|
|
return Math.round(a);
|
|
}
|
|
}
|
|
|
|
public static class Ceil extends UniformSynth {
|
|
|
|
public Ceil(Vec observed) {
|
|
super(observed);
|
|
}
|
|
|
|
|
|
@Override
|
|
protected double process(double a)
|
|
{
|
|
return Math.ceil(a);
|
|
}
|
|
}
|
|
|
|
public static class Floor extends UniformSynth {
|
|
|
|
public Floor(Vec observed) {
|
|
super(observed);
|
|
}
|
|
|
|
|
|
@Override
|
|
protected double process(double a)
|
|
{
|
|
return Math.floor(a);
|
|
}
|
|
}
|
|
|
|
public static class Neg extends UniformSynth {
|
|
|
|
public Neg(Vec observed) {
|
|
super(observed);
|
|
}
|
|
|
|
|
|
@Override
|
|
protected double process(double a)
|
|
{
|
|
return -a;
|
|
}
|
|
}
|
|
|
|
public static class Half extends UniformSynth {
|
|
|
|
public Half(Vec observed) {
|
|
super(observed);
|
|
}
|
|
|
|
|
|
@Override
|
|
protected double process(double a)
|
|
{
|
|
return a / 2;
|
|
}
|
|
}
|
|
|
|
public static class Norm extends HeteroSynth {
|
|
|
|
public Norm(Vec observed) {
|
|
super(observed);
|
|
}
|
|
|
|
|
|
@Override
|
|
protected double processX(double x)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
|
|
@Override
|
|
protected double processY(double y)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
|
|
@Override
|
|
protected double processZ(double z)
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|