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;
        }