LINGKARAN DAN ELLIPSE
Pada praktikum ini yang dilakukan adalah membuat sebuah project Lingkaran Mid point, seperti form yang ada di bawah ini :
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 berdasarkan 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:
Posting Komentar