double InterpolatedNoise(double x, double y){ int int_X, int_Y; double fractional_X, fractional_Y, v1, v2, v3, v4, i1, i2; int_X = (int)floor(x); //不要问我为毛用floor,c++默认居然TM的是向零取整的 fractional_X = x - int_X; int_Y = (int)floor(y); fractional_Y = y - int_Y; v1 = SmoothedNoise(int_X, int_Y); v2 = SmoothedNoise(int_X + 1, int_Y); v3 = SmoothedNoise(int_X, int_Y + 1); v4 = SmoothedNoise(int_X + 1, int_Y + 1); i1 = Interpolate(v1, v2, fractional_X); i2 = Interpolate(v3, v4, fractional_X); return Interpolate(i1, i2, fractional_Y); }
float InterpolatedNoise(float x, float y){ int int_X, int_Y; float fractional_X, fractional_Y, v1, v2, v3, v4, i1, i2; int_X = int(x); fractional_X = x - int_X; int_Y = int(y); fractional_Y = y - int_Y; if (NoiseSmoothed == 1){ v1 = SmoothedNoise((float)int_X, (float)int_Y); v2 = SmoothedNoise((float)int_X + 1, (float)int_Y); v3 = SmoothedNoise((float)int_X, (float)int_Y + 1); v4 = SmoothedNoise((float)int_X + 1, (float)int_Y + 1); } else{ v1 = Noise(int_X, int_Y); v2 = Noise(int_X + 1, int_Y); v3 = Noise(int_X, int_Y + 1); v4 = Noise(int_X + 1, int_Y + 1); } i1 = Interpolate(v1, v2, fractional_X); i2 = Interpolate(v3, v4, fractional_X); return Interpolate(i1, i2, fractional_Y); }