我刚开始做一些测试libnoise
,从关于 getvalue() 的文档中,这个方法应该返回一个从 -1 到 1 的值,但是下一个代码(不是本教程的到目前为止)返回一些超过 1 的值:
// g++ test.cc -lnoise#include<iostream>
#include<noise/noise.h>
int main(){
noise::module::Perlin Ken; // Ken Perlin dat's the guy who developed the noise
// I do some noise some time too... more heavy \m/
int i; // dat's the guys who dev... just kidding...
int j;
double dragon;
for(j=0;j<100;j++) for(i=0;i<100;i++){
dragon = Ken.GetValue(double(i)/100.,double(j)/100.,0.5);
if(dragon>1)std::cout<<"("<<double(i)/100.<<";"<<double(j)/100.<<")= "<<dragon<<std::endl;
}
return 0;
}
然后我尝试复制+粘贴教程并更改一件事,即我想要获得价值的点。显然,我使用了一个点,我的代码返回一个大于 1 的值,比如说:(0.8,0.19,0.5) 谁给了 1.00101。所以,
#include <iostream>
#include <noise/noise.h>
using namespace noise;
int main (int argc, char** argv)
{
module::Perlin myModule;
double value = myModule.GetValue (0.8, 0.19, 0.50);
std::cout << value << std::endl;
return 0;
}
并且仍然返回 1.00101 仍然超过 1 ......所以现在,我看到没有人在 google & co 上抱怨这一点。所以不知道我是否弄乱了某些东西,但是由于我使用了教程并且由于要点不具体,所以我认为这不是我的错...
(我仍然可以得到最大值和最小值并进行归一化)
我现在也为此开了一张错误票。