Senin, 18 Januari 2016

Membuat Garis , Segitiga , Persegi dengan OpenGL

okey kita lanjut ya dari post sebelumnya...

 

 Membuat Garis,Segitiga, Persegi dengan OpenGL

- pertama- tama instal OpenGL nya terlebih dahulu
di
- lalu jalan kan instalernya :
pasti akan keluar notification seperti ini ..


- klik ok hingga proses instalasi selesai

maka tampilan nya seperti di bawah ini

untuk memulai membuat garis , segitiga , persegi
-klik file + new project + multimedia + openGL
-maka akan tampil source code automatis
-klik compile lalu run , otomatis akan menghasilkan gambar segitiga seperti di bawah

jika ingin membuat persegi atau garis maka yang hanya perlu di ganti seditkit source code nya pada bagian gambar di bawah ini..

ganti dengan source code di bawah ini :
Persegi :
 
glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
glClear (GL_COLOR_BUFFER_BIT);


glBegin (GL_POLYGON);
glColor3f (1.0f, 0.0f, 0.0f); glVertex2f (-0.5f, -0.5f);
glColor3f (0.0f, 1.0f, 0.0f); glVertex2f (-0.5f, 0.5f);
glColor3f (0.0f, 2.0f, 0.0f); glVertex2f (0.5f, 0.5f);
glColor3f (0.0f, 0.0f, 3.0f); glVertex2f (0.5f, -0.5f);
glEnd ();

SwapBuffers (hDC);


Sleep (1);
Garis :
glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
glClear (GL_COLOR_BUFFER_BIT);

glPushMatrix ();
glClearColor(1,1,1,0);
glColor3f(1,1,1); //

glBegin(GL_LINES);
glVertex3f(0,0,-0.8);
glVertex3f(9.9,8.9,0.1);

glEnd ();
glPopMatrix ();

SwapBuffers (hDC);

Sleep (1);
hasilnya :




Mantap kan  gan !!

SEDIKIT TEORI TENTANG OPENGL:
OpenGL adalah suatu graphic library yang sebagian bersifat open source, dipakai pada banyak platform (windows, linux) dan dapat digunakan pada berbagai jenis compiler seperti C++ atau Delphi.
OpenGL bukanlah bahasa pemrograman tetapi merupakan suatu Application Programming Interface (API).
Sintax perintah OpenGL

Sintaks perintah OpenGL mengikuti aturan penulisan dari library dimana fungsi tersebut berasal, format penulisan fungsi OpenGL :
<awalanlibrary><perintah><optional jumlah argumen><optional tipe argumen>

Semua perintah OpenGL menggunakan awalan gl diikuti dengan huruf kapital pada setiap kata membentuk nama perintah (sebagai contoh glClearColor).

Untuk mendefinisikan konstanta diawali dengan GL_, dengan menggunakan huruf kapital dan garis bawah untuk memisahkan kata (seperti GL_POLY_STIPPLE).

Terkadang beberapa huruf dan angka ditambahkan pada akhir perintah (seperti 3f pada glVertex3f). Dalam hal ini angka 3 menunjukkan berapa banyak argumen yang harus ada pada perintah tersebut dan akhiran huruf f menunjukkan jenis datanya yaitu floating. 

Fungsi asli dari OpenGL sendiri selalu diawali dengan gl yang terdapat pada library opengl32.dll dan file header gl.h. Sedangkan beberapa library yang telah ditulis untuk menyediakan fungsi-fungsi tambahan pada OpenGL adalah :

OpenGL Utility Library (GLU) yang didalamnya terdapat sejumlah rutin yang menggunakan level bawah dari perintah OpenGL. Rutin-rutin ini mempunyai awalan glu. Library ini digunakan sebagai bagian dari implementasi OpenGL. 
Bentuk umum coding untuk pembuatan garis :

glBegin(GL_LINES);                                                                /* Ingin menggambar garis */ 
glVertex2(tipe_data)(koordinat X1, koordinat Y1);              /* menyatakan sejumlah titik */
glVertex2(tipe_data)(koordinat X2, koordinat Y2);             /* menyatakan sejumlah titik */
glEnd();                                                                                    /* Akhir menggambar titik */

Bentuk coding untuk pembuatan segitiga :           
glBegin (GL_TRIANGLES);                                               /* Ingin menggambar segitiga * / 
glColor3f (1.0f, 0.0f, 0.0f);   glVertex2f (0.0f, 1.0f);          /* menyatakan sejumlah titik * /
glColor3f (0.0f, 1.0f, 0.0f);   glVertex2f (0.87f, -0.5f);      /* menyatakan sejumlah titik */
glColor3f (0.0f, 0.0f, 1.0f);   glVertex2f (-0.87f, -0.5f);    /* menyatakan sejumlah titik */
glEnd ();                                                                             /*  Akhir menggambar titik  * /

Dibutuhkan 3 buah vertex, masing-masing koordinat vertex1,2, dan 3 akan saling terhubung membentuk segitiga

Bentuk coding untuk pembuatan kotak :           
glBegin (GL_POLYGON);
glColor3f (1.0f, 0.0f, 0.0f); glVertex2f (-0.5f, -0.5f);
glColor3f (0.0f, 1.0f, 0.0f); glVertex2f (-0.5f, 0.5f);
glColor3f (0.0f, 2.0f, 0.0f); glVertex2f (0.5f, 0.5f);
glColor3f (0.0f, 0.0f, 3.0f); glVertex2f (0.5f, -0.5f);
glEnd ();

Dibutuhkan 4 buah vertex, masing-masing koordinat vertex1,2, 3, dan 4 akan saling terhubung membentuk persegi. Koordinat harus sama sisi, jika ingin berbentuk persegi (kubus)




mungkin cukup sampai disini... semoga bermanfaat..

Matrik dan Vektor Pada Matlab.



hai sobat pembaca ketemu lagi dengan saya...
di pembahasan kali ini saya akan menjelaskan matriks , vektor dan skalar di dalam matlab..
          






            Matrik Dan Vektor
1.         Definisi Matrik, Vektor Dan Skalar
Pada prinsipnya semua variabel didalam Matlab adalah matrik, sehingga operasi  pada MATLAB adalah operasi yang berbasis Matrik

Vektor adalah matrik dengan satu baris atau satu kolom

Skalar adalah matrik dengan satu baris dan satu kolom

Contoh
>> a = [1 2 3; 4 5 6; 7 8 9]      (variabel a berisi matrik 3x3)

a = 1     2     3
      4     5     6
      7     8     9

>> b = [1 2 3 4 5]        (variabel b berisi vektor baris)

b =     1     2     3     4     5







2.         Membuat Matrik  dari Fungsi MATLAB


>> A = pascal(3)                     %matrik bilangan pascal

A =
       1     1     1
       1     2     3
       1     3     6

>> B = magic(3)          %matrik ajaib 3x3

B =
       8     1     6
       3     5     7
       4     9     2

1.5.4    Dasar-Dasar Pemroggraman

3.         Input/Output
Input
Syntax :           variable=input('text');

Output
Syntax :           disp('text');





Contoh :
%-----------------------------------------------------                     
% Program menghitung Luas Persegi panjang
% Matlab Programming
% by : Jearren
%-----------------------------------------------------
clear all;                                                                     %hapus semua variable
clc;                                                                              %hapus tampilan yg ada dilayar
disp(‘----------------------------------‘);                         %tampilkan teks dilayar
disp(‘Hitung Luas Persegi panjang’);                             
disp(‘----------------------------------‘);
p = input(‘Panjang = ‘);                                          %Input variable “p”
l = input(‘Lebar = ‘);                                                %Input variable “l”
Luas = p*l;                                                                %Hitung Luas 
Disp( [‘Luas = ‘  num2str(Luas)] );                       %Tampilkan teks dan numerik


4.         Perulangan : for …. End
Syntax :

For  variable = mulai : interval : akhir
                        Perintah1;
                        Perintah2;
End;

            Contoh
% --------------------------------
% Program Perulangan for ... end
% Matlab Programming
% by : Jearren
% --------------------------------
clear all;  %membersihkan semua variabel
clc;        %membersihkan layar

disp('---------------------'); %menampilkan teks dilayar
disp('Perulangan for ... end ');
disp('---------------------');

for n=1:10                          % n = 1 s/d 10
    y=n*n+5
    disp([‘No:‘ num2str(n) ‘Besar Y = ‘ num2str(y)]);      
end;









5.         Perulangan : while ... end
Syntax :

While   syarat dipenuhi
                        Perintah1;
                        Perinyah2;
End;


Contoh

% --------------------------------
% Program Perulangan while ... end
% Matlab Programming
% by : Jearren
% --------------------------------

clear all;
clc;

disp('-----------------------------------');
disp('Program Perulangan   while ... end ');
disp('-----------------------------------');

x=20;
while x>10
    disp('perulangan ini akan berhenti bila x<= 10');
    x=input('Nilai x = ');
    clc;
    disp(['Nilai yang anda masukkan = ' num2str(x)]);
end;
disp('Nilai x <= 10: selesai.......');


6.         Pencabangan : if … elseif …else….end

Syntax :

If         syarat1 terpenuhi
                        Perintah1 dijalankan

Elseif   syarat2 terpenuhi
                        Perintah2 dijalankan
……………
Else
Perintah3 dijalankan

End;


Contoh
% --------------------------------
% Program Pencabangan : if … elseif …else….end
% Matlab Programming
% by : Jearren
% --------------------------------
clear all;
clc;
   
disp('--------------------------------------');
disp('Program Pencabangan : if … elseif …else….end ');
disp('--------------------------------------');

tugas=input('nilai tugas = ');
uts=input('nilai uts = ');
uas=input('nilai uas  = ');

nilai=(tugas*10/100)+(uts*40/100)+(uas*50/100);
disp('-------------------------------------');
disp(['nilai akhir Anda = ' num2str(nilai)]);

if nilai>85
    disp(['Nilai anda = ' num2str(nilai) '   grade anda = A']);
elseif nilai <=85 & nilai>70
    disp(['Nilai anda = ' num2str(nilai) '   grade anda = B']);
elseif nilai <=70 & nilai>60
    disp(['Nilai anda = ' num2str(nilai) '   grade anda = C']);
elseif nilai <=60 & nilai>50
    disp(['Nilai anda = ' num2str(nilai) '   grade anda = D']);
else
    disp(['Nilai anda = ' num2str(nilai) '   grade anda = E']);
end;


7.         Pencabangan : switch … case … otherwise ….end

Syntax :

Switch   variable
                        Case  nilai1
                                    Perintah1 dijalankan
Case  nilai2
                                    Perintah2 dijalankan
                                    ……..
                        Otherwise
                                    Perintah3 dijalankan
            End;




Contoh                       
% ---------------------------------------------------
% Program Pencabangan : switch … case … otherwise ….end
% Matlab Programming
% by : Jearren
% ---------------------------------------------------
clear all;
clc; 
disp('-----------------------------------');
disp('Program switch … case … otherwise ….end ');
disp('-----------------------------------');
disp('Pilihan Rumus Perhitungan ');
disp('1. Luas kotak');
disp('2. Volume kotak');
disp('3. Luas Silinder');
disp(' ');
pilih=input('pilihan anda (1-3) -> ');

switch pilih

case 1
    disp('Hitung Luas Kotak');
    disp('--------------------');
    p=input('panjang kotak = ');
    l=input('lebar kotak = ');
    t=input('tinggi kotak = ');
    luas=2*p+2*l+2*t;
    disp(['luas kotak = ' num2str(luas)]);   

case 2
    disp('Hitung Volume Kotak');
    disp('--------------------');
    p=input('panjang kotak = ');
    l=input('lebar kotak = ');
    t=input('tinggi kotak = ');
    v=p*l*t;
    disp(['volume kotak = ' num2str(v)]);       

case 3
    disp('Hitung Luas Silinder');
    disp('--------------------');
    r=input('jari-jari silinder = ');
    t=input('tinggi silinder = ');
    luas=(2*pi*r*t) + 2*(pi*r^2);
    disp(['luas silinder = ' num2str(luas)]);       

otherwise
    disp('pilihan anda ngawuur!!!')
end;


8.         Continue
Perintah continue digunakan untuk mengulang kembali dari awal perulangan sebelum kondisi yang menyebabkan mengulang kembali dari perulangan ditemukan.
Syntax :
            Continue;

Contoh
% --------------------------------
% Program perintah continue
% Matlab Programming
% by : Jearren
% --------------------------------

clear all;
clc;
count = 20;
while count>1
    count = count - 1;
    if  count<15
        disp(' bilangan ini <15');
        disp('==================');
        disp('                  ');
        continue 
  %semua perintah yg ada dibawah continue diabaikan
  %program langsung menuju ke baris awal looping
  %yaitu ke: count=count-1
    end
    %Jika count<15, perintah ini tidak dikerjakan
   
    disp(['hitungan ke = ' num2str(count)]);
    disp('             ');
    disp('             ');
    for x=1:5
        disp('cetak jika count>15');
    end;
end
disp(['Selesai pada hitungan ke = ',num2str(count)]);



















9.         Break

Perintah Break digunakan untuk mengakhiri perulangan sebelum kondisi yang menyebabkan keluar perulangan ditemukan.
Syntax :
            Break ;

Contoh
% --------------------------------
% Program perintah Break
% Matlab Programming
% by : Jearren
% --------------------------------

clear all;
clc;
count = 20;
while count>1
    count = count - 1;
    if  count<15
        disp(' bilangan ini <15');
        disp('==================');
        disp('                  ');
       
  %program keluar dari looping while…end;
  break    
   
    end
    %Jika count<15, perintah ini tidak dikerjakan
   
    disp(['hitungan ke = ' num2str(count)]);
    disp('             ');
    disp('             ');
    for x=1:5
        disp('cetak jika count>15');
    end;
end
disp(['Selesai pada hitungan ke = ',num2str(count)]);


10.       Fungsi
Fungsi merupakan subprogram yang dapat menerima argument masukan (input) dan/atau menghasilkan keluaran (output) dengan parameternya. Variabel yang dinyatakan dan digunakan dalam suatu fungsi, berbeda dari argument masukan/keluaran, dimana tidak diijinkan apabila digunakan oleh fungsi lain dan lingkungan perintah lainnya.
Syntax :

Function  [Output1, Output2, ……] = NamaFungsi(Input1, Input2, ….)



Contoh

% --------------------------------
% Program membuat Fungsi
% Matlab Programming
% by : Jearren
% --------------------------------
function y=kuadrat(x)
% Fungsi y = x^2
% --------------------------------
y=x.^2;

Simpan fungsi tersebut dengan nama yang sama dengan nama fungsinya yaitu, “kuadart.m”.

contoh cara memanggil fungsi tersebut pada Command Window:

>> kuadrat(5)              [Enter]
ans =    25

>> p = kuadrat(8)        [Enter]
p =  64

Contoh
% --------------------------------
% Program membuat Fungsi
% Matlab Programming
% by : Jearren
% --------------------------------
function [luas,volume]=balok(p,l,t)
% --------------------------------
% Menghitung Luas dan Isi Balok
% Luas   = 2pl +2pt +2lt
% volume = plt
% --------------------------------
luas   = 2*p.*l + 2*p.*t + 2*l.*t;
volume = p.*l.*t;

Simpan fungsi tersebut dengan nama yang sama dengan nama fungsinya yaitu, “balok.m”. contoh cara memanggil fungsi tersebut:

>> [Luas,Volume] = balok(2,4,6)
Luas = 88
Volume =48






Contoh 3
% --------------------------------
% Program membuat Fungsi
% Matlab Programming
% by : Jearren
% --------------------------------
function [luas,isi]=silinder(r,t)
% Menghitung Luas dan Isi Silinder
% luas = (2(pi) x r x t) + 2(pi x r^2)
% isi = pi x r^2 x t;
%
% Cara menggunakan :
% [luas,isi]=silinder(jari,tinggi)
% --------------------------------
luas = (2*pi*r*t) + 2*(pi*r^2);
isi = pi*r^2*t;

Simpan fungsi tersebut dengan nama yang sama dengan nama fungsinya yaitu, “silinder.m”. contoh cara memanggil fungsi tersebut:

>> [Luas,Volume] = silinder(2,4,6)

Hasilnya adalah :
Luas =  75.3982

Volume = 50.2655





Contoh memanggil fungsi lewat program

% --------------------------------
% Program membuat Fungsi
% Matlab Programming
% by: Jearren
% --------------------------------
clear all;
clc;
 
disp('---------------------');
disp('Program membuat Fungsi ');
disp('---------------------');
disp('Pilihan Rumus Perhitungan ');
disp('1. Kotak');
disp('2. Silinder');
disp('--------------------------');

pilih=input('pilihan anda (1-2) = ');

switch pilih

case 1
    disp('Hitung Luas Dan Isi Kotak');
    disp('--------------------');
    p=input('panjang kotak = ');
    l=input('lebar kotak = ');
    t=input('tinggi kotak = ');
    [luas,isi]=balok(p,l,t);        %memanggil fungsi balok
    disp(['luas kotak = ' num2str(luas)]);   
    disp(['volume kotak = ' num2str(isi)]);       

case 2
    disp('Hitung Luas Dan Isi Silinder');
    disp('--------------------');
    r=input('jari-jari silinder = ');
    t=input('tinggi silinder = ');
    [luas,isi]=silinder(r,t);       %memanggil fungsi silinder
    disp(['luas silinder = ' num2str(luas)]);       
    disp(['volume silinder = ' num2str(isi)]);   

otherwise
    disp('pilihan anda ngawuur!!!')
end;

1.5.5    Pemrograman Grafik
Secara umum setelah user menghitung sebauh fungsi matematik, pasti ada keinginan untuk memvisualisasikan datanya secara grafis. Hasil visualisasi ini sangat membantu dalam menganalisa data-data yang telah di analisis. Pada bagian ini dibahas tentang visualisasi data 2-D dan 3-D.


1.         Visualisasi Data 2-D
Untuk visualisasi data 2-D (dua dimensi) digunakan fungsi Plot
Syntax
         plot ( x, y)
         plot ( x, y, simbol)
        
catatan :
x dan y harus mempunyai bentuk yang sama.


Contoh
x=1:0.01:10;                    %Nilai X dari 1 s/d 10
y=2*x.^2-4*x+8;                 %Nilai Y
plot(x,y);                      %menggambar titik(x,y) di layar
xlim([0 15])                    %sumbu-X dibatasi dari 0 s/d 15
ylim([0 200])                   %sumbu-Y dibatasi dari 0 s/d 200
xlabel('Nilai-X')               %memberi label pada sumbu X
ylabel('Nilai-Y')               %memberi label pada sumbu Y
title('Grafik: y=2*x.^2-4*x+8') %memberi judul pada grafik
text(7,65,'Ini grafiknya')      %memberi teks pada grafik






2.         Type Garis Dan Simbol
Grafik yang gambar dapat divisualisasi lebih bagus lagi dengan mengkombinasikan warna, simbol dan type garis, sesuai dengan tabel berikut

Simbol
Garis
-

:

-.

- -
Solid line

Dotted line

Dash dot line

Dash line

Simbol
Tanda
.
o
x
+
*
s
d
v
^
p
h
Point
Circle
Cross
Plus
Asterik
Square
Diamond
Triangle (down)
Triangle (up)
Triangle (left)
Triangle (right)
Pentagram
hexagram

Simbol
Warna
b
g
r
c
m
y
k
w
Blue
Green
Red
Cyan
Magenta
Yellow
Black
White

Contoh
x=1:0.01:10;                    %Nilai X dari 1 s/d 10
y=2*x.^2-4*x+8;                 %Nilai Y
plot(x,y','*r');                %menggambar titik (x,y) di layar
xlim([0 15])                    %sumbu-X dibatasi dari 0 s/d 15
ylim([0 200])                   %sumbu-Y dibatasi dari 0 s/d 200
xlabel('Nilai-X')               %memberi label pada sumbu X
ylabel('Nilai-Y')               %memberi label pada sumbu Y
title('Grafik: y=2*x.^2-4*x+8') %memberi judul pada grafik
text(7,65,'Ini grafiknya')      %memberi teks pada grafik




3.         Membuat Tampilan Grafik Overlay
Contoh
>> x1 = 0:0.2:2*pi;
>> x2 = 0:0.2:2*pi;
>> y1 = sin(x1);
>> y2 = cos(x2);
>> plot(x1,y1); hold on; plot(x2,y2)
Atau
>> plot(x1,y1, x2, y2)



5.         Membuat Tampilan Grafik parallel
Syntax
                        Subplot ( K, L, M )

                        Membagi figure menjadi K baris dan L kolom
                        Menempatkan obyek (plot) pada posisi ke M

Contoh
>> x1 = 0:0.2:2*pi;
>> x2 = 0:0.2:2*pi;
>> y1 = sin(x1);
>> y2 = cos(x2);
>> subplot(2,1,1),plot(x1,y1)              %baris
>> subplot(2,1,2),plot(x2,y2)



4.1              Visualisasi Data 3-D
Penyajian data menggunakan visualisasi 3-D, berarti kita menempatkan satu atau lebih titik data pada korrdinat ruang. Teknik ini sangat berguna dalam bidang pemodelan yang berhubungan dengan data ruang (x,y,z), dengan z adalah nilai fungsi pada titik (x,y) yang dapat berupa data ketinggian, temperature, kecepatan, dan lain-lain. Beberapa fungsi yang umum digunakan untuk visualisasi data 3-D adalah fungsi Plot3, Mesh, Surf, Surfl, pcolor, Contour, dan Contourf.

Plot3
Jika x,y, dan z adalah tiga vector yang panjangnya sama, plot3(x,y,z) menghasilkan garis 3-D melewati titik-titik yang koordinat-koordinat elemennya adalah x, y, dan z, kemudian menghasilkan proyeksi 2-D dari garis tersebut pada layar. 

Syntax

plot3(X1,Y1,Z1,...)

X1, Y1, Z1 adalah vektor atau matrik. plot3(X1,Y1,Z1,...) akan menggambar satu garis atau lebih dalam ruang 3-D melalui titik-titik yang koordinat-kordinatnya adalah elemen-elemen dari X1, Y1, dan Z1.




Contoh
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
axis square; grid on




 hai sobat pembaca mungkin cukup sampai disini saja materi kali ini nanti akan saya lanjut di post berikutnya.
semoga bermanfaat...