package codechicken.lib.render.uv; import codechicken.lib.math.MathHelper; import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; public class UVTranslation extends UVTransformation { public double du; public double dv; public UVTranslation(double u, double v) { du = u; dv = v; } @Override public void apply(UV uv) { uv.u += du; uv.v += dv; } @Override public UVTransformation at(UV point) { return this; } @Override public UVTransformation inverse() { return new UVTranslation(-du, -dv); } @Override public UVTransformation merge(UVTransformation next) { if (next instanceof UVTranslation) { UVTranslation t = (UVTranslation) next; return new UVTranslation(du + t.du, dv + t.dv); } return null; } @Override public boolean isRedundant() { return MathHelper.between(-1E-5, du, 1E-5) && MathHelper.between(-1E-5, dv, 1E-5); } @Override public String toString() { MathContext cont = new MathContext(4, RoundingMode.HALF_UP); return "UVTranslation(" + new BigDecimal(du, cont) + ", " + new BigDecimal(dv, cont) + ")"; } }