wikipedia 黄金比

imagemagickのconvertコマンドを勉強していたのは、
画像を手動で画像ソフトから作成するのではなく、
美しい(大きさ、彩度、色彩)バランスを計算した上で
プログラムから出力したい、と考えたからです。

美しい数式、という言葉からまっさきに連想できるのが
自分の中では、「黄金比」でした。というわけで、
wikipediaで勉強

黄金比(おうごんひ、En:Golden ratio, The Golden Mean/Rectangle)(=PHI)は、最も美しいとされる\mathbf{1}:{{\mathbf{1}+\mathbf{\sqrt5}}\over\mathbf{2}}。近似値は1:1.618、約5:8。線分a, bの長さで 2 つに分割するときに、a : b = b : (a + b) が成り立つように分割したときの比 a : b のことである。
今後、自動で画像作成しようとしたときに、よく使いそうな計算なので、
perlでやっつけスクリプトを書いてみた。
#!/usr/bin/perl                                                                                                                                             
use strict;
use warnings;
use Data::Dumper;
use Getopt::Long;
sub golden_ratio { return (1.618, 1) } # FIXME:                                                                                                             
GetOptions('-len=s'  => \$::opts{length},
           '-type=s' => \$::opts{type});
if($::opts{type} ne 'all'   &&
   $::opts{type} ne 'long'  &&
   $::opts{type} ne 'short'){
    warn 'set type "all"';
    $::opts{type} = 'all';
}
my ($l, $s) = golden_ratio();
if($::opts{type} eq 'all'){
    print "all:\t".   $::opts{length}. "\n";
    print "long:\t".  $::opts{length}*$l/($l+$s). "\n";
    print "short:\t". $::opts{length}*$s/($l+$s). "\n";
}
elsif($::opts{type} eq 'long'){
    print "all:\t".   $::opts{length}*($l+$s)/$l. "\n";
    print "long:\t".  $::opts{length}. "\n";
    print "short:\t". $::opts{length}*$s/$l. "\n";
}
elsif($::opts{type} eq 'short'){
    print "all:\t".   $::opts{length}*($l+$s)/$s. "\n";
    print "long:\t".  $::opts{length}*$l/$s. "\n";
    print "short:\t". $::opts{length}. "\n";
}else{die}
起動時の引数に以下のように指定する
$ ./calc_golden_ratio.pl --len=1000 --type=short
$ ./calc_golden_ratio.pl --len=1618 --type=long
$ ./calc_golden_ratio.pl --len=2618 --type=all
--lenが計算のもとになる値、--typeがどこの長さかを指定する。
all=全体の長さを2分割したいときに指定
long=長辺の長さを指定
short=短辺の長さを指定

黄金比の謎 美の法則を求めて   [本]

人気の投稿