示例#1
0
文件: perlin.cpp 项目: paud/d2x-xl
double InterpolatedNoise2D (double x, double y)
{
double xInt, yInt,
		 xFrac = modf (x, &xInt),
		 yFrac = modf (x, &yInt);
double v1 = SmoothedNoise2D ((long) xInt, (long) yInt);
double v2 = SmoothedNoise2D ((long) xInt+1, (long) yInt);
double v3 = SmoothedNoise2D ((long) xInt, (long) yInt+1);
double v4 = SmoothedNoise2D ((long) xInt+1, (long) yInt+1);
double i1 = CosineInterpolate (v1, v2, xFrac);
double i2 = CosineInterpolate (v3, v4, xFrac);
return CosineInterpolate (i1, i2, yFrac);
}
示例#2
0
eeFloat cPerlinNoise::InterpolatedNoise2D(eeFloat x, eeFloat y) {
	Int32 eger_X    = static_cast<Int32>( x );
	Int32 eger_Y    = static_cast<Int32>( y );

	eeFloat fractional_X = x - eger_X;
	eeFloat fractional_Y = y - eger_Y;

	eeFloat feger_X = static_cast<eeFloat> ( eger_X );
	eeFloat feger_Y = static_cast<eeFloat> ( eger_Y );

	eeFloat v1 = SmoothedNoise2D( feger_X		, feger_Y		);
	eeFloat v2 = SmoothedNoise2D( feger_X + 1.f	, feger_Y		);
	eeFloat v3 = SmoothedNoise2D( feger_X		, feger_Y + 1.f	);
	eeFloat v4 = SmoothedNoise2D( feger_X + 1.f	, feger_Y + 1.f	);

	eeFloat i1 = Interpolate( v1 , v2 , fractional_X );
	eeFloat i2 = Interpolate( v3 , v4 , fractional_X );

	return Interpolate( i1 , i2 , fractional_Y );
}