2010年1月4日月曜日

SIN,COSの使い道。(GDで円形に図形を配置)

GDを使って、複数の円を、円状に描きだす、ということの必要があって取り組みました。

「どうやったらx座標,y座標を割り当てていけるだろう?」としばし悩み、高校時代に挫折したsin,cosをふと思い出しました。
さっそく調べると、PHPにはsin(),cos()という便利な関数があり、ネットで少々勉強したら、かなり便利なものと判明。
高校時代の挫折は、sin,cosの使い道が分からないことに大きな原因があったんだな、としみじみ。。。
今回、sin,cosでY座標、X座標を取得したい、という理由がはっきりしていたので、

やっとsin,cosの使い道が分かりました(笑)。


色々試して、以下のようなコードで、実験作第一号は無事表示。
ありがたや。。

そういえば、deg2rad()関数が必須でした。数値の角度からラジアン値に変換してくれるすぐれもの。この関数でやっと、30度ずつ描画、といった均等配置が実現しました。ありがたや。。


<?php

    $r=100;
    $img = imagecreate(500, 500);
    $bg=imagecolorallocate($img,0,0,0);

for($i=0;$i<12;$i++){
   $rad=deg2rad($i*30-90);
    $c=$i*20+15;
    $c2=255-$c;
    $y=$r*sin($rad);
    $x=$r*cos($rad);
    $y2=$y+200;
    $x2=$x+200;    
    $col=imagecolorallocate($img, $c2,$c, 0);    
    imagefilledellipse($img, $x2, $y2, 20, 20, $col);
} 

    header("Content-Type: image/png");
    imagepng($img);

?>

0 件のコメント:

コメントを投稿