我正在创建一个在 Flash 中返回 Perlin 噪声数的函数。对于这个函数,我必须有一个从静态种子返回随机数的函数。不幸的是,Actionscript 中的默认 Math.random 不能做到这一点。
我在互联网上搜索了很长时间,但找不到适合我的 perlin-noise 函数的解决方案。
我尝试了以下代码:
public static var seed:int = 602366;
public static function intNoise(x:int, y:int):Number {
var n:Number = seed * 16127 + (x + y * 57);
n = n % 602366;
seed = n | 0;
if (seed <= 0) seed = 1;
return (seed * 0.00000166) * 2 - 1;
}
此函数确实创建了一个随机数,但种子一直在变化,因此这不适用于 perlin 噪声。
public static function intNoise(x:int, y:int):Number {
var n:Number = x + y * 57;
n = (n<<13) ^ n;
return ( 1 - ( (n * (n * n * 15731 + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0);
}
我从我遵循的 Perlin Noise 教程中获得了这个函数:Perlin Noise,但它似乎只返回 1。