Docstoc

output primitif

Document Sample
output primitif Powered By Docstoc
					   BAB III
   OUTPUT PRIMITIF

3.1 Titik dan Garis                                       menentukan kemiringan garis tersebut adalah
          Pembentukan titik dilakukan dengan              =
mengkonversi suatu posisi koordinat dengan
                                                                                  y − y
program aplikasi ke dalam suatu operasi                                       =
tertentu menggunakan output tertentu. Garis                                       x − x
dibuat dengan menentukan posisi titik awal                                 = y − m. x
dan akhir dari suatu garis. Kemudian,
peralatan output membuat garis sesuai posisi              Dengan demikian algoritma DDA adalah
titik-titik tersebut.                                     sebagai berikut :
          Posisi pixel dapat digambarkan sesuai            1. Tentukan dua titik untuk membentuk
nilai scan-line dan nilai kolom (posisi pixel                 garis.
yang dibuat tegak lurus dengan scan-line).                 2. Beri nama dua titik tersebut dengan titik
                                                              awal (x0,y0) dan titik akhir (x1,y1)
                                                           3. Hitung ∆ =       −     dan ∆ =       −
                                                           4. Tentukan langkah (step) jarak maksimum
                                                              jumlah penambahan nilai x dan nilai y
                                                              dengan cara
                                                                       Jika nilai |∆ | lebih besar nilai
Gambar 3.1 Garis yang dihasilkan dengan pembentukan                    |∆ |, maka step =|∆|
                  satu deretan titik                               Jika tidak, maka step = |∆ |
                                                           5. Hitung penambahan koordinat piksel
                                                              dengan cara x_tambah = ∆               dan
                                                                            ∆
                                                              Y_tambah =              .

                                                          6. Tentukan koordinat berikutnya (Xk+1, Yk+1)
                                                             dengan      koordinat        (x+x_tambah,
                                                             y+y_tambah).
                                                          7. Posisi piksel pada layar ditentukan
                                                             dengan pembuatan nilai koordinat
                                                             tersebut.
Gambar 3.2 Posisi pixel ditentukan oleh nilai scan-line
                  (y) dan kolom (x)
                                                          8. Ulangi langkah 6 dan 7 untuk
                                                             menentukan posisi piksel selanjutnya
3.2 Algoritma Pembentukan Garis                              sampai dicapai nilai x=x1 dan y=y1.
       Persamaan garis lurus dengan
koordinat cartesius adalah :                              Contoh soal :
                                                          1. Diketahui dua titik untuk membentuk
                     =     . +                               garis yaitu garis A(10,10) dan B(17,16).
                                                             Buatlah tabel perhitungan untuk untuk
Dengan m mewakili kemiringan garis dan b                     titik titik yang dihasilkan oleh algoritma
merupakan titik pada sumbu Y, jika diketahui                 pembangkitan garis DDA.
dua titik terakhir dari segmen garis yang
diposisikan pada titik (x1,y1) dan (x2,y2). Cara          Jawaban :
                                                          Tabel Perhitungan


   1|Page
Urut-urutan langakh algoritma garis DDA:
1. A(10,10) dan B(17,16)
2. (x0,y0) = (10,10) dan (x1,y1) = (17,16)
3. ∆ = −           = 17 − 10 = 7 dan
   ∆ =        −     = 16 − 10 = 6
4. ∆ = 7 > ∆ = 6 maka step = 7
5. X_tambah = ∆                = 7 7 = 1 dan
                 ∆
   Y_tambah =              = 6 7 = 0,86

6. (Xk+1, Yk+1) = (x+x_tambah, y+y_tambah) =     Gambar 3.3 sebagian garis dengan pixel pada kolom xk
   (10 + 1, 10 + 0,86) = (11,10.86)                                 dan baris yk+1
7. (Xbulat, Ybulat) = (11,11)
8. Ulangi langkah 6 dan 7, akhirnya                      Bila p < 0, maka posisi selanjutnya
   didapatkan seperti tabel berikut :            (xk+1,yk), tetapi bila tidak, maka posisinya
                                                 selanjutnya (xk+1,yk+1). Sedangkan nilai p
     k       x       y        (xbulat, ybulat)
                                                 selanjutnya adalah pk+1=pk+2 ∆y atau pk+1 = pk
            10      10           (10,10)
                                                 + 2 ∆y – 2 ∆x.
     0      11     10,86         (11,11)
     1      12     11,71         (12,12)                Langkah-langkah untuk membentuk
     2      13     12,57         (13,13)
                                                 garis menurut algoritma Bresenham adalah
     3      14     13,43         (14,13)
                                                 sebagai berikut :
     4      15     14,29         (15,14)
     5      16     15,14         (16,15)         1. Masukkan dua titik akhir dan simpan titik
     6      17      16            (7,16)
                                                    akhir sebelah kiri dalam (x0,y0)
                                                 2. Isikan (x0,y0) ke dalam buffer yang akan
                                                    melukis titik pertama
3.2 Algoritma garis Bressenham                   3. Hitung konstanta ∆x, ∆y, 2∆y dan 2∆y -
        Prosedur untuk menggambar kembali           2∆x, dan dapatkan nilai awal untuk
garis dengan membulatkan nilai x atau y ke          parameter keputusan sebagai :
bilangan interger memerlukan waktu, serta           P0 = 2∆y - ∆x.
variablex,y dan m merupakan bilangan real        4. Pada masing-masing xk sepanjang garis,
karena kemiringan merupakan nilai pecahan.          dimulai dengan k = 0, lakukan tes berikut :
Bressenham mengembangkan algoritma klasik           jika p < 0, dan titik berikutnya yang akan
yang     lebih   menarik,  karena    hanya          dilukis adalah (xk+1,yk) dan pk+1=pk + 2∆y,
menggunakan perhitungan matematik dengan            selain itu, titik berikutnya yang dilukis
bilangan interger. Dengan demikian tidak            adalah (xk+1, yk+1) dan pk+1= pk + 2∆y -
perlu membulatkan nilai posisi pixel setiap         2∆x.
waktu.                                           5. Ulangi langkah 4 untuk menentukan
       Pada gambar 3.3 dapat dilihat langkah        posisi pixel selanjutnya, sampai x=x1 dan
dimana posisi pixel dapat diperoleh dalam           y=y1.
pembentukan garis. Posisi pixel selanjutnya      Contoh : Algoritma penggambaran garis
adalah (xk+1,yk) atau (xk+1,yk1). Posisi ini     bresenham.
tergantung dari nilai parameter p.


2|Page
1. Diketahui dua titik pembentuk garis yaitu
     titik (10,10) dan (17,16), buatlah tabel
     perhitungan       untuk titik-titik yang
     dihasilkan oleh algoritma pembangkitan
     garis bresenham
 ∆x = 17 – 10 = 7
 ∆y = 16 -10 = 6
 2∆x = 2 x 7 = 14
 2∆y = 2 x 6 = 12
 P0 = 2∆y - ∆x = 2x6 – 7                           Gambar 3.4 Lingkaran dengan (xc,yc) sebagai pusat
    = 12 – 7                                                  lingkaran dengan r radius

    =5                                                 Lingkaran juga dapat didefinisikan
 Karena P0 > 0, maka titik selanjutnya adalah    menggunakan koordinat polar. Lingkaran
 (xk+1,yk+1) = (10+1,10+1)                       yangsama dapat didefinisikan sebagai berikut
             = (11,11)                           :
 Pk+1 = pk + 2∆y - 2∆x                                          x = r cos + xc
                                                                y = r sin + yc
  P1 = 5 + (12) – (14)
                                                              dimana 0 < < 2
  P1 = 3
                                                          Kita dapat menggambarkan lingkaran
                                                 dengan menggunakan persamaan koordinat
      k       pk          (xk+1, yk+1)           rectangular diatas, akan tetapi pendekatan ini
            (10,10)                              menimbulkan dua masalah yaitu :
      0        3            (11,11)               1. Persamaan        tersebut     mengandung
      1        1            (12,12)                   perhitungan akar yang operasinya
      2       -1            (13,13)                   memakan waktu.
      3       11            (14,13)               2. Timbul gap yang cukup signifikan pada
      4        9            (15,14)                   lingkaran ketika digambarkan.
                                                          Lingkaran dapat juga digambarkan
      5        7            (16,15)
                                                 dengan menggunakan persamaan koordinat
      6        5            (17,16)
                                                 polar, tetapi fungsi trigonometri juga
                                                 membutuhkan cost yang tidak sedikit
                                                 sehingga algoritma yang disusun tidak akan
3.3 Algoritma Pembentuk Lingkaran                efisien.
        Lingkaran merupakan objek grafik                  Untuk mengatasi masalah yang timbul
yang paling sering digunakan pada grafik         dari penerapan koordinat polar maupun
sederhana. Lingkaran dapat didefinisikan         rectangular, Bresenham menyusun suatu
sebagai kumpulan titik yang memiliki jarak r     algoritma pembentukan lingkaran yang hanya
dari posisi pusat (xc,yc). Persamaan lingkaran   menggunakan aritmetika integer. Secara
dengan titik pusat (xc,yc) dan radius r dapat    prinsip algoritma ini sejenis denga algoritma
dispesifikasikan menggunakan koordinat           penggambaran garis yang disusun oleh orang
rectangular berikut :                            yang sama.
                                                          Lingkaran merupakan objek yang
            (x – xc)2 + (y-yc)2 = r2             simetris sehingga karakteristik ini dapat
                                                 dimanfaatkan untuk mengurangi pekerjaan
                                                 pada saat menggambar lingkaran. Lingkaran
                                                 dibagi menjadi 8 oktan (lihat gambar 3.x),
3|Page
misalkan kita menyusun algoritma untuk               dimana 2 xk+1 = 2 xk + 2, dan 2 yk+1 = 2 yk -2
menggambarkan lingkaran di oktan pertama,             4. Tentukan titik simetri untuk 7 oktan
maka koordinat untuk 7 oktan selanjutnya                  lainnya dengan menggunakan table 3.1
dapat ditentukan pada table 3.1 berikut              5. Untuk lingkaran dengan pusat bukan di
                                                          (0,0). Pindahkan setiap posisi pixel hasil
     Tabel 3.1 Koordinat simetri 8 oktan                  perhitungan (x, y) dengan rumus x = x + xc
                                                          , y = y + yc
                                                    6. Ulangi langkah 3 sampai 5, hentikan ketika
                                                        x >= y

                                                    Contoh soal :
                                                     1. Algoritma      pembangkitan        lingkaran
                                                        dengan “Lingkaran Titik Tengah”.
                                                        Diketahui jari-jari lingkaran r=10, dan titik
                                                        pusat (0,0). Buatlah tabel perhitungan
                                                        untuk titik-titik yang dihasilkan oleh
                                                        algoritma penggambaran – lingkaran titik
                                                        tengah
                                                        Jawab:
                                                        Penggambaran lingkaran titik tengah
                                                        untuk titik pusat (0,0), dimulai dari
                                                        kuadaran pertama yaitu dari x=0 ke x=y.
                                                        Nilai awal parameter keputusan adalah :

                                                        P0 = 1 – r = -9
                                                        Pk < 0 maka rumus yag dipakai (xk+1, yk)
                                                        = (x0+1, 0)
                                                        = (1 , 10)

                                                         P1 = -9 + 2 x+1 + k
       Gambar 3.5 Lingkaran dengan 8 oktan                  = -9 + (2x1) + 1
                                                            = -6
        Tahapan penggambaran lingkaran
dengan menggunakan algoritma yang dikenal               Pk < 0 maka rumus yag dipakai (xk+1, yk)
dengan nama algoritma midpoint ini adalah               = (x1+1, 0)
sebagai berikut :                                       = (1+1 , 10)
 1. Input jari-jari r dan koordinat pusat               = (2, 10)
    lingkaran (xc, yc), kemudian tntukan                               Oktan 1
    koordinat untuk titik awal yaitu (x0, y0) =            k        pk      (xk+1, yk+1)
    (0, r).                                                0        -9         (1,10)
 2. Hitung nilai awal untuk parameter                      1        -6         (2,10)
    keputusan p0 = 1 – r                                   2        -1         (3,10)
 3. Untuk setiap xk, mulai dari k=0, lakukan               3         6          (4,9)
    langkah berikut :                                      4        -3          (5,9)
    jika pk<0, maka titik selanjutnya pada
                                                           5         8          (6,8)
    lingkaran dengan pusat (0,0) adalah
    (xk+1, yk) dan pk+1 = pk + 2 xk+1 + 1,                 6         5          (7,7)
    jika pk≥0, titik berikutnya adalah (xk+ 1, yk
    - 1)
    dan pk+1 = pk + 2 xk+1+ 1 - 2 yk+1
4|Page
3.4 Algoritma Pembentukan Elips                  pertama. Pergeseran dengan unit step dalam
       Ellips merupakan salah satu objek         x pada saat slope lebih besar dari 1
grafis    dengan     persamaan  koordinat                Alternative lain dimulai pada rx,0) dan
rectangular sebagai berikut :                    seleksi titik dalam arah berlawanan dengan
                                                 jarum jam pergeseran unit step y ke unit step
                                                 x pada saat kemiringan lebih besar daripada -
                                                 1.

                                                         Algoritma untuk menggambarkan
                                                 ellips yang dikenal dengan sebutan Midpoint
                                                 ellipse algorithm adalah sebagai berikut :
dan persamaan polar :
                                                  1. Input rx, ry dan pusat Ellips (xc, yc),
                                                       tentukan titik pertama pada pusat ellips
                                                       sebagai : (x0,y0) = (0,Ry)
                                                  2. Hitung nilai awal parameter keputusan di
                                                      region 1 :
                                                      P10 = −            +
        Teknik      yang   digunakan     untuk
menggambarkan garis dan lingkaran yang           3. Untuk semua xk di region 1, dimulai dari
telah      dibicarakan   sebelumnya      dapat      k=0 lakukan tes berikut :
                                                    jika p1k < 0 titik selanjutnya dari ellips
diimplementasikan untuk menggambarkan
                                                    yang berpusat di (0,0) adalah
ellips.
        Elipps merupakan objek yang memiliki
empat bagian yang simetris seperti
gambarkan ada gambar 3.6. dari karakteristik
ini, dapat disusun suatu algoritma yang               jika p1k >=0 maka titik selanjutnya adalah
memplot pixel di kuadran pertama dan                  :
menentukan titik di tiga kuadran lainnya.
        Kuadran pertama dibagi menjadi 2
                                                      Dengan
(dua) region dan dengan menggunakan
algoritma midpoint ellipse, plot titik untuk
region pertama, kemudian koordinat akhir         4.   Hitung nilai awal dari parameter
pada region I menjadi koordinat awal untuk            keputusan di region 2 menggunakan titik
region II.                                            akhir dari region 1 sebagai (x0,y0) dengan
                                                      rumus :

                                                 5. Untuk setiap yk di region 2 dimulai dari
                                                    k=0 lakukan uji berikut :
                                                    jika p2k < 0 titik selanjutnya dari ellips
                                                    yang berpusat di (0,0) adalah


                 Gambar 3.6                           jika p2k >=0 maka titik selanjutnya adalah
       Region 1 dan 2 dapat digunakan
dengan berbagai macam cara. Pertama              6.   Tentukan titik simetris pada tiga kuadran
dimulai dari posisi (0,r) dan melangkah searah        lainnya
jarum jam sepanjang jalur ellips pada kuadran


5|Page
7. Pindahkan posisi (x,y) ke titik pusat ellips     Karena p1k < 0, maka titik selanjutnya (2, 10)
   (xc, yc) dengan rumus
                                                    P1k+1 = p1k + 2   xk+1 +

8. Ulangi langkah untuk region 1 sampai             P1k+1 = -224 + 2.102.2 + 102 = - 276

                                                    Karena p1k > 0, maka titik selanjutnya (3, 9)

                                                    P10 = −            − +2             +
                                                                   2        2        2
                                                       = 276 + 2.10 .3 – 2.8 .9 + 10
                                                       = 276 + 600 – 1152 + 102 = -176
                                                    Dan seterusnya. Setelah ditabelkan maka
                                                    menjadi :
                                                      k          pk                (xk+1, yk+1)
                                                                                      (0,10)
                                                      0         -524                  (1,10)
                                                      1         -224                  (2,10)
                                                      2         276                    (3,9)
                                                      3         -176                   (4,9)
                                                      4         724                    (5,8)
                                                      5         800                    (6,7)
                                                      6         1204                   (6,6)
                                                      7         -575                   (7,5)
                                                      8         284                    (7,4)
                                                      9         -163                   (8,3)
                                                     10         1153                   (8,2)
                                                     11         961                    (8,1)
                                                     12         897                    (8,0)

Contoh :                                            Karena titik pusatnya tidak di (0,0) tetapi
                                                    (10,10) maka tabel diatas menjadi.
Algoritma pembangkitan elips dengan                                   Titik pusat (0,0)  Titik pusat
                                                       k      pk
perhitungan “Elips Titik Tengah” Diketahui                              (xk+1, yk+1)       (0,100)
jari-jari lingkaran rx = 8 dan ry = 10, dan titik                                       (xk+1, yk+1)
pusat (100,100), Buatlah tabel perhitungan                                 (0,10)       (100,110)
                                                      0      -524          (1,10)       (101,110)
untuk titik-titik yang dihasilkan oleh algoritma
                                                      1      -224          (2,10)       (102,110)
elips.
                                                      2      276            (3,9)       (103,109)
(x0, y0) = (0, ry) = (0, 10)                          3      -176           (4,9)       (104,109)
                                                      4      724            (5,8)       (105,108)
P10 = −        +                                      5      800            (6,7)       (106,107)
        2   2                                         6      1204           (6,6)       (106,106)
P10 = 10 – 8 10 + ¼
                                                      7      -575           (7,5)       (107,105)
    = 100 – 640 + 16 = -524
                                                      8      284            (7,4)       (107,104)
Karena p1k < 0, maka titik selanjutnya (1, 10)        9      -163           (8,3)       (108,103)
                                                      10     1153           (8,2)       (108,102)
P1k+1 = p1k + 2     xk+1 +                            11     961            (8,1)       (108,101)
                                                      12     897            (8,0)       (108,100)
P1k+1 = -524 + 2 102 1 + 102 = -224
6|Page
7|Page

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:132
posted:8/14/2012
language:Indonesian
pages:7