无法生成独立的噪音

今天晚上我一直坚持让Perlin Noise函数自己生成。 每次运行程序时都不join不同types的噪音,它会调用一个ArgumentException错误。

这是我正在使用的代码。

//perlin gen Random rand = new Random(); double freq = 1 / 32.0; double lacu = 3.0; int octave = 5; double pers = 0.5; int seed = 1; Perlin perlin = new Perlin(freq, lacu, pers, octave, seed, QualityMode.High); //init the noise map noiseMap = new Noise2D(128, 128); noiseMap.GeneratePlanar(1, 2, 1, 2, true); 

它所调用的错误在这里。

 public void GeneratePlanar(double left, double right, double top, double bottom, bool seamless) { if (right <= left || bottom <= top || this.m_generator == null) { throw new ArgumentException(); } 

我检查并重新检查了多次代码,所以我不知道是怎么回事,使GeneratePlanar函数调用ArgumentException错误。

throw new ArgumentException(); 。 当它打破检查rightleftbottomtopm_generator 。 看哪一个是问题。 m_generator是否m_generator null ? 没有right == left ? 当debugging器中断时,您可以看到调用堆栈。 调用堆栈将显示所有导致此函数被调用的函数调用。

debugging器只是程序员最好的朋友。 越早学会使用它越好。 看到这篇文章我写了关于debugging器的更多细节。

我假设this.m_generator是空的,因为我从你的代码看到其他值是正确的。 查看代码,看看m_generator的设置,然后你就会知道你需要做什么才能正确设置。

m_generator从哪里来? 我没有看到它提供的其他代码中列出,所以它是否在其他地方初始化?

在抛出exception之前,你也可以把一些debugging打印出来,看看你对这些variables的值是多less。 了解你为什么在那里会有一个开始修复它。