Can't seem to get it to work perfectly.
I have this: (not the complete Perlin code here)
1 2
| 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) |
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 28 29 30
| public void run() { Random r = new Random(); r.setSeed(seed); BufferedImage temp = new BufferedImage(endFreqX, endFreqY , BufferedImage.TYPE_4BYTE_ABGR); Graphics2D g = temp.createGraphics(); 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(); 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 ?