首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何分配不同的世界发电机的影响生成地形?

我如何分配不同的世界发电机的影响生成地形?
EN

Stack Overflow用户
提问于 2020-06-22 00:38:30
回答 1查看 111关注 0票数 0

我对标题的掌声,因为我不知道我的问题的正确术语。

我使用单纯形噪声(8个八度音阶)为我的地形生成一个高度图。为了融入地形,我用温度值和降雨值计算出哪一个生物群落最适合位置,并通过以下方法得到平方值:

代码语言:javascript
复制
Math.abs((biome.optimumTemperature-temp)*(biome.optimumTemperature-temp) + (biome.optimumRainfall-rain)*(biome.optimumRainfall-rain));

然后利用这个值得到影响点最大的生物群落(只有3个生物群落被测试),即1/(squared value),这意味着理想条件越近,生物群落对地形的控制就越多。但我不知道如何使权重之和等于1。

示例1:

代码语言:javascript
复制
Biome 0: FOREST Weight:0.04317983014648879  
Biome 1: MOUNTAINS Weight:0.9954832102244979  
Biome 2: PLAINS Weight:0.06793829435632236  

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

示例2:

代码语言:javascript
复制
FOREST Weight:0.01621210578957933  
MOUNTAINS Weight:0.023389024085188184  
PLAINS Weight:0.017797794332510785  

这里的总和是:小于1的≈0.0573989242

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

我的问题是,我如何根据情况将影响分配给所有三个生物群落?

注:,如果生物群落与温度和雨水完全匹配,那么生物群落的影响应该是1,但在这种情况下,其他2个生物群落的影响应该是0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-22 09:24:52

你好像想把数字正常化。这是通过将每个数字除以总数来实现的:

代码语言:javascript
复制
double a, b, c;
double sum = a + b + c;
double normalizedA = a / sum;
double normalizedB = b / sum;
double normalizedC = c / sum;

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62505920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档