Perlについての質問箱 52箱目
■ このスレッドは過去ログ倉庫に格納されています
0190デフォルトの名無しさん
2012/05/26(土) 22:02:45.21一応全て自分で考えて書いた物です。(なぜ1日で分からなくなるんだ?)。
数学的知識が必要と思われます。誰か解説して下さい。
※書き込むために全書くスペースを使ってます。コピーで動作しません。
my ($xx, $yy, $rr_2) = (256, 256, 253); #xとyは円の中心位置。rは半径。
foreach my $rr ( 0 .. $rr_2){ #0から指定された半径の大きさの円までを全て描く
foreach my $vv ( 0 .. int ($rr / 1.4142 + 0.5) ){ #1.4140 < n < 1.4146, nは不明数値を少なくすれば問題は起きない。
my $vv2 = int( sqrt(($rr ** 2) - ($vv ** 2)) +0.5 ); #1pixづつずらして計算する要素
#1/8づつ円周を描画
$::image->[$xx + $vv]->[$vv2 + $yy] = 2; #x軸をずらした場合のyの位置を描画
$::image->[$xx - $vv]->[$vv2 + $yy] = 3;
$::image->[$xx + $vv]->[0 - $vv2 + $yy] = 4;
$::image->[$xx - $vv]->[0 - $vv2 + $yy] = 5;
$::image->[$vv2 + $xx]->[$yy + $vv] = 6; #y軸をずらした場合のxの位置を描画
$::image->[$vv2 + $xx]->[$yy - $vv] = 7;
$::image->[0 - $vv2 + $xx]->[$yy + $vv] = 8;
$::image->[0 - $vv2 + $xx]->[$yy - $vv] = 9;
}
}
半径を1pxずつずらして指定の大きさまでの円を重ねて書くプログラムです。動作します。
数学的知識が全然ないまま手探りで作りました。質問事項は三つです。
1.4142が2の平方根に見えます。自分で探し出した数値なんですかこれはなんですか?
$vvはなにを意味してますか?
$vv2はなんですか?
自分で書いたコメントがついてるにも関わらず、すでにコメントの意味がわからないです。
プログラムの全容が必要なら全部書きますが、分からない箇所はここだけです。
■ このスレッドは過去ログ倉庫に格納されています