52 const Int32 X =
static_cast<Int32
>(std::floor(x)) & 255;
53 const Int32 Y =
static_cast<Int32
>(std::floor(y)) & 255;
54 const Int32 Z =
static_cast<Int32
>(std::floor(z)) & 255;
60 const double u = fade(x);
61 const double v = fade(y);
62 const double w = fade(z);
64 const Int32 A = p[X] + Y, AA = p[A] + Z, AB = p[A + 1] + Z;
65 const Int32 B = p[X + 1] + Y, BA = p[B] + Z, BB = p[B + 1] + Z;
67 return lerp(w,
lerp(v,
lerp(u, grad(p[AA], x, y, z), grad(p[BA], x - 1, y, z)),
lerp(u, grad(p[AB], x, y - 1, z), grad(p[BB], x - 1, y - 1, z))),
68 lerp(v,
lerp(u, grad(p[AA + 1], x, y, z - 1), grad(p[BA + 1], x - 1, y, z - 1)),
69 lerp(u, grad(p[AB + 1], x, y - 1, z - 1), grad(p[BB + 1], x - 1, y - 1, z - 1))));