Rabu, 17 Juli 2019

Library Graph pada Bahasa C++

Membuat gambar 2D dengan Library Graph pada Bahasa C++

Konsep dasar Grafik Komputer
Grafik Komputer adalah ilmu yang mempelajari rancang bangun berorientasi geometri yang diaplikasikan pada komputer, biasanya data yang digunakan berbentuk 3 dimensi. Grafik komputer saat ini digunakan untuk virtual reality, animasi & kartun 2D, games, dll.
Sistem koordinat
Pada umunya sistem koordinat yang digunakan dalam dunia nyata (matematika, fisika, etc) menggunakan sistem koordinat cartesius untuk merepresentsikan dunia 2 dimensi (2D). Hal ini tidak berbeda dengan penggunaan sistem koordinat pada komputer. Namun ada sedikit perbedaan dalam referensi titik pusat (origin) yang digunakan dan arah dari sumbu-y yang digunakan.
Pada sistem koordinat normal titik pusat (0,0) tampak berada pada bagian tengah sebuah diagram cartesius diantara perpotongan 4 sumbu. Sedangkan pada sistem koordinat komputer titik pusat (0,0) terletak pada pojok kiri atas layar monitor komputer, sehingga titik yang berada pada sumbu –x dan sumbu –y tidak akan tampak pada layar monitor komputer.
Pixel (picture element)
Layar monitor komputer dibangun (terdiri) dari sekumpulan pixel yang menyala dan mati untuk memvisualisasikan grafik pada komputer (termasuk teks, citra, dan lain-lain). Apabila dihubungkan dengan sistem koordinat diatas, maka setiap pixel yang ada di layar monitor diwakili oleh suatu koordinat, dan layar monitor memiliki resolusi atau jumlah pixel yang ada di layar.
Sebagai contoh, layar dengan resolusi 320 x 200 akan memiliki total 64000 pixel di layar, dan setiap pixel itu diwakili oleh sebuah pasangan koordinat x dan y, dimulai dengan {0,0} sampai dengan {319,199}.
Contoh objek 2D
Untuk membuat gambar 2D dengan Library Graph pada bahasa c++  caranya:
  1. Masuk ke turbo c
  2. Pada menu klik option-linker-libraries
  3. Maka akan muncul jendela baru, beri tanda silang pada graphic library.
Kita akan membuat sebuah rumah, caranya dengan mengetikkan coding dibawah ini:
#include<graphics.h> //Wajib
#include<dos.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
int mulaimodegrafik (const char* pBGIPath )
{
int GraphicDriver;
// Deteksi otomatis driver & mode yang paling optimal untuk computer ini
int GraphicMode;
detectgraph (&GraphicDriver , &GraphicMode );
// Initialize (mulai) mode grafik dengan menggunakan driver dan mode yang telah dipilih
// secara otomatis.
initgraph (&GraphicDriver , &GraphicMode , pBGIPath );
// Kembalikan nilai dari graphresult();
return graphresult();
}
void tutupmodegrafik ()
{
// Kembali ke mode teks
closegraph();
}
void buatLingkaran(int cx, int cy,int r, int c)
{
// Menggunakan optimasi algoritma lingkaran
float s=0.0;
int x,y;
while(s<M_PI_4)
{
x=(float)r*cos(s);
y=(float)r*sin(s);
putpixel(cx+x,cy+y,c);
putpixel(cx+x,cy-y,c);
putpixel(cx-x,cy+y,c);
putpixel(cx-x,cy-y,c);
putpixel(cx+y,cy+x,c);
putpixel(cx+y,cy-x,c);
putpixel(cx-y,cy+x,c);
putpixel(cx-y,cy-x,c);
s+=0.005f;
}
}
int main()
{
// Mulai menggunakan mode grafik
int a;
mulaimodegrafik (“..\\BGI\\”);
// Mulai menggambar disini.
// lingkaran
buatLingkaran(250,260,5,15);
buatLingkaran(300,250,25,20);
buatLingkaran(393,186,50,2);
for(a=1;a<=200;a++)
{
// garis vertikal
putpixel(200,200+a/2,1);
putpixel(220,120+a/3.3,1);
putpixel(260,120+a/9,1);
putpixel(220,220+a/2.5,20);
putpixel(260,220+a/2.5,20);
putpixel(330,200+a/2,1);
putpixel(300,225+a/4,15);
putpixel(380,235+a/3,20);
putpixel(405,235+a/3,20);
// garis horizontal
putpixel(200+a/1.55,200,53);
putpixel(220+a/5,220,20);
putpixel(220+a/5,120,1);
putpixel(275+a/4,250,15);
putpixel(200+a/1.55,300,1);
putpixel(380+a/8,300,20);
// garis diagonal
putpixel(265-a/3,135+a/3,53);
putpixel(265+a/3,135+a/3,53);
delay(10);
}
getch();
tutupmodegrafik();
return 0;
}
Garis Vertikal
Untuk setiap y dari y1 sampai y2, gambarlah pixel pada posisi x,y dengan warna c dikarenakan x tidak berubah.
UNTUK y = y1 SAMPAI y2 LONCAT 1 putpixel(x, y, c) ULANGI y.
Garis horizontal
Untuk setiap x dari x1 sampai x2, gambarlah pixel pada posisi x,y dengan warna c dikarenakan y tidak berubah.
UNTUK x = x1 SAMPAI x2 LONCAT 1 putpixel(x, y, c) ULANGI x.
Garis diagonal
Untuk setiap y dari y1 sampai y2, dan x mulai dari x1 gambarlah pixel pada posisi x, y dengan warna c.
X = x + 1
X = x1
UNTUK y = y1 SAMPAI y2 LONCAT 1
Putpixel(x, y, c)
X = x + 1
ULANGI y
Atau
Untuk setiap x dari x1 sampai x2, dan y mulai dari y1 gambarlah pixel pada posisi x, y dengan warna c
Y = y + 1
Y = y1
UNTUK x = x1 SAMPAI x2 LONCAT 1
Putpixel(x, y, c)
Y = y + 1
ULANGI x
Output
Disarankan menggunakan DOSBOX untuk menampilkan output dikarenakan jika kita menggunakan full screen, print screennya ga bisa kan? Nah pake DOSBOX biar bisa di print screen
Langkah-langkah
  1. Install DOSBOX nya
  2. pindahkan folder TC atau TCPP (folder program C nya) ke dalam drive C, misalkan C:\TC (harus menggunakan nama folder TC kl tidak ga bisa jalan)
  3. lalu jalankan program DOSBOX, maka akan keluar tampilan seperti ini.
  4. lalu ketikan pada command prompt mount c c:\tcatau jika foldernya tcpp ketikkan perintah ini : mount c c:\tcpp\
  5. Jika benar maka akan ada pesan bahwa drive C sudah di mounted setelah itu masuk ke drive C dengan instruksi ketikan c: dengan begitu drive C akan berisi semua file dan direktori yang ada di folder TC kemudian panggil file untuk menjalankan TURBO C yaitu TC.BAT
  6. Lalu ketikkan source code seperti biasa

Tidak ada komentar:

Posting Komentar