Replace numbers with constants

This commit is contained in:
Astrash
2023-10-06 12:54:26 +11:00
parent 809be3cb8f
commit 9444f9236d
@@ -208,6 +208,14 @@ public class PseudoErosionSampler implements NoiseSampler {
-0.146637214d, -0.9891903394d, -0.782318098d, 0.6228791163d, -0.5039610839d, -0.8637263605d, -0.7743120191d, -0.6328039957d, -0.146637214d, -0.9891903394d, -0.782318098d, 0.6228791163d, -0.5039610839d, -0.8637263605d, -0.7743120191d, -0.6328039957d,
}; };
private static final int PRECOMPUTE_RADIUS = 3;
private static final int PRECOMPUTE_SIZE = 1 + 2 * PRECOMPUTE_RADIUS;
private static final int NEARBY_CELLS_RADIUS = 2;
private static final int MAX_CONNECTION_RADIUS = 1;
private final long salt; private final long salt;
private final double frequency; private final double frequency;
@@ -231,10 +239,10 @@ public class PseudoErosionSampler implements NoiseSampler {
int gridX = fastRound(x); int gridX = fastRound(x);
int gridY = fastRound(y); int gridY = fastRound(y);
// Precompute cell positions and lookup values for 5x5 area centered on current grid coordinates // Precompute cell positions and lookup values
double[][][] cellData = new double[7][7][3]; double[][][] cellData = new double[PRECOMPUTE_SIZE][PRECOMPUTE_SIZE][3];
for(int xi = -3; xi <= 3; xi++) { for(int xi = -PRECOMPUTE_RADIUS; xi <= PRECOMPUTE_RADIUS; xi++) {
for(int yi = -3; yi <= 3; yi++) { for(int yi = -PRECOMPUTE_RADIUS; yi <= PRECOMPUTE_RADIUS; yi++) {
int jitterIdx = jitterIdx2D(seed, gridX + xi, gridY + yi); int jitterIdx = jitterIdx2D(seed, gridX + xi, gridY + yi);
double jitterX = RAND_VECS_2D[jitterIdx] * cellularJitter; double jitterX = RAND_VECS_2D[jitterIdx] * cellularJitter;
double jitterY = RAND_VECS_2D[jitterIdx | 1] * cellularJitter; double jitterY = RAND_VECS_2D[jitterIdx | 1] * cellularJitter;
@@ -247,23 +255,24 @@ public class PseudoErosionSampler implements NoiseSampler {
double lookup = this.lookup.noise(seed, actualCellX, actualCellY); double lookup = this.lookup.noise(seed, actualCellX, actualCellY);
cellData[xi+3][yi+3][0] = cellX; double[] data = cellData[xi+PRECOMPUTE_RADIUS][yi+PRECOMPUTE_RADIUS];
cellData[xi+3][yi+3][1] = cellY; data[0] = cellX;
cellData[xi+3][yi+3][2] = lookup; data[1] = cellY;
data[2] = lookup;
} }
} }
// Iterate over nearby cells // Iterate over nearby cells
for(int xi = -2; xi <= 2; xi++) { for(int xi = -NEARBY_CELLS_RADIUS; xi <= NEARBY_CELLS_RADIUS; xi++) {
for(int yi = -2; yi <= 2; yi++) { for(int yi = -NEARBY_CELLS_RADIUS; yi <= NEARBY_CELLS_RADIUS; yi++) {
// Find cell position with the lowest lookup value within moore neighborhood of neighbor // Find cell position with the lowest lookup value within moore neighborhood of neighbor
double lowestLookup = Double.MAX_VALUE; double lowestLookup = Double.MAX_VALUE;
double connectedCellX = 0; double connectedCellX = 0;
double connectedCellY = 0; double connectedCellY = 0;
for(int xni = xi - 1; xni <= xi + 1; xni++) { for(int xni = xi - MAX_CONNECTION_RADIUS; xni <= xi + MAX_CONNECTION_RADIUS; xni++) {
for(int yni = yi - 1; yni <= yi + 1; yni++) { for(int yni = yi - MAX_CONNECTION_RADIUS; yni <= yi + MAX_CONNECTION_RADIUS; yni++) {
double[] data = cellData[xni+3][yni+3]; double[] data = cellData[xni+PRECOMPUTE_RADIUS][yni+PRECOMPUTE_RADIUS];
double lookup = data[2]; double lookup = data[2];
if(lookup < lowestLookup) { if(lookup < lowestLookup) {
lowestLookup = lookup; lowestLookup = lookup;
@@ -273,7 +282,7 @@ public class PseudoErosionSampler implements NoiseSampler {
} }
} }
double[] data = cellData[xi+3][yi+3]; double[] data = cellData[xi+PRECOMPUTE_RADIUS][yi+PRECOMPUTE_RADIUS];
double cellX = data[0]; double cellX = data[0];
double cellY = data[1]; double cellY = data[1];