TITIK DAN GARIS
Dasar Teori
PERSAMAAN GARIS
Persamaan garis menurut koordinta Cartesian adalah y=mx + b dimana m adalah slope / kemiringan garis yang di bentuk dari dua titik, yaitu (x1,y1)n dan (X2,Y2). Untuk penambahan x sepanjang garis yaitu dx akan mendapatkan penambahan y sebesar : dy =m.dx
ATRIBUT
Atribut dasar untuk garis lurus adalah type (tipe), width (tebal) dan color (warna). Dalam beberapa paket apliksi grafik, garis ditampilkan dengan menngunakan pilihan pen atau brush. Berikut ini dibicarakan bagaimana fungsi garis dapat mengkomodasi bermacam – macem spesifikasi atribut.
TIPE GARIS
Garis mempunyai beberapa linetype (tipe garis) diantaranya solid line ( garis tebal ), dashed line (garis putus), dan dotted line ( garis titik – titik).
Program di bawah ini menggambarkan penggunaan perintah linetype
#include
#pragma hdrstop
#include
#include
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int X1,X2,Y1,Y2;
int tergambar;
//---------------------------------------------------------------------------
__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::DDA(int xa,int ya,int xb,int yb)
{ int dx,dy,step,k;
float Xincrement,Yincrement,x,y;
xa=10;ya=10;xb=17;yb=16;
dx = xb-xa;
dy = yb-ya;
x=(float)xa;
y=(float)ya;
if (abs(dx)>abs(dy))
{ step = (abs(dx));}
else
{ step = (abs(dy)); };
Xincrement=(float)dx/step;
Yincrement=(float)dy/step;
Image1->Canvas->Pixels[int (x)][int (y)]=clBlack;
judul(x,y);
for (k=0;k<=step;k++)
{
x+=Xincrement;
y+=Yincrement;
Image1->Canvas->Pixels[int(x)][int(y)]=clBlack;
tampil(x,y,k);
}
}
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
tergambar=true; X1=X; Y1=Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
{
Button1Click(Sender);
tergambar=false;
X2=X; Y2=Y;
if (RadioGroup1->ItemIndex==0)
{DDA(X1,Y1,X2,Y2);
}
};
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *
Sender)
{
tergambar=false;
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
}
void __fastcall TForm1::judul(float x,float y)
{
char tampilX[20],tampilY[20];
int xt=200, yt=15, kt=2;
//Menampilkan bilangan asli tanpa pembulatan
_gcvt(x,4,tampilX);
_gcvt(y,4,tampilY);
Image1->Canvas->TextOut(xt-50, (kt-1)*yt,"k");
Image1->Canvas->TextOut(xt, (kt-1)*yt,"x");
Image1->Canvas->TextOut(xt+50, (kt-1)*yt,"y");
Image1->Canvas->TextOut(xt, kt*yt,tampilX);
Image1->Canvas->TextOut(xt+50, kt*yt,tampilY);
Image1->Canvas->TextOut(xt+100, (kt-1)*yt,"(x bulat, y bulat)");
//Menampilkan bilangan yang digunakan untuk pe
mbulatan
_gcvt(x,2,tampilX);
_gcvt(y,2,tampilY);
Image1->Canvas->TextOut(xt+100, kt*yt,"(");
Image1->Canvas->TextOut(xt+120, kt*yt,tampilX);
Image1->Canvas->TextOut(xt+150, kt*yt,",");
Image1->Canvas->TextOut(xt+160, kt*yt,tampilY);
Image1->Canvas->TextOut(xt+190, kt*yt,")");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::tampil(float x,float y,int k)
{
char tampilX[20],tampilY[20],tampilK[20];
int xt=200, yt=15;
k +=3;
//Menampilkan bilangan asli tanpa pembulatan
_gcvt(x,4,tampilX);
_gcvt(y,4,tampilY);
Image1->Canvas->TextOut(xt, k*yt,tampilX);
Image1->Canvas->TextOut(xt+50, k*yt,tampilY);
//Menampilkan bilangan yang digunakan untuk pembulatan
_gcvt(x,2,tampilX);
_gcvt(y,2,tampilY);
_gcvt(k-3,10,tampilK);
//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,")");
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
dengan hasil output :
