in reply to [OT] Normalizing the return result of an exponential formula
Maybe I'm misunderstanding, but why not simply return the max value when the distance falls within the radius, and apply the dropoff to what falls outside? In code:
sub boost { my ($dist, $imp, $rad, $drop) = @_; if ($dist <= $rad) { return $imp; } else { return $imp / ($dist - $rad + 1) ** $drop; } } my $imp = 1000; my $rad = 125; my $drop = 0.5; for (map 2**$_, 4..13) { my $boost = boost($_, $imp, $rad, $drop); my $bar = "@" x ($boost/($imp*0.02)); printf "%6d %s %.1f\n", $_, $bar, $boost; } __END__ 16 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1000.0 32 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1000.0 64 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1000.0 128 @@@@@@@@@@@@@@@@@@@@@@@@@@@@ 577.4 256 @@@@ 87.4 512 @@ 50.8 1024 @ 33.4 2048 @ 22.8 4096 15.9 8192 11.1
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: [OT] Normalizing the return result of an exponential formula
by clinton (Priest) on Apr 14, 2011 at 17:46 UTC |