地图生成器的渐变圆

因此,我正在制作一个可生成随机岛的地图生成器。它在生成器的心脏处使用Perlin噪声,然后在使用具有渐变的圆的方法来制作孤岛。


circle方法在地图的中心创建了多个圆形,其渐变从颜色开始(从64到0)渐变。问题在于,此方法在具有圆形边缘的地图部分上创建了非自然外观。当为一个像素生成Perlin噪声时,它将在渐变图上获得该像素,然后使其与蓝色值互斥。


因此,如果Perlin噪声在像素1、5上给出1,并且渐变图上的蓝色值为54,则将输出54的噪声值。如果在像素130、560上的Perlin噪声为0.5,且渐变颜色值为64那么噪声值为32。

该代码有两个关键点,佩林位:


noise = NoiseGenerator.Noise(x, y);

double gradColour = getGradColour(x, y).B;

double addedNoise = noise * gradColour;

double gradNoise = addedNoise;// - gradColour;

然后是渐变图生成器:


    public static void DrawGrad(float X, float Y, float R, Color C1, Color C2)

    {

        Graphics g = Graphics.FromImage(imgGrad);

        GraphicsPath path = new GraphicsPath();

        path.AddEllipse(X, Y, R, R);


        PathGradientBrush pathGrBrush = new PathGradientBrush(path);

        pathGrBrush.CenterColor = C1;


        Color[] colours = { C2 };

        pathGrBrush.SurroundColors = colours;

        g.FillEllipse(pathGrBrush, X, Y, R, R);

        //g.FillEllipse(Brushes.Red, X, Y, R, R);

        g.Flush();

    }


        int amount = rnd.Next(25, 30);

        for (int i = 0; i < amount / 4; i++)

        {

            float X = rnd.Next(-800, 1748);

            float Y = rnd.Next(-800, 1748);

            float R = rnd.Next(1000, 1200);

            DrawGrad(X, Y, R, Color.FromArgb(255, 0, 0, rnd.Next(15, 20)), Color.FromArgb(0, 0, 0, 0));

        }

        for (int i = 0; i < amount; i++)

        {

            double positionDiv = 1.98;

            double X1 = rnd.Next(0, 450) / positionDiv;

            double Y1 = rnd.Next(0, 450) / positionDiv;

            double R1 = rnd.Next(300, 650) / 4;

            float R = (float)R1;

            float X = (float)X1;

            float Y = (float)Y1;


            while (X + R > 1004)

            {

                X = 924 - R;

            }

            while (Y + R > 1004)

            {

                Y = 924 - R;

            }

            if(X < 30)

            {

                X = 30;

            }

我只是想知道是否还有其他人知道C#中的其他方法可以使用perlin噪声创建孤岛?任何建议将不胜感激。

GCT1015
浏览 382回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP