From 82596a8ffdbac1311c55dc8a4daa04459696ca6d Mon Sep 17 00:00:00 2001 From: Astrash Date: Tue, 23 Aug 2022 10:19:00 +1000 Subject: [PATCH 1/3] Implement linear map normalizer --- .../dfsek/terra/addons/noise/NoiseAddon.java | 2 ++ .../LinearMapNormalizerTemplate.java | 27 ++++++++++++++++++ .../noise/normalizer/LinearMapNormalizer.java | 28 +++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java create mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 913d4e7bc..ddfc1bbe7 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -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); diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java new file mode 100644 index 000000000..56a50ad54 --- /dev/null +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java @@ -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 { + + @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); + } +} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java new file mode 100644 index 000000000..d124ef8de --- /dev/null +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearMapNormalizer.java @@ -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; + } +} From f0efb4c931f81cb54180cd754cae6bcc343cb49b Mon Sep 17 00:00:00 2001 From: Astrash Date: Tue, 23 Aug 2022 10:35:00 +1000 Subject: [PATCH 2/3] Add default 'from' values for linear map template --- .../templates/normalizer/LinearMapNormalizerTemplate.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java index 56a50ad54..8a073641c 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java @@ -1,5 +1,6 @@ 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; @@ -9,10 +10,12 @@ import com.dfsek.terra.api.noise.NoiseSampler; public class LinearMapNormalizerTemplate extends NormalizerTemplate { @Value("from.a") - private double aFrom; + @Default + private double aFrom = -1; @Value("from.b") - private double bFrom; + @Default + private double bFrom = 1; @Value("to.a") private double aTo; From 3dcfeb987fb021c6b1c2961b59c33d5025df6a8b Mon Sep 17 00:00:00 2001 From: Astrash Date: Tue, 23 Aug 2022 11:06:32 +1000 Subject: [PATCH 3/3] Add meta annotations --- .../normalizer/LinearMapNormalizerTemplate.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java index 8a073641c..1a04fe190 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearMapNormalizerTemplate.java @@ -4,6 +4,7 @@ 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; @@ -11,17 +12,17 @@ public class LinearMapNormalizerTemplate extends NormalizerTemplate