我对标题的掌声,因为我不知道我的问题的正确术语。
我使用单纯形噪声(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
示例2:
FOREST Weight:0.01621210578957933
MOUNTAINS Weight:0.023389024085188184
PLAINS Weight:0.017797794332510785 这里的总和是:小于1的≈0.0573989242
为了防止接近无穷大的影响,如果biome.optimumTemperature = temp和biome.optimumRainfall = rain意味着以后会变成1/0(坏的),我已经将3中每一个的平方值限制在最大值1。
我的问题是,我如何根据情况将影响分配给所有三个生物群落?
注:,如果生物群落与温度和雨水完全匹配,那么生物群落的影响应该是1,但在这种情况下,其他2个生物群落的影响应该是0。
发布于 2020-06-22 09:24:52
你好像想把数字正常化。这是通过将每个数字除以总数来实现的:
double a, b, c;
double sum = a + b + c;
double normalizedA = a / sum;
double normalizedB = b / sum;
double normalizedC = c / sum;这将确保新值的总和变为1(加上或减去处理浮点数时的任何舍入错误),同时保留不同数字的相对大小。
https://stackoverflow.com/questions/62505920
复制相似问题