Can’t seem to get it to work perfectly.
I have this: (not the complete Perlin code here)
public PerlinNoise(int width, int height, int startFreqX, int endFreqX, int startFreqY, int endFreqY, float persistency,
int density, float cloudSharpness, int detail, float amplitude, long seed)
public void run()
{
Random r = new Random();
r.setSeed(seed);
BufferedImage temp = new BufferedImage(endFreqX, endFreqY ,
BufferedImage.TYPE_4BYTE_ABGR);
Graphics2D g = temp.createGraphics();
// generate a low-res random image
for (int i = 0; i < endFreqX ; i++)
{
for (int j = 0; j < endFreqY; j++)
{
int val = r.nextInt(255);
g.setColor(new Color(val, val, val, (int) (alpha * 0xFF)));
g.fillRect(i, j, 1, 1);
}
}
g.dispose();
// re-scale the image up using interpolation (in this case, linear)
image = new BufferedImage(width, height,
BufferedImage.TYPE_4BYTE_ABGR);
g = image.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(temp, 0, 0, width, height, startFreqX, startFreqY, endFreqX , endFreqY , null);
g.dispose();
}
}
With these parameters
(256, 128, 0, 24, 0, 12, 8.0f, 120, 0.10f, 5, 0.99f, 1l) i get a 256x128 b&w map.
Now, i want to work in 128x128 blocks. To get the first block, i enter:
(128,128, 0, 12, 0, 12, 8.0f, 120, 0.10f, 5, 0.99f, 1l)
And to get the second block to the right, i enter:
(128,128, 12, 24, 0, 12, 8.0f, 120, 0.10f, 5, 0.99f, 1l)
I almost works, you can clearly see the resemblance, but there’s always a few pixels different near the edge. It’s not acceptable for map generation.
What is wrong ?