Merge pull request #365 from Astrashh/dev/linear-map

Linear map normalizer
This commit is contained in:
dfsek
2022-08-24 11:55:08 -07:00
committed by GitHub
3 changed files with 61 additions and 0 deletions

View File

@@ -33,6 +33,7 @@ import com.dfsek.terra.addons.noise.config.templates.noise.fractal.BrownianMotio
import com.dfsek.terra.addons.noise.config.templates.noise.fractal.PingPongTemplate;
import com.dfsek.terra.addons.noise.config.templates.noise.fractal.RidgedFractalTemplate;
import com.dfsek.terra.addons.noise.config.templates.normalizer.ClampNormalizerTemplate;
import com.dfsek.terra.addons.noise.config.templates.normalizer.LinearMapNormalizerTemplate;
import com.dfsek.terra.addons.noise.config.templates.normalizer.LinearNormalizerTemplate;
import com.dfsek.terra.addons.noise.config.templates.normalizer.NormalNormalizerTemplate;
import com.dfsek.terra.addons.noise.config.templates.normalizer.PosterizationNormalizerTemplate;
@@ -91,6 +92,7 @@ public class NoiseAddon implements MonadAddonInitializer {
.applyLoader(FunctionTemplate.class, FunctionTemplate::new);
noiseRegistry.register(base.key("LINEAR"), LinearNormalizerTemplate::new);
noiseRegistry.register(base.key("LINEAR_MAP"), LinearMapNormalizerTemplate::new);
noiseRegistry.register(base.key("NORMAL"), NormalNormalizerTemplate::new);
noiseRegistry.register(base.key("CLAMP"), ClampNormalizerTemplate::new);
noiseRegistry.register(base.key("PROBABILITY"), ProbabilityNormalizerTemplate::new);

View File

@@ -0,0 +1,31 @@
package com.dfsek.terra.addons.noise.config.templates.normalizer;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;
import com.dfsek.terra.addons.noise.normalizer.LinearMapNormalizer;
import com.dfsek.terra.api.config.meta.Meta;
import com.dfsek.terra.api.noise.NoiseSampler;
public class LinearMapNormalizerTemplate extends NormalizerTemplate<LinearMapNormalizer> {
@Value("from.a")
@Default
private @Meta double aFrom = -1;
@Value("from.b")
@Default
private @Meta double bFrom = 1;
@Value("to.a")
private @Meta double aTo;
@Value("to.b")
private @Meta double bTo;
@Override
public NoiseSampler get() {
return new LinearMapNormalizer(function, aFrom, aTo, bFrom, bTo);
}
}

View File

@@ -0,0 +1,28 @@
package com.dfsek.terra.addons.noise.normalizer;
import com.dfsek.terra.api.noise.NoiseSampler;
public class LinearMapNormalizer extends Normalizer {
private final double aFrom;
private final double aTo;
private final double bFrom;
private final double bTo;
public LinearMapNormalizer(NoiseSampler sampler, double aFrom, double aTo, double bFrom, double bTo) {
super(sampler);
this.aFrom = aFrom;
this.aTo = aTo;
this.bFrom = bFrom;
this.bTo = bTo;
}
@Override
public double normalize(double in) {
return (in - aFrom) * (aTo - bTo) / (aFrom - bFrom) + aTo;
}
}