所以我正在制作一个可以制作随机岛屿的地图生成器。它在生成器的核心使用柏林噪声,然后使用带有渐变的圆来制作岛屿。
circle 方法在地图的中心创建了许多圆圈,颜色从 64 开始渐变到 0。问题是这种方法正在创建具有圆形边缘的地图部分的不自然外观。当为一个像素生成柏林噪声时,它将在梯度图上获取该像素,然后将其乘以蓝色值。
因此,如果柏林噪声在像素 1、5 上给出一个 1 并且渐变图上的蓝色值为 54,它将输出噪声值为 54。如果像素 130、560 上的柏林噪声为 0.5,渐变颜色值为 64那么噪声值为 32。
这是我得到的:

代码有两个关键点,perlin 位:
noise = NoiseGenerator.Noise(x, y);
double gradColour = getGradColour(x, y).B;
double addedNoise = noise * gradColour;
double gradNoise = addedNoise;// - gradColour;
Run Code Online (Sandbox Code Playgroud)
然后是渐变图生成器:
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 …Run Code Online (Sandbox Code Playgroud)