Tampilkan postingan dengan label coding. Tampilkan semua postingan
Tampilkan postingan dengan label coding. Tampilkan semua postingan

Sabtu, 07 April 2012

Pemrograman OpenGL sederhana pada Linux

Pasti sudah pernah dengar kan? apa itu openGL. OpenGL merupakan library yang digunakan untuk melakukan operasi grafis pada komputer, seperti game, menampilkan GUI, dll. Kali ini saya akan membahas cara instalasi tools yang diperlukan untuk membuat program openGL sederhana, tahap kompilasi sampai running, dan penjelasan singkat source code.

requirement : distro ubuntu, text editor(gedit), mengerti dasar-dasar linux(linux basic)

TAHAP PERSIAPAN
paket-paket bawaan atau yang telah terpasang pada distro ubuntu saat pertama kali install, belum menyediakan tools development openGL. Untuk menginstallnya ketikkan :

sudo apt-get install mesa-common-dev freeglut3-dev build-essential

setelah instalasi berhasil, langkah selanjutnya adalah menulis program. Sebagai tutorial saya akan menyajikan program sederhana buatan saya. Program ini akan menampilkan animasi 6 kubus warna-warni yang bergerak bolak-balik. Source code nya dapat dilihat dibawah :



lansung copas saja kode diatas lalu di save dengan nama animate.c

TAHAP KOMPILASI

setelah file nya di save, ketik perintah dibawah ini lewat terminal :

gcc -o animate animate.c -lX11 -lGL -lGLU

RUN THE PROGRAM

jika saat kompilasi tidak ada error, jalankan progrram dengan mengetikkan perintah di bawah via terminal :

 ./animate
Animasi OpenGL
Animasi OpenGL

PENJELASAN SOURCE CODE

Cukup panjang ya.. kode programnya? Tenang saya akan menjelaskan secara singkat kode programnya, ehemmm...

#include<stdio.h>
#include<stdlib.h>
#include<X11/X.h>
#include<X11/Xlib.h>
#include<GL/gl.h>
#include<GL/glx.h>
#include<GL/glu.h>
#include<GL/glut.h>

baris include diatas berfungsi untuk menyertakan semua header library openGL dan standart library C. Header "X11" berguna untuk membuat frame/window pada display, tempat dimana objek akan digambar oleh program. Header "GL/gl*" terdapat fungsi untuk menggambar garis, vertex, bentuk-bentuk primitif geometris, pewarnaan, dan operasi-operasi lainnya yang dapat dilakukan pada display.

float randFloat(float a, float b)

fungsi ini akan menghasilkan bilangan pecahan random yang digunakan oleh fungsi main() untuk menhasilkan animasi. Fungsi ini membutuhkan dua buah argumen untuk menentukan batas bawah (a) dan batas atas (b) bilangan pecahan.

void DrawAQuad(float xpos, float ypos, float zpos,float r, float g, float b) {

Kubus digambar oleh fungsi ini dimana letak nya diatur oleh xpos, ypos, dan zpos. Sedangkan untuk warna dari kubus diatur oleh r, g, b. Kubus memiliki enam sisi, untuk menghasilkan salah satu sisi dalam openGL dapat dilihat pada kode program di bawah :

glBegin(GL_QUADS);// depan
  glColor3f(r, g, 0.5);
  glVertex3f(xpos + 0, ypos + 0, zpos + 0.);
  glVertex3f(xpos +  0, ypos + (.05*scale), zpos + 0.);
  glVertex3f( xpos + (.05*scale),  ypos + (.05*scale), zpos + 0.);
  glVertex3f(xpos + (.05*scale),  ypos + 0, zpos + 0.);
glEnd();

glBegin(GL_QUADS); menyatakan openGL akan membuat persegi yang selanjutnya pewarnaan dilakukan oleh fungsi glColor3f() dan posisi sudut ditentukan oleh keempat fungsi glVertex3f().

DrawAQuad(.0 + tambah, .0, .0, 5, 0.2,0.098,0.2+tambah);
DrawAQuad(.0 - tambah, .0, .0, 5, 0.2,0.098+tambah,0.2);
DrawAQuad(.0, .0 +tambah, .0,5 , 0.2+tambah,0.098,0.2);
DrawAQuad(.0 , .0 - tambah, .0, 5, 0.2+tambah,0.098+tambah,0.2);
DrawAQuad(.0, .0, .0 + tambah, 5, 0.2,0.098+tambah,0.2+tambah);
DrawAQuad(.0, .0, .0 - tambah, 5, 0.2+tambah,0.098+tambah,0.2+tambah);
tambah += nilai;
hitung += nilai_int;

if(hitung == batas){
    nilai_int = -(nilai_int);
    nilai = -(nilai);
    batas = -(batas);
}

kode diatas akan menggambar keenam kubus dan memberi animasi pada setiap kubus.

oleh : Alvin
READ MORE - Pemrograman OpenGL sederhana pada Linux

Minggu, 11 Desember 2011

Amaterasu Anti ARP Spoofing

READ MORE - Amaterasu Anti ARP Spoofing

Jumat, 31 Desember 2010

Python : Membuat GUI dengan PyGTK

    Berbagai macam toolkit GUI untuk python diantaranya tk, wxPython, PyGTK, dan lain-lain. Kali ini source code menggunakan PyGTK. Kelebihan PyGTK adalah toolkit ini melakukan manajemen memory GUI secara otomatis, sehingga memudahkan programmer tanpa perlu untuk bersusah payah dalam urusan memanajemen memori. Di bawah ini adalah source code untuk menampilkan tombol dengan text "Hello world". Jika tombol ditekan maka pada commandline akan tercetak "Hello world".

    1   #!/usr/bin/env python
    2
    3   # example helloworld.py
    4
    5   import pygtk
    6   pygtk.require('2.0')
    7   import gtk
    8
    9   class HelloWorld:
   10
   11       # This is a callback function. The data arguments are ignored
   12       # in this example. More on callbacks below.
   13       def hello(self, widget, data=None):
   14           print "Hello World"
   15
   16       def delete_event(self, widget, event, data=None):
   17           # If you return FALSE in the "delete_event" signal handler,
   18           # GTK will emit the "destroy" signal. Returning TRUE means
   19           # you don't want the window to be destroyed.
   20           # This is useful for popping up 'are you sure you want to quit?'
   21           # type dialogs.
   22           print "delete event occurred"
   23
   24           # Change FALSE to TRUE and the main window will not be destroyed
   25           # with a "delete_event".
   26           return False
   27
   28       # Another callback
   29       def destroy(self, widget, data=None):
   30           gtk.main_quit()
   31
   32       def __init__(self):
   33           # create a new window
   34           self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   35
   36           # When the window is given the "delete_event" signal (this is given
   37           # by the window manager, usually by the "close" option, or on the
   38           # titlebar), we ask it to call the delete_event () function
   39           # as defined above. The data passed to the callback
   40           # function is NULL and is ignored in the callback function.
   41           self.window.connect("delete_event", self.delete_event)
   42
   43           # Here we connect the "destroy" event to a signal handler.
   44           # This event occurs when we call gtk_widget_destroy() on the window,
   45           # or if we return FALSE in the "delete_event" callback.
   46           self.window.connect("destroy", self.destroy)
   47
   48           # Sets the border width of the window.
   49           self.window.set_border_width(10)
   50
   51           # Creates a new button with the label "Hello World".
   52           self.button = gtk.Button("Hello World")
   53
   54           # When the button receives the "clicked" signal, it will call the
   55           # function hello() passing it None as its argument.  The hello()
   56           # function is defined above.
   57           self.button.connect("clicked", self.hello, None)
   58
   59           # This will cause the window to be destroyed by calling
   60           # gtk_widget_destroy(window) when "clicked".  Again, the destroy
   61           # signal could come from here, or the window manager.
   62           self.button.connect_object("clicked", gtk.Widget.destroy, self.window)
   63
   64           # This packs the button into the window (a GTK container).
   65           self.window.add(self.button)
   66
   67           # The final step is to display this newly created widget.
   68           self.button.show()
   69
   70           # and the window
   71           self.window.show()
   72
   73       def main(self):
   74           # All PyGTK applications must have a gtk.main(). Control ends here
   75           # and waits for an event to occur (like a key press or mouse event).
   76           gtk.main()
   77
   78   # If the program is run directly or passed as an argument to the python
   79   # interpreter then create a HelloWorld instance and show it
   80   if __name__ == "__main__":
   81       hello = HelloWorld()
   82       hello.main()

oleh : alvin
source code : Pygtk tutorial 2.0 by John Finlay
READ MORE - Python : Membuat GUI dengan PyGTK

Menampilkan bilangan fibonacci dengan python

Berikut ini adalah source code python untuk menampilkan bilangan fibonacci.

angka = input("masukkan limit deret fibonacci (angka) = ")
fibo = [0,1]
for a in range(angka):
    if a>1:
        print fibo[a-1] + fibo[a-2],
        fibo.append(fibo[a-1] + fibo[a-2])
    else:
        print fibo[a],

oleh : alvin
READ MORE - Menampilkan bilangan fibonacci dengan python

Senin, 07 Juni 2010

Coding Pascal - GABUNGAN_MAX_DAN_RATA_RATA

/**
* Copyright (c) 2010 Alvin Aditya H
* GNU GPL License
*/

PROGRAM "GABUNGAN_MAX_DAN_RATA_RATA"
VAR
A : ARRAY [1..10] OF INTEGER;
I,J,K,MAX : integer;
TOTAL : INTEGER;
RATA2 : REAL;

Begin
FOR I := 1 TO 10 DO
begin
write('masukkan angka ',I,'= ');
READ(A[I]);
end;
MAX := A[1];
write('MAX = ');
FOR J := 2 TO 10 DO
IF MAX <= A[J] THEN MAX := A[J];
WRITELN(MAX);

Total := 0;
FOR K := 1 TO 10 DO TOTAL := TOTAL + A[K];
RATA2 := TOTAL / 10;
WRITELN('rata-rata= ',RATA2);
End.
READ MORE - Coding Pascal - GABUNGAN_MAX_DAN_RATA_RATA

Coding Pascal - Menampilkan rangkuman nilai

/**
* Copyright (c) 2010 Alvin Aditya H
* GNU GPL License
*
*
*/

uses crt;
type tabel=RECORD
kd:string[8];
mk:string[30];
sks:Integer;
n:char;
end;
var i : integer;
nama:string[20];
npm:string[8];
kelas:string[5];
aw:ARRAY[1..10]OF tabel;
tsks:integer;
mt:integer;
bobot:integer;
jmt:integer;
ipk:real;

BEGIN
clrscr;
tsks := 0;
jmt := 0;
writeln('masukkan Nama : ');readln(nama);
writeln('masukkan NPM : ');readln(npm);
writeln('masukkan Kelas : ');readln(kelas);
for i:=0 to 9 do
begin
writeln('masukkan kode : ');readln(aw[i].kd);
writeln('masukkan mata kuliah : ');readln(aw[i].mk);
writeln('masukkan sks : ');readln(aw[i].sks);
writeln('masukkan nilai(pake huruf gede) : ');readln(aw[i].n);
end;
writeln('Rangkuman Nilai Mahasiswa :');
writeln('---------------------------------------');
writeln('no| Kode | Mata Kuliah | SKS | Nilai |');
for i:=0 to 9 do
begin
writeln('|',i+1,'|',aw[i].kd,'|',aw[i].mk,'|',aw[i].sks,'|',aw[i].n,'|');
writeln('------------------------------------------------------------');
end;

for i:=0 to 9 do
tsks := tsks + aw[i].sks;
for i:=0 to 9 do
begin
case aw[i].n of
'A': bobot:= 4;
'B': bobot:= 3;
'C': bobot:= 2;
'D': bobot:= 1;
'E': bobot:= 0;
end;
mt := aw[i].sks*bobot;
jmt := jmt+mt;
end;
writeln('Total SKS yang diperoleh : ',tsks);
ipk := jmt/tsks;
writeln('Indeks prestasi kumulatif :',ipk);
readln;
END.
READ MORE - Coding Pascal - Menampilkan rangkuman nilai
Add to Technorati Favorites Add to Technorati Favorites
OrangUNIX © 2008 Template by:
SkinCorner