a. ALGORITMA LINGKARAN 8 TITIK SIMETRIS
Proses pembentukan lingkaran dengan algoritma ini dapat dilakukan dengan menentukan suatu titik awal. Bila titik awal pada lingkaran (x,y) maka terdapat tiga posisi lain, sehingga dapat diperoleh delapan titik. Dengan demikian sebenarnya hanya diperlukan untuk menghitung segmen 450 dalam menentukan lingkaran selengkapnya.
b. ALGORITMA LINGKARAN TITIK TENGAH (MID POINT)
Algoritma mid point juga disebut algoritma lingkaran Bressenham. Bressenham mengembangkan generator lingkaran yang cukup efisien. Algoritma yang digunakan membentuk semua titik berdasarkan titik pusat dengan penambahan semua jalur disekeliling lingkaran. Algoritma ini diturunkan dari algoritma mid point untuk pembentukan garis.
interface:
Source code Program :
Unit1.cpp
//---------------------------------------------------------------------------
#include
#pragma hdrstop >> library yang sudah disediakan oleh Borland C++ Builder
#include
#include
#include "Unit1.h" >>membaca file Unit1.h
//---------------------------------------------------------------------------
#pragma package(smart_init) >> library yang sudah disediakan oleh Borland C++ Builder
#pragma resource "*.dfm">>library yang sudah disediakan oleh Borland C++ Builder
TForm1 *Form1;
int tergambar, XC,YC,QX,QY; >> deklarasi variabel tergambar, XC,YC,QX,QY yang bertipe integer
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
>> memanggil fungsi TForm1
//====================================================================
void __fastcall TForm1::FormActivate(TObject *Sender)
{
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
}
>>memanggil fungsi FormActivate untuk membuat objek dengan komponen canvas di Image1
//---------------------------------------------------------------------------
void __fastcall TForm1::BtCloseClick(TObject *Sender)
{
Close();
}
>>memanggil fungsi BtCloseClick untuk membaca fungsi close
//---------------------------------------------------------------------------
void __fastcall TForm1::BtBaruClick(TObject *Sender)
{
tergambar=false;
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
}
>>memanggil fungsi BtBaruClick untuk membuat objek dengan komponen canvas di Image1 dimana variabel tergambar bernilai false
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
tergambar=true; XC=X; YC=Y;
}
>> memanggil fungsi Image1MouseDown
//---------------------------------------------------------------------------
void __fastcall TForm1::CirclePlotpoint(int XC, int YC, int X, int Y)
{
Image1->Canvas->Pixels[XC+X][YC+Y]=clBlack;
Image1->Canvas->Pixels[XC-X][YC+Y]=clBlack;
Image1->Canvas->Pixels[XC+X][YC-Y]=clBlack;
Image1->Canvas->Pixels[XC-X][YC-Y]=clBlack;
Image1->Canvas->Pixels[XC+Y][YC+X]=clBlack;
Image1->Canvas->Pixels[XC-Y][YC+X]=clBlack;
Image1->Canvas->Pixels[XC+Y][YC-X]=clBlack;
Image1->Canvas->Pixels[XC-Y][YC-X]=clBlack;
}
>> memanggil fungsi CirclePlotpoint
//====================================================================
void __fastcall TForm1::CircleMidPoint(int XC, int YC,int R)
{int x,y,p,k=0;
R=10;
x=0; y=R; p=1-R;
judul((float)x,(float)y,k,p);
do
{
k++;
if (p<0) style=""> x=x+1; }
else
{ x=x+1; y=y-1; }
if (p<0) p="p+2*x+1;">
else { p=p+2*(x-y)+1; }
CirclePlotpoint(XC,YC,x,y);
tampil((float)x,(float)y,k,p);
} while (x
}
>> memanggil fungsi CircleMidPoint
//====================================================================
void __fastcall TForm1::tampil(float x,float y, int k, int p)
>> memanggil fungsi tampil
{
{
char tampilX[20],tampilY[20],tampilK[20],tampilPk[20];
int i,xt=200, yt=15;
//Menampilkan bilangan asli tanpa pembulatan
_gcvt(x,7,tampilX);
_gcvt(y,7,tampilY);
_gcvt(p,7,tampilPk);
if (k==0) { for (i=0; i<20;i++) style=""> tampilK[i]='\0'; } }
else { _gcvt(k-1,10,tampilK); }
k=k+2;
//Menampilkan koordinat X dan Y
Image1->Canvas->TextOut(xt-50, k*yt,tampilK);
Image1->Canvas->TextOut(xt+100, k*yt,"(");
Image1->Canvas->TextOut(xt+120, k*yt,tampilX);
Image1->Canvas->TextOut(xt+150, k*yt,",");
Image1->Canvas->TextOut(xt+160, k*yt,tampilY);
Image1->Canvas->TextOut(xt+190, k*yt,")");
Image1->Canvas->TextOut(xt, k*yt,tampilPk);
}
}
//==================================================================
void __fastcall TForm1::judul(float x,float y, int k, int p)
{
int xt=200, yt=15, kt=2;
Image1->Canvas->TextOut(xt-50,(kt-1)*yt,"k");
Image1->Canvas->TextOut(xt, (kt-1)*yt,"pk");
Image1->Canvas->TextOut(xt+100, (kt-1)*yt,"(x k+1,y k+1)");
}
>> memanggil fungsi judul //================================================================
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
int R; >> pendeklarasian variabel R yang bertipe integer
BtBaruClick(Sender);
tergambar=false; >> variabel tergambar yang bernilai false
QX=X; QY=Y;
R=int(sqrt(pow(XC-QX,2)+pow(YC-QY,2)));
if (RadioGroup1->ItemIndex==0)
{ CircleMidPoint(XC,YC,R); }
}
>>memanggil fungsi Image1MouseUp
//---------------------------------------------------------------------------
Unit.h
>>File ini berisi event handler untuk mengatasi sebuah event dari komponen yang ditempatkan pada sebuah form.
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
#include
#include
#include
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TRadioGroup *RadioGroup1;
TImage *Image1;
TButton *BtBaru;
TButton *BtClose;
void __fastcall FormActivate(TObject *Sender);
void __fastcall CirclePlotpoint(int XC, int YC, int X, int Y);
void __fastcall CircleMidPoint(int XC, int YC,int R);
void __fastcall judul(float x,float y, int k, int p);
void __fastcall tampil(float x,float y, int k, int p);
void __fastcall BtCloseClick(TObject *Sender);
void __fastcall BtBaruClick(TObject *Sender);
void __fastcall Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y);
void __fastcall Image1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Tidak ada komentar:
Posting Komentar