Jumat, 20 Maret 2009

Modul 3
LINGKARAN DAN ELLIPSE

Pada praktikum ini yang dilakukan adalah membuat sebuah project Lingkaran Mid point, seperti form yang ada di bawah ini :
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.

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 b
erdasarkan titik pusat dengan penambahan semua jalur disekeliling lingkaran. Algoritma ini diturunkan dari algoritma mid point untuk pembentukan garis.


Pembuatan Antarmuka:













Scrip Program :

Unit1.cpp

//---------------------------------------------------------------------------

#include 'vcl.h'

#pragma hdrstop

#include 'math.h'

#include 'stdlib.h'

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int tergambar, XC, YC, QX, QY;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormActivate(TObject *Sender)

{

Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

tergambar=false;

Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);


}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Image1MouseDown(TObject *Sender,

TMouseButton Button, TShiftState Shift, int X, int Y)

{

tergambar=true; XC=X; YC=Y;

}

//---------------------------------------------------------------------------

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;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,

TShiftState Shift, int X, int Y)

{

int R;

Button1Click(Sender);

tergambar=false;

QX=X; QY=Y;

R=int(sqrt(pow(XC-QX,2)+pow(YC-QY,2)));

if (RadioGroup1->ItemIndex==0)

{ CircleMidPoint(XC,YC,R); }


}

//---------------------------------------------------------------------------

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) 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

}

//---------------------------------------------------------------------------

void __fastcall TForm1::tampil(float x,float y, int k, int p)

{

{

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++)>

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)");

}

Unit1.h

#include 'Controls.hpp'

#include 'StdCtrls.hpp'

#include 'Forms.hpp'

#include 'ExtCtrls.hpp'

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

TRadioGroup *RadioGroup1;

TButton *Button1;

TButton *Button2;

TImage *Image1;

void __fastcall Button1Click(TObject *Sender);

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 tampil(float x,float y, int k, int p);

void __fastcall Button2Click(TObject *Sender);

void __fastcall judul(float x,float y, int k, int p);

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


OUTPUT :


Tidak ada komentar: