我如何分配不同世界生成器的影响以生成地形?

How do i distribute the influence of different world generators to generate terrain?

我对这个标题很满意,因为我不知道我的问题的正确术语。

我正在使用 Simplex Noise(具有 8 个八度)为我的地形生成高度图。为了融入地形,我使用温度值和降雨量值计算出哪个生物群落最适合该位置,并通过以下方式获得平方值:

Math.abs((biome.optimumTemperature-temp)*(biome.optimumTemperature-temp) + (biome.optimumRainfall-rain)*(biome.optimumRainfall-rain));

此值然后用于获取对点影响最大的生物群落(仅测试了 3 个生物群落)即 1/(squared value) 意味着越接近理想条件,生物群落对地形的控制就越多。但是我不知道如何让权重之和等于1。

示例 1:

Biome 0: FOREST Weight:0.04317983014648879  
Biome 1: MOUNTAINS Weight:0.9954832102244979  
Biome 2: PLAINS Weight:0.06793829435632236  

这里和是:≈1,10660133 大于1

例二:

FOREST Weight:0.01621210578957933  
MOUNTAINS Weight:0.023389024085188184  
PLAINS Weight:0.017797794332510785  

这里,总和为:≈0.0573989242,小于1

如果 biome.optimumTemperature = tempbiome.optimumRainfall = rain 意味着以后会变成 1 / 0(不好),为了防止影响接近无穷大,我已经将每个平方值限制在最大值 1 3.

我的问题是如何根据条件将影响分配给所有3个生物群落?

注意:如果一个生物群落与温度和雨水完美匹配,那么它的影响力为 1 是可以的,但在这种情况下,其他 2 个生物群落的影响力应该为 0 .

您似乎想对数字进行标准化。这是通过将每个数字除以总和来完成的:

double a, b, c;
double sum = a + b + c;
double normalizedA = a / sum;
double normalizedB = b / sum;
double normalizedC = c / sum;

这确保新值的总和变为 1(加上或减去处理浮点数的任何舍入误差),同时保留不同数字的相对大小。