Praktikum Grafika (Pertemuan 3)

pada perteman ini kita membahas circle min point...

buat formnya seperti ini...







truz isi source codenya seperti ini...

#include Berfungsi sebagai library atau perpustakaan nya. Fungsi ini sama dengan yang digunakan oleh bahasa C++..

#include Library / perpustakaan yang memiliki fungsi sebagai matematika / perhitungan.

#pragma hdrstop

#include “Unit1.h” Library / perpustakaan untuk memanggil Unit1.h



//————————————————————————-

#pragma package(smart_init)

#pragma resource “*.dfm”

TForm1 *Form1;

int tergambar, XC, YC,QX,QY; /Fungsi XC, YC, QX, QY yang bertipe integer./



//————————————————————————-__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//————————————————————————-

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Close();

}

//————————————————————————-

void __fastcall TForm1::FormActivate(TObject *Sender)

{

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

}

Ini source pada FormActive yang mana befungsi untuk memfungsikan TImage serta memberikan fungsi agar dapat dilakukan penimpaan namun gambar tidak tertutup sehingga gambar sebelumnya masih terlihat.



//————————————————————————-

void __fastcall TForm1::Button1Click(TObject *Sender)

{

tergambar = false;

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

}

Pada listing diatas mengaktifkan untuk TForm1 serta mengaktifkn Formactivate pada TForm1 yang sudah dideklarasikan sebelumnya dengan atribut Tergambar dengan Boolean false. Selanjuntya menggunakan Image1 menggunakan Canvas menggunakan fungsi Rectangle untuk membuat bentuk segiempat sesuai dengan Image1 dan ukuran yang sudahh ditentukan.



//————————————————————————-

void __fastcall TForm1::Image1MouseDown(TObject *Sender,

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

{

tergambar = true;

XC=X;

YC=Y;

}

Pada listing diatas mengaktifkan untuk TForm1 serta mengaktifkan MouseDown pada TForm1 yang sudah dideklarasikan secara otomatis oleh C++ Builder selanjutnya menjalankan fungsi untuk Boolean True jika bernilai true maka MoveTo menentukan posisi awal. XC didefinisikan dengan simbol X, dan YC didefinisikan dengan simbol 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+Y]=clBlack;

Image1->Canvas->Pixels[XC-Y][YC+Y]=clBlack;

Image1->Canvas->Pixels[XC+Y][YC-Y]=clBlack;

Image1->Canvas->Pixels[XC-Y][YC-Y]=clBlack;

}

Untuk membentuk garis berupa lingkaran yang disesuaikan dengan perhitungan algoritma garis.



//————————————————————————-

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

}

Pada source ini hanya berfungsi memberikan event pada radiogroup yang berisikan radiogroup yaitu untuk menerima eksekusi dari EllipseMidPoint

//————————————————————————-

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::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)”);

}

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;

_gcvt(x,7,tampilX);

_gcvt(y,7,tampilY);

_gcvt(p,7,tampilPk);

if(k==0)

{ for (i=0; i<20; i++) { tampilK[i]=”; }}

else

{ _gcvt(k-1,10,tampilK); }

k=k+2;

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

}

}


maka akan muncul tampilan program




dan jika mid pointnya di tandai maka akan muncul seperti ini....

0 Comments:

Post a Comment



Posting Lebih Baru Posting Lama Beranda