- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有任意数量的柏林噪声图和每个的权重。所有权重的总和为 1,但这应该没有区别。
我想要获得关于重量的最高值的噪声。
我的第一个方法是从每个柏林噪音中获取数字,将它们转换为百分比(我有一个循环表),乘以权重并选择最高值。但这种方法有一个巨大的缺陷:它会区分较小的权重并偏向较大的权重,从而扰乱分布。我希望 20% 中出现 0.2 的权重。
我想将其用于 map 生成器来选择图 block 类型。我使用多个柏林噪声,因为我想使用许多不同的图 block 类型彼此接壤,因此无法使用渐变。
有谁知道如何修复这个缺陷,或者使用不同的方法来生成基于图 block 的 map ?
编辑:同时我想出了一个几乎可以接受的解决方案:
final float[] values = new float[noises.length];
for (int i = 0; i < values.length; i++)
values[i] = noises[i].get(x, y) * (1f + (weights[i] - 1f / noises.length));
int max = 0;
for (int i = 1; i < values.length; i++)
if (values[i] > values[max])
max = i;
return noises[max];
唯一的缺陷是不精确。即使权重为 0f,噪声仍然会在大约 6% 的时间内出现。
最佳答案
也许解决方案是这样的:
Perlin pickOne(Perlin[] noise, double[] weights) {
double sum = 0;
for(double weight : weights) sum += weight;
double choice = Math.random() * sum;
for(int i = 0; i < weights.length; ++i) {
choice -= weights[i];
if(choice <= 0) {
return noise[i];
}
}
throw new IllegalArgumentException("Must have at least one weight!");
}
(也就是说,完全根据权重而不是 map 值来选择噪声图之一。我在这里选择它的做法可以想象为将所有权重端到端地布置在一条数轴,在其中选择一个值,然后计算出它属于哪个权重。)
关于java - 具有加权柏林噪声的 map 生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15555222/
我正在尝试在 JS 中设置时区,但无法弄清楚要使用哪个缩写。我尝试了一些,但我可能是这里的问题。 我尝试将 momentjs 与 moment.tz 一起使用。 最佳答案 “欧洲/柏林”就在这里。您可
我已将 ISAPI DLL SOAP 从 Delphi 10 Seattle 迁移到 Delphi 10.1 Berlin Update 2。 迁移后,会引发运行时“抽象异常”。 我注意到“Web.H
为什么我无法解析以下日期? DateTime.parse("2015-03-29 02:35:00", DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")
我是一名优秀的程序员,十分优秀!