interpolate2 static method
Implementation
static List<double> interpolate2(
LineString line, double startValue, double midValue, double endValue) {
startValue = startValue.abs();
midValue = midValue.abs();
endValue = endValue.abs();
List<double> values = List.filled(line.getNumPoints(), 0);
values[0] = startValue;
values[values.length - 1] = endValue;
List<Coordinate> pts = line.getCoordinates();
double lineLen = line.getLength();
int midIndex = indexAtLength(pts, lineLen / 2);
double delMidStart = midValue - startValue;
double delEndMid = endValue - midValue;
double lenSM = length(pts, 0, midIndex);
double currLen = 0;
for (int i = 1; i <= midIndex; i++) {
double segLen = pts[i].distance(pts[i - 1]);
currLen += segLen;
double lenFrac = currLen / lenSM;
double val = startValue + (lenFrac * delMidStart);
values[i] = val;
}
double lenME = length(pts, midIndex, pts.length - 1);
currLen = 0;
for (int i = midIndex + 1; i < (values.length - 1); i++) {
double segLen = pts[i].distance(pts[i - 1]);
currLen += segLen;
double lenFrac = currLen / lenME;
double val = midValue + (lenFrac * delEndMid);
values[i] = val;
}
return values;
}