Implement linear map normalizer

Updated astrash commit
This commit is contained in:
Zoë Gidiere
2024-01-05 14:57:36 -07:00
committed by Zoe Gidiere
parent 1204b7a8c1
commit 6c7974c302
3 changed files with 56 additions and 0 deletions

View File

@@ -101,6 +101,7 @@ public class NoiseAddon implements AddonInitializer {
.applyLoader(DerivativeNoiseSampler.class, DerivativeNoiseSamplerTemplate::new);
noiseRegistry.register(addon.key("LINEAR"), LinearNormalizerTemplate::new);
noiseRegistry.register(addon.key("LINEAR_MAP"), LinearMapNormalizerTemplate::new);
noiseRegistry.register(addon.key("NORMAL"), NormalNormalizerTemplate::new);
noiseRegistry.register(addon.key("CLAMP"), ClampNormalizerTemplate::new);
noiseRegistry.register(addon.key("PROBABILITY"), ProbabilityNormalizerTemplate::new);

View File

@@ -0,0 +1,27 @@
package com.dfsek.terra.addons.noise.config.templates.normalizer;
import com.dfsek.tectonic.api.config.template.annotations.Value;
import com.dfsek.terra.addons.noise.normalizer.LinearMapNormalizer;
import com.dfsek.terra.api.noise.NoiseSampler;
public class LinearMapNormalizerTemplate extends NormalizerTemplate<LinearMapNormalizer> {
@Value("from.a")
private double aFrom;
@Value("from.b")
private double bFrom;
@Value("to.a")
private double aTo;
@Value("to.b")
private 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;
}
}