public static double Jordan(double x, double y, int octaves, double frequency, double amplitude, double lacunarity, double gain, double warp, double damp, double damp_scale)
    {
        double num;
        double num1;

        x *= frequency;
        y *= frequency;
        double num2      = 0;
        double num3      = 1;
        double num4      = 1;
        double num5      = 0;
        double num6      = 0;
        double num7      = 0;
        double num8      = 0;
        double dampScale = num3 * gain;

        for (int i = 0; i < octaves; i++)
        {
            double num9  = ManagedNoise.Simplex2D(x * num4 + num5, y * num4 + num6, out num, out num1);
            double num10 = num9 * num9;
            double num11 = num * num9;
            double num12 = num1 * num9;
            num2      = num2 + dampScale * num10;
            num5      = num5 + warp * num11;
            num6      = num6 + warp * num12;
            num7      = num7 + damp * num11;
            num8      = num8 + damp * num12;
            num4     *= lacunarity;
            num3     *= gain;
            dampScale = num3 * (1 - damp_scale / (1 + (num7 * num7 + num8 * num8)));
        }
        return(num2 * amplitude);
    }
    public static double Simplex1D(double x)
    {
        double num  = 0;
        int    num1 = ManagedNoise.Floor(x);
        int    num2 = num1;
        double num3 = x - (double)num2;
        double num4 = 1 - num3 * num3;

        if (num4 > 0)
        {
            double num5 = num4 * (num4 * num4);
            int    num6 = ManagedNoise.hash[num2 & 255] & 1;
            double num7 = ManagedNoise.gradients1D[num6] * num3;
            num = num + num7 * num5;
        }
        int    num8  = num1 + 1;
        double num9  = x - (double)num8;
        double num10 = 1 - num9 * num9;

        if (num10 > 0)
        {
            double num11 = num10 * (num10 * num10);
            int    num12 = ManagedNoise.hash[num8 & 255] & 1;
            double num13 = ManagedNoise.gradients1D[num12] * num9;
            num = num + num13 * num11;
        }
        return(num * 2.40740740740741);
    }
Пример #3
0
    public static double Simplex1D(double x)
    {
        double num1 = 0.0;
        int    num2;
        int    num3 = num2 = ManagedNoise.Floor(x);
        double num4 = x - (double)num3;
        double num5 = 1.0 - num4 * num4;

        if (num5 > 0.0)
        {
            double num6  = num5 * num5;
            double num7  = num5 * num6;
            int    index = ManagedNoise.hash[num3 & (int)byte.MaxValue] & 1;
            double num8  = ManagedNoise.gradients1D[index] * num4;
            num1 += num8 * num7;
        }
        int    num9  = num2 + 1;
        double num10 = x - (double)num9;
        double num11 = 1.0 - num10 * num10;

        if (num11 > 0.0)
        {
            double num6  = num11 * num11;
            double num7  = num11 * num6;
            int    index = ManagedNoise.hash[num9 & (int)byte.MaxValue] & 1;
            double num8  = ManagedNoise.gradients1D[index] * num10;
            num1 += num8 * num7;
        }
        return(num1 * (65.0 / 27.0));
    }
Пример #4
0
    public static double RidgeIQ(
        double x,
        double y,
        int octaves,
        double frequency,
        double amplitude,
        double lacunarity,
        double gain)
    {
        x *= frequency;
        y *= frequency;
        double num1 = 0.0;
        double num2 = 1.0;
        double num3 = 1.0;
        double num4 = 0.0;
        double num5 = 0.0;

        for (int index = 0; index < octaves; ++index)
        {
            double dx;
            double dy;
            double x1 = ManagedNoise.Simplex2D(x * num2, y * num2, out dx, out dy);
            num4 += dx;
            num5 += dy;
            num1 += num3 * (1.0 - ManagedNoise.Abs(x1)) / (1.0 + (num4 * num4 + num5 * num5));
            num2 *= lacunarity;
            num3 *= gain;
        }
        return(num1 * amplitude);
    }
Пример #5
0
    public static double SharpWarp(
        double x,
        double y,
        int octaves,
        double frequency,
        double amplitude,
        double lacunarity,
        double gain,
        double warp)
    {
        x *= frequency;
        y *= frequency;
        double x1   = 0.0;
        double num1 = 1.0;
        double num2 = 1.0;
        double num3 = 0.0;
        double num4 = 0.0;

        for (int index = 0; index < octaves; ++index)
        {
            double dx;
            double dy;
            double num5 = ManagedNoise.Simplex2D((x + warp * num3) * num1, (y + warp * num4) * num1, out dx, out dy);
            x1   += num2 * (num5 * num5);
            num3 += num2 * dx * -num5;
            num4 += num2 * dy * -num5;
            num1 *= lacunarity;
            num2 *= gain * ManagedNoise.Saturate(x1);
        }
        return(x1 * amplitude);
    }
    public static double Turbulence(double x, double y, int octaves, double frequency, double amplitude, double lacunarity, double gain)
    {
        x *= frequency;
        y *= frequency;
        double num  = 0;
        double num1 = 1;
        double num2 = 1;

        for (int i = 0; i < octaves; i++)
        {
            double num3 = ManagedNoise.Simplex2D(x * num1, y * num1);
            num   = num + num2 * num3;
            num1 *= lacunarity;
            num2 *= gain;
        }
        return(num * amplitude);
    }
Пример #7
0
    public static double Jordan(
        double x,
        double y,
        int octaves,
        double frequency,
        double amplitude,
        double lacunarity,
        double gain,
        double warp,
        double damp,
        double damp_scale)
    {
        x *= frequency;
        y *= frequency;
        double num1 = 0.0;
        double num2 = 1.0;
        double num3 = 1.0;
        double num4 = 0.0;
        double num5 = 0.0;
        double num6 = 0.0;
        double num7 = 0.0;
        double num8 = num2 * gain;

        for (int index = 0; index < octaves; ++index)
        {
            double dx;
            double dy;
            double num9  = ManagedNoise.Simplex2D(x * num3 + num4, y * num3 + num5, out dx, out dy);
            double num10 = num9 * num9;
            double num11 = dx * num9;
            double num12 = dy * num9;
            num1 += num8 * num10;
            num4 += warp * num11;
            num5 += warp * num12;
            num6 += damp * num11;
            num7 += damp * num12;
            num3 *= lacunarity;
            num2 *= gain;
            num8  = num2 * (1.0 - damp_scale / (1.0 + (num6 * num6 + num7 * num7)));
        }
        return(num1 * amplitude);
    }
    public static double Simplex1D(double x, out double dx)
    {
        double num = 0;

        dx = 0;
        int    num1 = ManagedNoise.Floor(x);
        int    num2 = num1;
        double num3 = x - (double)num2;
        double num4 = 1 - num3 * num3;

        if (num4 > 0)
        {
            double num5  = num4 * num4;
            double num6  = num4 * num5;
            int    num7  = ManagedNoise.hash[num2 & 255] & 1;
            double num8  = ManagedNoise.gradients1D[num7];
            double num9  = num8 * num3;
            double num10 = num9 * 6 * num5;
            dx  = dx + (num8 * num6 - num10 * num3);
            num = num + num9 * num6;
        }
        int    num11 = num1 + 1;
        double num12 = x - (double)num11;
        double num13 = 1 - num12 * num12;

        if (num13 > 0)
        {
            double num14 = num13 * num13;
            double num15 = num13 * num14;
            int    num16 = ManagedNoise.hash[num11 & 255] & 1;
            double num17 = ManagedNoise.gradients1D[num16];
            double num18 = num17 * num12;
            double num19 = num18 * 6 * num14;
            dx  = dx + (num17 * num15 - num19 * num12);
            num = num + num18 * num15;
        }
        return(num * 2.40740740740741);
    }
Пример #9
0
    public static double Simplex1D(double x, out double dx)
    {
        double num1 = 0.0;

        dx = 0.0;
        int    num2;
        int    num3 = num2 = ManagedNoise.Floor(x);
        double num4 = x - (double)num3;
        double num5 = 1.0 - num4 * num4;

        if (num5 > 0.0)
        {
            double num6  = num5 * num5;
            double num7  = num5 * num6;
            int    index = ManagedNoise.hash[num3 & (int)byte.MaxValue] & 1;
            double num8  = ManagedNoise.gradients1D[index];
            double num9  = num8 * num4;
            double num10 = num9 * 6.0 * num6;
            dx   += num8 * num7 - num10 * num4;
            num1 += num9 * num7;
        }
        int    num11 = num2 + 1;
        double num12 = x - (double)num11;
        double num13 = 1.0 - num12 * num12;

        if (num13 > 0.0)
        {
            double num6  = num13 * num13;
            double num7  = num13 * num6;
            int    index = ManagedNoise.hash[num11 & (int)byte.MaxValue] & 1;
            double num8  = ManagedNoise.gradients1D[index];
            double num9  = num8 * num12;
            double num10 = num9 * 6.0 * num6;
            dx   += num8 * num7 - num10 * num12;
            num1 += num9 * num7;
        }
        return(num1 * (65.0 / 27.0));
    }
Пример #10
0
    public static double BillowWarp(double x, double y, int octaves, double frequency, double amplitude, double lacunarity, double gain, double warp)
    {
        double num;
        double num1;

        x *= frequency;
        y *= frequency;
        double num2 = 0;
        double num3 = 1;
        double num4 = 1;
        double num5 = 0;
        double num6 = 0;

        for (int i = 0; i < octaves; i++)
        {
            double num7 = ManagedNoise.Simplex2D((x + warp * num5) * num3, (y + warp * num6) * num3, out num, out num1);
            num2  = num2 + num4 * ManagedNoise.Abs(num7);
            num5  = num5 + num4 * num * -num7;
            num6  = num6 + num4 * num1 * -num7;
            num3 *= lacunarity;
            num4  = num4 * (gain * ManagedNoise.Saturate(num2));
        }
        return(num2 * amplitude);
    }
Пример #11
0
    public static double BillowIQ(double x, double y, int octaves, double frequency, double amplitude, double lacunarity, double gain)
    {
        double num;
        double num1;

        x *= frequency;
        y *= frequency;
        double num2 = 0;
        double num3 = 1;
        double num4 = 1;
        double num5 = 0;
        double num6 = 0;

        for (int i = 0; i < octaves; i++)
        {
            double num7 = ManagedNoise.Simplex2D(x * num3, y * num3, out num, out num1);
            num5 += num;
            num6 += num1;
            num2  = num2 + num4 * ManagedNoise.Abs(num7) / (1 + (num5 * num5 + num6 * num6));
            num3 *= lacunarity;
            num4 *= gain;
        }
        return(num2 * amplitude);
    }
Пример #12
0
    public static double Sharp(
        double x,
        double y,
        int octaves,
        double frequency,
        double amplitude,
        double lacunarity,
        double gain)
    {
        x *= frequency;
        y *= frequency;
        double num1 = 0.0;
        double num2 = 1.0;
        double num3 = 1.0;

        for (int index = 0; index < octaves; ++index)
        {
            double num4 = ManagedNoise.Simplex2D(x * num2, y * num2);
            num1 += num3 * (num4 * num4);
            num2 *= lacunarity;
            num3 *= gain;
        }
        return(num1 * amplitude);
    }
Пример #13
0
    public static double Simplex2D(double x, double y, out double dx, out double dy)
    {
        double num = 0;

        dx = 0;
        dy = 0;
        double num1  = (x + y) * 0.366025403784439;
        double num2  = x + num1;
        double num3  = y + num1;
        int    num4  = ManagedNoise.Floor(num2);
        int    num5  = ManagedNoise.Floor(num3);
        int    num6  = num4;
        int    num7  = num5;
        double num8  = (double)(num6 + num7) * 0.211324865405187;
        double num9  = x - (double)num6 + num8;
        double num10 = y - (double)num7 + num8;
        double num11 = 0.5 - num9 * num9 - num10 * num10;

        if (num11 > 0)
        {
            double num12 = num11 * num11;
            double num13 = num11 * num12;
            int    num14 = ManagedNoise.hash[ManagedNoise.hash[num6 & 255] + num7 & 255] & 7;
            double num15 = ManagedNoise.gradients2Dx[num14];
            double num16 = ManagedNoise.gradients2Dy[num14];
            double num17 = num15 * num9 + num16 * num10;
            double num18 = num17 * 6 * num12;
            dx  = dx + (num15 * num13 - num18 * num9);
            dy  = dy + (num16 * num13 - num18 * num10);
            num = num + num17 * num13;
        }
        int    num19 = num4 + 1;
        int    num20 = num5 + 1;
        double num21 = (double)(num19 + num20) * 0.211324865405187;
        double num22 = x - (double)num19 + num21;
        double num23 = y - (double)num20 + num21;
        double num24 = 0.5 - num22 * num22 - num23 * num23;

        if (num24 > 0)
        {
            double num25 = num24 * num24;
            double num26 = num24 * num25;
            int    num27 = ManagedNoise.hash[ManagedNoise.hash[num19 & 255] + num20 & 255] & 7;
            double num28 = ManagedNoise.gradients2Dx[num27];
            double num29 = ManagedNoise.gradients2Dy[num27];
            double num30 = num28 * num22 + num29 * num23;
            double num31 = num30 * 6 * num25;
            dx  = dx + (num28 * num26 - num31 * num22);
            dy  = dy + (num29 * num26 - num31 * num23);
            num = num + num30 * num26;
        }
        if (num2 - (double)num4 < num3 - (double)num5)
        {
            int    num32 = num4;
            int    num33 = num5 + 1;
            double num34 = (double)(num32 + num33) * 0.211324865405187;
            double num35 = x - (double)num32 + num34;
            double num36 = y - (double)num33 + num34;
            double num37 = 0.5 - num35 * num35 - num36 * num36;
            if (num37 > 0)
            {
                double num38 = num37 * num37;
                double num39 = num37 * num38;
                int    num40 = ManagedNoise.hash[ManagedNoise.hash[num32 & 255] + num33 & 255] & 7;
                double num41 = ManagedNoise.gradients2Dx[num40];
                double num42 = ManagedNoise.gradients2Dy[num40];
                double num43 = num41 * num35 + num42 * num36;
                double num44 = num43 * 6 * num38;
                dx  = dx + (num41 * num39 - num44 * num35);
                dy  = dy + (num42 * num39 - num44 * num36);
                num = num + num43 * num39;
            }
        }
        else
        {
            int    num45 = num4 + 1;
            int    num46 = num5;
            double num47 = (double)(num45 + num46) * 0.211324865405187;
            double num48 = x - (double)num45 + num47;
            double num49 = y - (double)num46 + num47;
            double num50 = 0.5 - num48 * num48 - num49 * num49;
            if (num50 > 0)
            {
                double num51 = num50 * num50;
                double num52 = num50 * num51;
                int    num53 = ManagedNoise.hash[ManagedNoise.hash[num45 & 255] + num46 & 255] & 7;
                double num54 = ManagedNoise.gradients2Dx[num53];
                double num55 = ManagedNoise.gradients2Dy[num53];
                double num56 = num54 * num48 + num55 * num49;
                double num57 = num56 * 6 * num51;
                dx  = dx + (num54 * num52 - num57 * num48);
                dy  = dy + (num55 * num52 - num57 * num49);
                num = num + num56 * num52;
            }
        }
        dx *= 4;
        dy *= 4;
        return(num * 32.9907739830396);
    }
Пример #14
0
    public static double Simplex2D(double x, double y)
    {
        double num   = 0;
        double num1  = (x + y) * 0.366025403784439;
        double num2  = x + num1;
        double num3  = y + num1;
        int    num4  = ManagedNoise.Floor(num2);
        int    num5  = ManagedNoise.Floor(num3);
        int    num6  = num4;
        int    num7  = num5;
        double num8  = (double)(num6 + num7) * 0.211324865405187;
        double num9  = x - (double)num6 + num8;
        double num10 = y - (double)num7 + num8;
        double num11 = 0.5 - num9 * num9 - num10 * num10;

        if (num11 > 0)
        {
            double num12 = num11 * (num11 * num11);
            int    num13 = ManagedNoise.hash[ManagedNoise.hash[num6 & 255] + num7 & 255] & 7;
            double num14 = ManagedNoise.gradients2Dx[num13];
            double num15 = ManagedNoise.gradients2Dy[num13];
            double num16 = num14 * num9 + num15 * num10;
            num = num + num16 * num12;
        }
        int    num17 = num4 + 1;
        int    num18 = num5 + 1;
        double num19 = (double)(num17 + num18) * 0.211324865405187;
        double num20 = x - (double)num17 + num19;
        double num21 = y - (double)num18 + num19;
        double num22 = 0.5 - num20 * num20 - num21 * num21;

        if (num22 > 0)
        {
            double num23 = num22 * (num22 * num22);
            int    num24 = ManagedNoise.hash[ManagedNoise.hash[num17 & 255] + num18 & 255] & 7;
            double num25 = ManagedNoise.gradients2Dx[num24];
            double num26 = ManagedNoise.gradients2Dy[num24];
            double num27 = num25 * num20 + num26 * num21;
            num = num + num27 * num23;
        }
        if (num2 - (double)num4 < num3 - (double)num5)
        {
            int    num28 = num4;
            int    num29 = num5 + 1;
            double num30 = (double)(num28 + num29) * 0.211324865405187;
            double num31 = x - (double)num28 + num30;
            double num32 = y - (double)num29 + num30;
            double num33 = 0.5 - num31 * num31 - num32 * num32;
            if (num33 > 0)
            {
                double num34 = num33 * (num33 * num33);
                int    num35 = ManagedNoise.hash[ManagedNoise.hash[num28 & 255] + num29 & 255] & 7;
                double num36 = ManagedNoise.gradients2Dx[num35];
                double num37 = ManagedNoise.gradients2Dy[num35];
                double num38 = num36 * num31 + num37 * num32;
                num = num + num38 * num34;
            }
        }
        else
        {
            int    num39 = num4 + 1;
            int    num40 = num5;
            double num41 = (double)(num39 + num40) * 0.211324865405187;
            double num42 = x - (double)num39 + num41;
            double num43 = y - (double)num40 + num41;
            double num44 = 0.5 - num42 * num42 - num43 * num43;
            if (num44 > 0)
            {
                double num45 = num44 * (num44 * num44);
                int    num46 = ManagedNoise.hash[ManagedNoise.hash[num39 & 255] + num40 & 255] & 7;
                double num47 = ManagedNoise.gradients2Dx[num46];
                double num48 = ManagedNoise.gradients2Dy[num46];
                double num49 = num47 * num42 + num48 * num43;
                num = num + num49 * num45;
            }
        }
        return(num * 32.9907739830396);
    }
Пример #15
0
    public static double Simplex2D(double x, double y, out double dx, out double dy)
    {
        double num1 = 0.0;

        dx = 0.0;
        dy = 0.0;
        double num2  = (x + y) * 0.366025403784439;
        double x1    = x + num2;
        double x2    = y + num2;
        int    num3  = ManagedNoise.Floor(x1);
        int    num4  = ManagedNoise.Floor(x2);
        int    num5  = num3;
        int    num6  = num4;
        double num7  = (double)(num5 + num6) * 0.211324865405187;
        double num8  = x - (double)num5 + num7;
        double num9  = y - (double)num6 + num7;
        double num10 = 0.5 - num8 * num8 - num9 * num9;

        if (num10 > 0.0)
        {
            double num11 = num10 * num10;
            double num12 = num10 * num11;
            int    index = ManagedNoise.hash[ManagedNoise.hash[num5 & (int)byte.MaxValue] + num6 & (int)byte.MaxValue] & 7;
            double num13 = ManagedNoise.gradients2Dx[index];
            double num14 = ManagedNoise.gradients2Dy[index];
            double num15 = num13 * num8 + num14 * num9;
            double num16 = num15 * 6.0 * num11;
            dx   += num13 * num12 - num16 * num8;
            dy   += num14 * num12 - num16 * num9;
            num1 += num15 * num12;
        }
        int    num17 = num3 + 1;
        int    num18 = num4 + 1;
        double num19 = (double)(num17 + num18) * 0.211324865405187;
        double num20 = x - (double)num17 + num19;
        double num21 = y - (double)num18 + num19;
        double num22 = 0.5 - num20 * num20 - num21 * num21;

        if (num22 > 0.0)
        {
            double num11 = num22 * num22;
            double num12 = num22 * num11;
            int    index = ManagedNoise.hash[ManagedNoise.hash[num17 & (int)byte.MaxValue] + num18 & (int)byte.MaxValue] & 7;
            double num13 = ManagedNoise.gradients2Dx[index];
            double num14 = ManagedNoise.gradients2Dy[index];
            double num15 = num13 * num20 + num14 * num21;
            double num16 = num15 * 6.0 * num11;
            dx   += num13 * num12 - num16 * num20;
            dy   += num14 * num12 - num16 * num21;
            num1 += num15 * num12;
        }
        if (x1 - (double)num3 >= x2 - (double)num4)
        {
            int    num11 = num3 + 1;
            int    num12 = num4;
            double num13 = (double)(num11 + num12) * 0.211324865405187;
            double num14 = x - (double)num11 + num13;
            double num15 = y - (double)num12 + num13;
            double num16 = 0.5 - num14 * num14 - num15 * num15;
            if (num16 > 0.0)
            {
                double num23 = num16 * num16;
                double num24 = num16 * num23;
                int    index = ManagedNoise.hash[ManagedNoise.hash[num11 & (int)byte.MaxValue] + num12 & (int)byte.MaxValue] & 7;
                double num25 = ManagedNoise.gradients2Dx[index];
                double num26 = ManagedNoise.gradients2Dy[index];
                double num27 = num25 * num14 + num26 * num15;
                double num28 = num27 * 6.0 * num23;
                dx   += num25 * num24 - num28 * num14;
                dy   += num26 * num24 - num28 * num15;
                num1 += num27 * num24;
            }
        }
        else
        {
            int    num11 = num3;
            int    num12 = num4 + 1;
            double num13 = (double)(num11 + num12) * 0.211324865405187;
            double num14 = x - (double)num11 + num13;
            double num15 = y - (double)num12 + num13;
            double num16 = 0.5 - num14 * num14 - num15 * num15;
            if (num16 > 0.0)
            {
                double num23 = num16 * num16;
                double num24 = num16 * num23;
                int    index = ManagedNoise.hash[ManagedNoise.hash[num11 & (int)byte.MaxValue] + num12 & (int)byte.MaxValue] & 7;
                double num25 = ManagedNoise.gradients2Dx[index];
                double num26 = ManagedNoise.gradients2Dy[index];
                double num27 = num25 * num14 + num26 * num15;
                double num28 = num27 * 6.0 * num23;
                dx   += num25 * num24 - num28 * num14;
                dy   += num26 * num24 - num28 * num15;
                num1 += num27 * num24;
            }
        }
        dx *= 4.0;
        dy *= 4.0;
        return(num1 * 32.9907739830396);
    }