Beranda > Graphics > Spirograph

Spirograph

Spirograph merupakan sebuah karya seni yang memerlukan tingkat ketelitian yang tinggi dalam menggambarnya ( khususnya apabila digambar manual ). Apabila anda ingat masa sekolah SD dulu banyak tukang mainan yang menjual penggaris dengan tiga atau empat lubang besar, kemudian untuk menggambarkannya anda harus memutarkan salah satu roda gigi yang sudah tersedia didalamnya.

Yach itulah sepintas tentang spirograph. Kini Anda pun dapat mencoba membuat kodenya , Berikut ini adalah kode untuk membuat spirograph :

Procedure TForm1.Spirograph( O_Besar, O_Kecil, TitikSpiro, Putaran : integer );

var

centerSm , centerBig : Tpoint;

Bhand : integer ;

sudut, derajat, DerPerMove : real;

KelKecil, KelBesar : Real ;

i, titikX, TitikY : integer ;

putar : Integer ;

begin

// buat perhitungan awal

kelBesar:=O_Besar*pi;

kelKecil:=O_Kecil*pi;

sudut:=( 360 / kelBesar )*kelKecil;

derajat:=sudut / 360 ;

centerBig.X:=O_Besar div 2;

centerBig.Y:=O_besar div 2;

BHand:=(O_besar div 2)-(O_Kecil div 2);

DerPerMove:=0;

putar:=360 * putaran;

Image1.Picture.Bitmap.Width:=O_Besar;

Image1.Picture.Bitmap.Height:=O_besar;

// Proses gambar

with Image1.Picture.Bitmap.Canvas DO

Begin

MoveTo(CenterBig.X, centerBig.y-(Bhand+titikSpiro));

for i:=0 to putar do

begin

// tentukan titik pusat lingkaran kecil

CenterSm.X:=Trunc(centerBig.X+Bhand* cos(((i*derajat)-90)*pi /180));

centerSm.Y:=trunc(Centerbig.Y+Bhand* Sin(((i*derajat)-90)*pi / 180));

// tentukan titik gambar

titikX:=Trunc(CenterSM.X+titikSpiro* cos(((360-i) – 90)*pi / 180));

TitikY:=Trunc(centerSm.Y+TitikSpiro* Sin(((360-i )- 90)*pi / 180));

lineto(titikX, Titiky);

moveto(Titikx, Titiky);

DerPermove:=DerPerMove+derajat;

If (DerPermove>=360) then DerPermove:=derpermove-360 else      derpermove:=derPerMove;

end;

end;

end;

Gbr. Spirograph

Contoh penggunaan kode.

procedure TForm1.Button1Click(Sender: TObject);

begin

Spirograph(300, 80, 40, 30);

end;

Keterangan :

300 adalah nilai diameter besar

80 adalah Nilai diameter kecil

40 adalah Nilai titik spiro ( Jarak antara titik pusat lingkaran kecil ke titik spiro)

30 adalah jumlah putaran diameter kecil untuk mengelilingi diameter besar.

Diusahakan agar nilai titik spiro tidak lebih besar dari nilai jari-jari lingkaran kecil,

Kategori:Graphics Tag:
  1. Novi muth
    Agustus 2, 2010 pukul 6:00 am

    Asslkm, Wah keren banget, makasih yah artikelnya.. posting artikel untuk program lain donks

  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: