1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.rugged.raster;
18
19 import org.hipparchus.util.FastMath;
20
21 public class CheckedPatternElevationUpdater implements TileUpdater {
22
23 private double size;
24 private int n;
25 private double elevation1;
26 private double elevation2;
27
28 public CheckedPatternElevationUpdater(double size, int n, double elevation1, double elevation2) {
29 this.size = size;
30 this.n = n;
31 this.elevation1 = elevation1;
32 this.elevation2 = elevation2;
33 }
34
35 public void updateTile(double latitude, double longitude, UpdatableTile tile) {
36
37 double step = size / (n - 1);
38 double minLatitude = size * FastMath.floor(latitude / size);
39 double minLongitude = size * FastMath.floor(longitude / size);
40 tile.setGeometry(minLatitude, minLongitude, step, step, n, n);
41 for (int i = 0; i < n; ++i) {
42 int p = (int) FastMath.floor((minLatitude + i * step) / step);
43 for (int j = 0; j < n; ++j) {
44 int q = (int) FastMath.floor((minLongitude + j * step) / step);
45 tile.setElevation(i, j, (((p ^ q) & 0x1) == 0) ? elevation1 : elevation2);
46 }
47 }
48 }
49
50 }