public void Perturb(float f, float d) { int u, v; float[,] temp = new float[Size, Size]; for (int i = 0; i < Size; ++i) { for (int j = 0; j < Size; ++j) { u = i + (int)(Perlin.Generate3D(f * i / (float)Size, f * j / (float)Size, 0) * d); v = j + (int)(Perlin.Generate3D(f * i / (float)Size, f * j / (float)Size, 1) * d); if (u < 0) { u = 0; } if (u >= Size) { u = Size - 1; } if (v < 0) { v = 0; } if (v >= Size) { v = Size - 1; } temp[i, j] = Heights[u, v]; } } Heights = temp; }