blob: 42f5a9d493e75705db601f4dbc303890b4a3176c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package org.singinst.uf.math;
import org.singinst.uf.presenter.LineBounds;
public class LinearTransform extends InvertableFunction {
private final double scale;
private final double offset;
public LinearTransform(LineBounds from, LineBounds to) {
scale = to.getLength() / from.getLength();
offset = to.getFirst() - scale * from.getFirst();
assert apply(from.getFirst()) == to.getFirst();
assert apply(from.getSecond()) == to.getSecond();
}
@Override
public final double apply(double x) {
return scale * x + offset;
}
@Override
public double invert(double y) {
return (y - offset) / scale;
}
}
|