Modul GK Praktik OK

Preview:

Citation preview

  • DDADDADDADDA Halaman Halaman Halaman Halaman 1111

    PEMROGRAMAN GRAFIK

    1. Perintah Dasar Grafik

    Initgraph()

    Fungsi yang digunakan untuk membuka sistem grafik.

    Bentuk : void far initgraph(int far *kendaligraf int far *modegraf, int far *path);

    Keterangan:

    *kendaligraf adalah pointer yang menunjuk ke data bertipe int. Nilai yang

    ditunjuk:

    Konstanta simbolis Nilai Kontanta simbolis Nilai

    DETECT 0 IBM8514 6

    CGA 1 HERCMONO 7

    MCGA 2 ATT400 8

    EGA 3 VGA 9

    EGA64 4 PC3270 10

    EGAMONO 5

    *modegraf berisi konstanta simbolis atau nilai dari mode grafik yang digunakan.

    Dengan memberikan DETECT kepada kendali grafik, maka initgraph() akan

    melakukan pemilihan terhadap pengendali grafik dan menentukan mode grafik

    dengan resolusi tertinggi pada kendali grafik yang diaktifkan.

    *path menyatakan nama direktori temapat file *.bgi (pengendali grafik) berada.

    Seandainya, file *.bgi berada pada direktori kini (current direktory), string yang

    ditunjuk path cukup diisi dengan string kosong ().

    closegraph()

    Fungsi yang digunakan untuk menutup sistem grafik dan mengembalikan ke

    mode layar yang aktif sebelum pemanggilan initgraph().

    Bentuk : void far closegraph(void);

    Dengan adanya pemanggilan fungsi ini, memori yang digunakan untuk

    menyimpan data pengendali grafik yang dimuat sewaktu initgraph() akan

    dibebaskan kembali.

    putpixel()

    Fungsi yang digunakan untuk menggambar pixel pada koordinat screen (x,y).

    Bentuk : void far putpixel(int x, int y, int wrn);

    Warna piksel dapat diatur melalui parameter wrn. No Nama Warna No Nama Warna

    0 black 8 darkGray

    1 blue 9 lightBlue

    2 green 10 lightGreen

    3 cyan 11 lightCyan

    4 red 12 lightRed

    5 magenta 13 lightMagenta

    6 brown 14 yellow

    7 lightGray 15 white

    Contoh program: /* nama file : titik1.c */ #include main() { int gd=DETECT,gm; initgraph(&gd,&gm,""); putpixel(200,100,2); while( !kbhit() ); closegraph(); }

    Output dari program di atas adalah sebuah titik yang ditampilkan pada koordinat

    x=200 dan y=100 dengan warna=2 (hijau).

  • DDADDADDADDA Halaman Halaman Halaman Halaman 2222

    getpixel()

    Fungsi yang digunakan untuk memperoleh kode warna dari suatu piksel yang

    berada pada koordinat (x,y).

    Bentuk : unsigned far getpixel(int x,int y);

    Contoh program: /* nama file : titik2.c */ #include #include #define JUMLAH 500 typedef struct koordinat { int x; int y; } POSISI_BINTANG; POSISI_BINTANG larik[JUMLAH]; void posisi_awal_bintang(void); void bintang_berkedip(void); main() { int gd=DETECT,gm; initgraph(&gd,&gm,""); posisi_awal_bintang(); while(!kbhit()) bintang_berkedip(); closegraph(); } void posisi_awal_bintang(void) { int i; srand(100); /* nilai awal bagi pembangkit bil acak */ for(i=0; i

  • DDADDADDADDA Halaman Halaman Halaman Halaman 3333

    Menggambar Garis Menggunakan UDF (User Define Function)

    Garis Horizontal

    Garis horizontal adalah garis yang membentang secara paralel dengan sumbu x

    dengan asumsi titik p1 pada koordinat x1 lebih kecil dari pada x2 pada p2,

    sedangkan y1 dan y2 konstan.

    Algoritma:

    Tentukan titik awal p1 dan titik akhir p2

    Periksa posisi sumbu (koordinat):

    Jika titik awal < titik akhir maka lakukan inkrementasi sumbu x dari titik awal

    sampai titik akhir. Kalau tidak maka lakukan dekrementasi sumbu x dari titik

    awal sampai titik akhir.

    Tampilkan garis menggunakan nilai parameter koordinat yang telah dihitung.

    Contoh program: /* Nama File : garis_h.c */ #include void garis_h(int x1, int y, int x2); main() { int gd=0, gm; initgraph(&gd, &gm, ""); setcolor(1); setbkcolor(15); garis_h(100,50,180); garis_h(100,70,20); while(!kbhit()); closegraph(); } void garis_h(int x1, int y, int x2) { int i; if(x1

  • DDADDADDADDA Halaman Halaman Halaman Halaman 4444

    Garis Bebas

    Umumnya persamaan garis lurus pada koordinat kartesius diwujudkan dalam

    persamaan: y=m.x+b

    Jika dimisalkan pada dua titik (x0,y0 dan x1,y1) akan dibuat sebuah garis lurus,

    kita dapat menentukan nilai m dan b dengan persamaan berikut:

    01

    01

    xx

    yym

    = b = y1 m.x1

    algoritma untuk menggambarkan garis pada komputer didasarkan pada dua

    persamaan di atas. Dimana m adalah gradien atau kemiringan garis tersebut.

    Algoritma Digital Differential Analyzer (DDA)

    Prinsip algoritma ini adalah mengambil nilai integer terdekat dengan jalus

    garis berdasarkan atas sebuah titik yang telah ditentukan sebelumnya (titik

    awal garis).

    Algoritma pembentukan garis DDA:

    - Tentukan dua titik yang akan dihubungkan dalam pembentukan garis

    - Tentukan salah satu titik sebagai awal (x0,y0) dan titik akhir (x1,y1)

    - Hitung dx=x1-x0, dan dy=y1-y0

    - Tentukan langkah, yaitu dengan cara jarak maksimum jumlah penambahan

    nilai x maupun nilai y, dengan cara:

    Bila nilai absolut dari dx lebih besar dari absolut dy, maka

    langkah=absolut dari dx, tetapi bila tidak maka langkah=absolut dari dy

    - Hitung penambahan koordinat pixel yaitu x_increment=dx/langkah, dan

    y_increment=dy/langkah

    - Koordinat selanjutnya (x+x_increment, y+y_increment)

    - Posisi pixel pada layar ditentukan dengan pembulatan nilai koordinat

    tersebut

    - Ulangi nomor 6 dan 7 untuk menentukan posisi pixel selanjutnya, sampai

    x=x1 dan y=y1

    Contoh Garis dengan algoritma DDA: /* Nama File : garis_dda.c */ #include void garis_dda(int xstart, int ystart, int xend, int yend); main() { int gd=0, gm; initgraph(&gd, &gm, ""); setbkcolor(15); garis_dda(100,100,200,100); garis_dda(200,100,200,200); garis_dda(200,200,100,200); garis_dda(100,200,100,100); garis_dda(100,100,200,200); garis_dda(200,100,100,200); while(!kbhit()); closegraph(); } void garis_dda(int xstart, int ystart, int xend, int yend) { int step, k, dx, dy, x_inc, y_inc, x, y; dx=xend-xstart; dy=yend-ystart; x=xstart; y=ystart; if(abs(dx)>abs(dy)) step=abs(dx); else step=abs(dy); x_inc=dx/step; y_inc=dy/step; putpixel(x,y,2); for(k=1; k

  • DDADDADDADDA Halaman Halaman Halaman Halaman 5555

    Lanjutan perintah dasar grafik:

    moveto()

    Fungsi yang digunakan untuk memindahkan petunjuk gambar ke posisi (x,y).

    Bentuk : void far moveto(int x, int y);

    moverel()

    Fungsi yang digunakan untuk memindahkan petunjuk gambar secara relatif

    terhadap posisi semula. Seandainya posisi semula adalah (xo, yo), maka penunjuk

    gambar akan berada pada posisi (xo+dx, yo+dy).

    Bentuk : void far moverel(int dx, int dy);

    lineto()

    Fungsi yang digunakan untuk menggambar garis dari posisi penunjuk gambar

    sedang berada ke posisi (x, y).

    Bentuk : void far lineto(int x, int y);

    linerel()

    Fungsi yang digunakan untuk menggambar garis secara relatif dari titik terakhir

    kali ke titik yang dituju (hasil penambahan titik terakhir dengan titik (dx, dy).

    Bentuk : void far linerel(int dx, int dy);

    Contoh program: /* Nama File : garis1.c */ #include main() { int gd=0, gm; initgraph(&gd, &gm, ""); moveto(70, 80); lineto(130, 80); lineto(100,20); linerel(-30,60); while(!kbhit()); closegraph(); }

    line()

    Fungsi yang digunakan untuk menggambar garis dari posisi (x1, y1) sampai

    dengan posisi (x2, y2).

    Bentuk : void far line(int x1, int y1, int x2, int y2);

    Contoh Program: /* Nama File : garis2.c */ #include main() { int gd=0, gm, i; initgraph(&gd, &gm, ""); for(i=0; i

  • DDADDADDADDA Halaman Halaman Halaman Halaman 6666

    Contoh Program: /* Nama File : garis1.c */ #include main() { int gd=0, gm; int i, bentuk_grs, ketebalan; int pola_buatan=0xAAAA; initgraph(&gd, &gm, ""); setcolor(1); setbkcolor(15); for(i=0; i

  • DDADDADDADDA Halaman Halaman Halaman Halaman 7777

    line()

    Fungsi yang digunakan untuk memebuat gambar kontak.

    Bentuk : void far rectangle(int x1, int y1, int x2, int y2);

    (x1,y1) menyatakan pojok kiri atas kotak.

    (x2,y2) menyatakan pojok kanan bawah kotak.

    Contoh Program: /* Nama File : kotak1.c */ #include main() { int gd=DETECT,gm,i; initgraph(&gd,&gm,""); setcolor(1); setbkcolor(15); rectangle(50,100,100,150); rectangle(110,50,160,150); rectangle(170,100,220,150); while(!kbhit()); closegraph(); }

    drawpoly()

    Fungsi yang digunakan untuk memebuat gambar poligon.

    Bentuk : void far drawpoly(int jumtitik, int far *himptitik);

    Keterangan:

    - Jumtitik menyatakan jumlah titik dari poligon. Namun yang perlu diketahui,

    untuk membentuk poligon yang tertutup, jumlah titik harus diisi dengan

    jumlah titik poligon plus satu.

    - *himptitik diisi dengan sederetan sepasang bilangan bulat (tipe int) yang

    masing-masing menyatakan pada posisi koordinat titik poligon. Untuk

    membentuk poligon tertutup, data koordinat terakhir haruslah sama dengan

    data koordinat pertama.

    Contoh program: /* Nama File : kotak1.c */ #include #define JUMTITIK 11 struct titik{ int x; int y;}; main() { int gd=DETECT,gm,i; static struct titik posisi[JUMTITIK]= { 105, 85, 155, 85, 155, 100, 160, 100, 160, 65, 180, 65, 195, 85, 210, 85, 210, 110, 105, 110, 105, 85 }; initgraph(&gd,&gm,""); setcolor(2); setbkcolor(15); drawpoly(JUMTITIK, (int far *) posisi); while(!kbhit()); closegraph(); }

    arc()

    Fungsi yang digunakan untuk memebuat busur lingkaran.

    Bentuk : void far arc(int x, int y, int sdtawal, int sdtakhir, int radius);

    Keterangan:

    - (x, y) merupakan koordinat pusat dari busur lingkaran.

  • DDADDADDADDA Halaman Halaman Halaman Halaman 8888

    - Sdtawal dan Sdtakhir merupakan sudut awal dan akhir dari busur (dalam

    satuan derajat yang berlawanan dengan arah jarum jam 0-360o). Posisi angka

    3 pada jam menyatakan sudut 0o

    - Radius merupakan jari-jari dari busur.

    ellipse()

    Fungsi yang digunakan untuk memebuat busur elips.

    Bentuk : void far ellipse(int x, int y, int sdtawal, int sdtakhir, int radx, int rady);

    Circle()

    Fungsi yang digunakan untuk memebuat lingkaran.

    Bentuk : void far ellipse(int x, int y, int radius);

    Contoh Program: /* Nama file : BusurLE.c */ #include main() { int gd=0,gm; struct arccoordstype databusur; initgraph(&gd,&gm,""); setcolor(2); setbkcolor(15); line(100,100,100,120); arc(100,100,0,180,50); getarccoords(&databusur); line(databusur.xstart,databusur.ystart,

    databusur.xend,databusur.yend); arc(100,200,0,180,50); ellipse(100,300,0,180,70,35); arc(300,200,0,360,50); ellipse(300,300,0,360,70,35); circle(300,100,30); getch(); closegraph(); }

Recommended