From 82b612f0d39ad325ccd6f804783ca98053247e24 Mon Sep 17 00:00:00 2001 From: A1essandro Date: Mon, 16 May 2016 22:13:45 +0400 Subject: [PATCH] Improved logic of persistence --- demo/visual.php | 2 +- src/DiamondAndSquare.php | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/demo/visual.php b/demo/visual.php index 02cae10..9fe9ad1 100644 --- a/demo/visual.php +++ b/demo/visual.php @@ -6,7 +6,7 @@ $size = 8; -$gen->setPersistence(200); +$gen->setPersistence(1.8); $gen->setSize($size); $gen->setMapSeed(uniqid()); $map = $gen->generate(); diff --git a/src/DiamondAndSquare.php b/src/DiamondAndSquare.php index 6ca57b0..5843342 100644 --- a/src/DiamondAndSquare.php +++ b/src/DiamondAndSquare.php @@ -242,7 +242,9 @@ private function diamond($x, $y, $size, $offset) */ private function getOffset($stepSize) { - return (float)$stepSize / $this->size * mt_rand(-$this->getPersistence() / 2, $this->getPersistence() / 2); + $stepOffset = $stepSize / $this->size * mt_rand(-$this->size, $this->size); + $sign = $stepOffset < 0 ? -1 : 1; + return $sign * pow(abs($stepOffset), 1 / sqrt($this->getPersistence())); } /**