188 if($xSamplingRate === 0){
189 throw new \InvalidArgumentException(
"xSamplingRate cannot be 0");
191 if($zSamplingRate === 0){
192 throw new \InvalidArgumentException(
"zSamplingRate cannot be 0");
194 if($ySamplingRate === 0){
195 throw new \InvalidArgumentException(
"ySamplingRate cannot be 0");
197 if($xSize % $xSamplingRate !== 0){
198 throw new \InvalidArgumentCountException(
"xSize % xSamplingRate must return 0");
200 if($zSize % $zSamplingRate !== 0){
201 throw new \InvalidArgumentCountException(
"zSize % zSamplingRate must return 0");
203 if($ySize % $ySamplingRate !== 0){
204 throw new \InvalidArgumentCountException(
"ySize % ySamplingRate must return 0");
207 $noiseArray = array_fill(0, $xSize + 1, array_fill(0, $zSize + 1, []));
209 for($xx = 0; $xx <= $xSize; $xx += $xSamplingRate){
210 for($zz = 0; $zz <= $zSize; $zz += $zSamplingRate){
211 for($yy = 0; $yy <= $ySize; $yy += $ySamplingRate){
212 $noiseArray[$xx][$zz][$yy] = $noise->noise3D($x + $xx, $y + $yy, $z + $zz,
true);
217 for($xx = 0; $xx < $xSize; ++$xx){
218 for($zz = 0; $zz < $zSize; ++$zz){
219 for($yy = 0; $yy < $ySize; ++$yy){
220 if($xx % $xSamplingRate !== 0 or $zz % $zSamplingRate !== 0 or $yy % $ySamplingRate !== 0){
221 $nx = (int) ($xx / $xSamplingRate) * $xSamplingRate;
222 $ny = (int) ($yy / $ySamplingRate) * $ySamplingRate;
223 $nz = (int) ($zz / $zSamplingRate) * $zSamplingRate;
225 $nnx = $nx + $xSamplingRate;
226 $nny = $ny + $ySamplingRate;
227 $nnz = $nz + $zSamplingRate;
229 $dx1 = (($nnx - $xx) / ($nnx - $nx));
230 $dx2 = (($xx - $nx) / ($nnx - $nx));
231 $dy1 = (($nny - $yy) / ($nny - $ny));
232 $dy2 = (($yy - $ny) / ($nny - $ny));
234 $noiseArray[$xx][$zz][$yy] = (($nnz - $zz) / ($nnz - $nz)) * (
236 $dx1 * $noiseArray[$nx][$nz][$ny] + $dx2 * $noiseArray[$nnx][$nz][$ny]
238 $dx1 * $noiseArray[$nx][$nz][$nny] + $dx2 * $noiseArray[$nnx][$nz][$nny]
240 ) + (($zz - $nz) / ($nnz - $nz)) * (
242 $dx1 * $noiseArray[$nx][$nnz][$ny] + $dx2 * $noiseArray[$nnx][$nnz][$ny]
244 $dx1 * $noiseArray[$nx][$nnz][$nny] + $dx2 * $noiseArray[$nnx][$nnz][$nny]