This commit is contained in:
serso
2011-09-25 11:12:59 +04:00
parent 7a5685f4ba
commit e11cd7932d
7 changed files with 75 additions and 34 deletions

View File

@@ -1,6 +1,7 @@
package org.solovyev.common.math;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* User: serso
@@ -10,35 +11,43 @@ import org.jetbrains.annotations.NotNull;
public class DiscreteNormalizer implements Normalizer {
@NotNull
private final LinearNormalizer linearNormalizer;
private final Normalizer normalizer;
private final double min;
private final double step;
public DiscreteNormalizer(double min, double max, int steps) {
this(min, max, steps, null);
}
public DiscreteNormalizer(double min, double max, int steps, @Nullable Normalizer normalizer) {
assert min <= max;
assert steps > 1;
this.linearNormalizer = new LinearNormalizer(min, max);
if (normalizer != null) {
this.normalizer = normalizer;
} else {
this.normalizer = new LinearNormalizer(min, max);
}
this.step = linearNormalizer.normalize((max - min) / (steps - 1));
this.min = linearNormalizer.normalize(min);
this.step = this.normalizer.normalize((max - min) / (steps - 1));
this.min = this.normalizer.normalize(min);
}
public DiscreteNormalizer(double min, double max, double step) {
assert min <= max;
assert step > 0;
this.linearNormalizer = new LinearNormalizer(min, max);
this.normalizer = new LinearNormalizer(min, max);
this.step = linearNormalizer.normalize(step);
this.min = linearNormalizer.normalize(min);
this.step = normalizer.normalize(step);
this.min = normalizer.normalize(min);
}
@Override
public double normalize(double value) {
double normalizedValue = linearNormalizer.normalize(value);
double normalizedValue = normalizer.normalize(value);
double result = min;
while (true) {
@@ -54,6 +63,6 @@ public class DiscreteNormalizer implements Normalizer {
@Override
public double denormalize(double value) {
return linearNormalizer.denormalize(value);
return normalizer.denormalize(value);
}
}