範囲 (-38, -38) - (80, 80)をプロットした |
ブレッドマンの中心部を切り出し。背景は黒にした |
Gingerbreadman map(ジンジャーブレッドマン) は以下の式で計算されるカオスマップです。
Xn = 1-Yn-1+|Xn-1|初期値は-20から20の間です。
Yn=Xn
色付けは初期値ごとに適当に決めました。
FractMus’ countersで決める方法もあるようです。 つまり、計算した座標のベクトル(sqrt(x*x+y*y))を計算し、それで色を決める方法らしいです。
効率や恰好などを全然考えていませんが、一応Perlのソースを以下にコピーしました。
use strict;
use GD::Simple;
my @init = (7.5, -7.2, -39.6679279211404,-39.6679279211404,81.6679279211404,81.6679279211404);
my $x0 = $init[0];
my $y0 = $init[1];
my $max=5000;
my $maxTry = 1000;
my $i = 0;
my $minx = $init[2];
my $miny = $init[3];
my $maxx = $init[4];
my $maxy = $init[5];
sub transform {
my @ret = ();
my ($x, $y, $minx, $miny, $maxx, $maxy, $w, $h) = @_;
$ret[0] = int (($x-$minx)*$w/($maxx-$minx));
$ret[1] = int (($y-$miny)*$h/($maxy-$miny));
return @ret;
}
my $imgW = 2048;
my $imgH = 2048;
my $imgWOut = $imgW;
my $imgHOut = $imgH;
# create a new image
my $img = GD::Simple->new($imgWOut,$imgHOut);
# draw a red rectangle with blue borders
$img->bgcolor('black');
$img->fgcolor('green');
my $black = $img->colorAllocate(0,0,0);
my $green = $img->colorAllocate(0,255,0);
$img->rectangle(0,0,$imgWOut,$imgHOut,$black);
$img->fill(50,50,$black);
my @colors = ();
for ($i=1; $i<=4; $i++) {
my $val = $i*64%256;
$colors[$i*6+0] = $img->colorAllocate($val, 0, 0);
$colors[$i*6+1] = $img->colorAllocate( 0, $val, 0);
$colors[$i*6+2] = $img->colorAllocate( 0, 0, $val);
$colors[$i*6+3] = $img->colorAllocate($val, $val, 0);
$colors[$i*6+4] = $img->colorAllocate($val, 0, $val);
$colors[$i*6+5] = $img->colorAllocate( 0, $val, $val);
}
$img->transparent($black);
my $i = 0;
my $j = 0;
for ($j=0; $j<$maxTry; $j++) {
for ($i=0; $i<$max; $i++) {
my $x1 = 1-$y0+abs($x0);
my $y1 = $x0;
my ($xt, $yt) = transform($x1, $y1, $minx, $miny, $maxx, $maxy, $imgW, $imgH);
$img->setPixel($xt, $yt, $colors[$j%25]);
$x0 = $x1;
$y0 = $y1;
}
$x0 = rand 40;
$x0 -= 20;
$y0 = rand 40;
$y0 -= 20;
}
#output the image
open( OUT, "> gingerBreadMan.png") or die( "Cannot open file: graph.jpg" );
binmode OUT;
print OUT $img->png;
List of chaotic maps
Part 2. Chaotic Maps
0 件のコメント:
コメントを投稿