13
BULATAN Takrif : Set titik-titik yang berada pada jarak r daripada pusat bulatan ( xc, yc) Rajah 3.1 : Bulatan dengan jejari r dan berpusat di (xc, yc) Perwakilan berasaskan rumus jarak (Teorem Pythagoras) berikut : Bagi menjana bulatan, bermula daripada kedudukan (xc r, yc) hingga ke (xc + r, yc) rumus berikut di gunakan : Dalam hal ini, persampelan dilakukan pada setiap unit x dan y yang sepadan didapati menggunakan rumus di atas. Walaupun mudah, namun hasil (bulatan yang dijanakan) mungkin tidak kelihatan menarik, terutama pada bahagian di mana kecerunan bagi garis tangen pada titik ( x,y ) di sempadan bulatan tersebut mempunyai nilai | m | > 1 (rujuk Rajah 3.2). Rajah 3.2 : Bulatan yang dijana menggunakan rumus di atas, dengan jejari 7 piksel. Memandangkan punca kuasa dua memberikan 2 nilai yang mungkin (satu punca bernilai positif, satu lagi negatif), dua nilai y didapati pada setiap kedudukan persampelan pada paksi-x. Dalam hal ini sebenarnya konsep simetri (simetri 2 hala pada paksi-x) telah digunakan secara tidak langsung. Pengiraan boleh dikurangkan dengan menggunakan ciri simetri, contoh paling mudah adalah dalam contoh yang diterangkan di atas.

BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada

BULATAN

Takrif : Set titik-titik yang berada pada jarak r daripada pusat bulatan ( xc, yc)

Rajah 3.1 : Bulatan dengan jejari r dan berpusat di (xc, yc)

Perwakilan berasaskan rumus jarak (Teorem Pythagoras) berikut :

Bagi menjana bulatan, bermula daripada kedudukan (xc – r, yc) hingga ke (xc + r, yc) rumus berikut di gunakan :

Dalam hal ini, persampelan dilakukan pada setiap unit x dan y yang sepadan didapati menggunakan rumus di atas. Walaupun mudah, namun hasil (bulatan yang dijanakan) mungkin tidak kelihatan menarik, terutama pada bahagian di mana kecerunan bagi garis tangen pada titik ( x,y ) di sempadan bulatan tersebut mempunyai nilai | m | > 1 (rujuk Rajah 3.2).

Rajah 3.2 : Bulatan yang dijana menggunakan rumus di atas, dengan jejari 7 piksel.

Memandangkan punca kuasa dua memberikan 2 nilai yang mungkin (satu punca bernilai positif, satu lagi negatif), dua nilai y didapati pada setiap kedudukan persampelan pada paksi-x.

Dalam hal ini sebenarnya konsep simetri (simetri 2 hala pada paksi-x) telah digunakan secara tidak langsung. Pengiraan boleh dikurangkan dengan menggunakan ciri simetri, contoh paling mudah adalah dalam contoh yang diterangkan di atas.

Page 2: BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada

Pada hakikatnya, bulatan mempunyai lebih banyak sifat simetri. Titik-titik yang membentuk sempadan pada sukuan pertama bulatan boleh digunakan untuk mendapatkan titik-titik yang setara pada tiga sukuan yang lain. Katakan salah satu titik yang dimaksudkan adalah (a, b). Berdasarkan titik ini, tiga titik lain yang setara ditunjukkan di dalam rajah 3.3.

Rajah 3.3 : Simetri 4 hala pada bulatan

Walau bagaimanapun, bulatan juga mempunyai sifat simetri 8 hala. Bagi setiap titik (a, b) yang terletak pada sempadan bulatan pada oktan pertama (1/8 daripada bulatan), 7 titik lain pada sempadan bulatan yang sama (pada oktan berbeza) boleh didapati menggunakan konsep pantulan (rujuk Rajah 3.4)

Rajah 3.4 : Simetri 8 hala pada bulatan

Persampelan dilakukan pada setiap unit bagi menentukan piksel yang paling hampir dengan laluan bulatan.

Pertimbangkan dulu satu bulatan yang berpusat di asalan. Pada sempadan bulatan di oktan pertama (bahagian di antara x = 0 hingga x = y), kecerunan garis tangen pada setiap titik di sempadan berubah dari 0 hingga –1. Memandangkan | m | < 1, persampelan dilakukan pada setiap unit x dan nilai y yang sempadan ditentukan.

Bagi bulatan dengan jejari r dan berpusat di ( xc, yc ), pengiraan akan dillakukan berdasarkan bulatan dengan jejari yang sama tetapi berpusat di asalan. Piksel yang akan diplotkan didapati dengan menambahkan nilai ( xc, yc ) kepada nilai yang didapati berdasarkan bulatan yang berpusat di asalan, iaitu :

Nilai bagi bulatan berpusat di (0,0) Nilai bagi bulatan berpusat di (xc,yc)

( x, y ) ( x + xc, y + yc )

Page 3: BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada

Memandangkan persampelan dilakukan pada unit x dalam oktan pertama, nilai x akan sentiasa bertambah sebanyak 1 unit. Katakan piksel semasa adalah (xk, yk), piksel berikutnya yang akan diplotkan adalah sama ada (xk + 1, yk) atau (xk + 1, yk – 1) seperti yang ditunjukkan di dalam rajah 3.5.

Rajah 3.5 : Titik tengah di antara 2 piksel yang terlibat pada kedudukan persampelan semasa dalam algoritma bulatan titik tengah.

Titik tengah di antara 2 piksel yang menjadi ‘calon’ untuk diplot seterusnya akan diuji sama ada : ia berada di dalam atau di luar sempadan bulatan. Fungsi yang digunakan :

f ( x, y ) = x2 + y2 – r2

Gantikan sebarang titik ( x, y ) :

Pemalar penentu digunakan diwakili pk, yang menguji titik tengah di antara 2 titik yang terlibat. (Titik tengah tersebut iaitu ( xk + 1, yk - ½ ))

Berdasarkan nilai yang diperolehi :

pk

Negatif

• titik tengah yang di uji berada di dalam sempadan bulatan • piksel pada baris imbasan yk lebih hampir dengan laluan

sebenar • pilih piksel ( xk+1, yk )

Positif

• titik tengah yang di uji berada di luar sempadan bulatan • piksel pada baris imbasan yk-1 lebih hampir dengan laluan

sebenar • pilih piksel ( xk+1, yk-1 )

Algoritma bulatan titik tengah adalah seperti berikut :

Page 4: BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada

1. Input nilai jejari, r, serta pusat bulatan ( xc, yc ). Tetapkan titik pertama di atas lilitan bulatan

yang berpusat di asalan sebagai ( 0, r ).

2. Kira nilai awal pemalar penentu sebagai :

p0 = - r

3. Pada setiap xk, bermula pada k = 0, uji nilai pemalar penentu :

Jika pk < 0, titik seterusnya adalah ( xk + 1, yk ) dan

pk+1 = pk + 2xk+1 + 1,

Jika pk > 0, titik seterusnya adalah (xk+1, yk-1) dan

pk+1 = pk + 2x k+1 + 1 – 2yk+1

4. Tentukan titik-titik simetri pada 7 oktan yang lain.

5. Dapatkan kordinat sebenar titik yang akan diplotkan bagi bulatan berpusat di (xc, yc) iaitu (x +

xc, y + yc)

6. Ulang langkah 3 hingga 5 sehingga x > y.

Carta Alir Algoritma Bulatan Titik Tengah (Midpoint Circle Algorithm) :

Page 5: BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada
Page 6: BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada

Berikut adalah sebahagian aturcara bagi membentuk bulatan yang dikehendaki :- i) Bulatan

Biasa, ii) Bulatan Simetri 4, iii) Bulatan Simetri 8 dan iv) Bulatan Titik Tengah (Midpoint Circle)

i) Algoritma untuk Bulatan Biasa

public void circleBiasa(int xCenter, int yCenter, int radius, Color c) { int pix = c.getRGB(); int x, y, r2; r2 = radius * radius; for (x = -radius; x <= radius; x++) { y = (int) (Math.sqrt(r2 - x*x) + 0.5); raster.setPixel(pix, xCenter + x, yCenter + y); raster.setPixel(pix, xCenter + x, yCenter - y); } }

ii) Algoritma untuk Bulatan 4 Simetri

public void circleSym4(int xCenter, int yCenter, int radius, Color c) { int pix = c.getRGB(); int x, y, r2; r2 = radius * radius; raster.setPixel(pix, xCenter, yCenter + radius); raster.setPixel(pix, xCenter, yCenter - radius); for (x = 1; x <= radius; x++) { y = (int) (Math.sqrt(r2 - x*x) + 0.5); raster.setPixel(pix, xCenter + x, yCenter + y); raster.setPixel(pix, xCenter + x, yCenter - y); raster.setPixel(pix, xCenter - x, yCenter + y); raster.setPixel(pix, xCenter - x, yCenter - y); } }

iii) Algoritma untuk Bulatan 8 Simetri

public void circleSym8(int xCenter, int yCenter, int radius, Color c) { int pix = c.getRGB(); int x, y, r2; r2 = radius * radius; raster.setPixel(pix, xCenter, yCenter + radius); raster.setPixel(pix, xCenter, yCenter - radius); raster.setPixel(pix, xCenter + radius, yCenter); raster.setPixel(pix, xCenter - radius, yCenter); y = radius; x = 1; y = (int) (Math.sqrt(r2 - 1) + 0.5); while (x < y) { raster.setPixel(pix, xCenter + x, yCenter + y);

Page 7: BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada

raster.setPixel(pix, xCenter + x, yCenter - y); raster.setPixel(pix, xCenter - x, yCenter + y); raster.setPixel(pix, xCenter - x, yCenter - y); raster.setPixel(pix, xCenter + y, yCenter + x); raster.setPixel(pix, xCenter + y, yCenter - x); raster.setPixel(pix, xCenter - y, yCenter + x); raster.setPixel(pix, xCenter - y, yCenter - x); x += 1; y = (int) (Math.sqrt(r2 - x*x) + 0.5); } if (x == y) { raster.setPixel(pix, xCenter + x, yCenter + y); raster.setPixel(pix, xCenter + x, yCenter - y); raster.setPixel(pix, xCenter - x, yCenter + y); raster.setPixel(pix, xCenter - x, yCenter - y); } }

iv) Algoritma untuk Bulatan Titik Tengah (Midpoint Circle)

public void circleMidpoint(int xCenter, int yCenter, int radius, Color c) { int pix = c.getRGB(); int x = 0; int y = radius; int p = (5 - radius*4)/4; circlePoints(xCenter, yCenter, x, y, pix); while (x < y) { x++; if (p < 0) { p += 2*x+1; } else { y--; p += 2*(x-y)+1; } circlePoints(xCenter, yCenter, x, y, pix); } }

Sila lukis bulatan di bawah mengikut kategori yang telah di tetapkan untuk melihat hasilnya :

Page 8: BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada

Contoh

Di beri jejari bulatan, r = 10 dan pusat bulatan (10, 20). Dapatkan titik-titik pada oktan pertama bagi bulatan tersebut. Sila tunjukkan jalan penyelesaiannya menggunakan Algoritma Bulatan Titik Tengah / Midpoint Circle.

Penyelesaian :

1. Inputkan jejari, r = 10 dan pusat bulatan (Xc, Yc) sebagai (10, 20) Tetapkan titik pertama di atas lilitan bulatan yang berpusat di asalan sebagai (0, r) --> (0, 10) 2. Cari nilai awal pemalar penentu (Po) : Po = 5/4 - r = 5/4 - 10 = -35/4 @ -8.75

3. Seterusnya, pada setiap xk, bermula pada k = 0, uji nilai pemalar penentu tadi :

Jika pk < 0, titik seterusnya adalah ( xk + 1, yk ) dan

pk+1 = pk + 2xk+1 + 1

Jika pk > 0, titik seterusnya adalah (xk+1, yk-1) dan

pk+1 = pk + 2x k+1 + 1 – 2yk+1

* Berdasarkan nilai pemalar penentu (Po) yang diperolehi adalah -35/4 @ -8.75 maka :

* Po memenuhi syarat :

pk < 0, titik seterusnya adalah xk akan bertambah 1 dan yk adalah tetap (xk = 1, yk = 10)

Seterusnya cari Pk di mana, p1 = pk + 2xk+1 + 1

= -8.75 + 2(1) +1

= -5.75

* P1 memenuhi syarat :

pk < 0, titik seterusnya adalah xk akan bertambah 1 dan yk adalah tetap (xk = 2, yk = 10)

Seterusnya cari Pk di mana, p2 = pk + 2xk+1 + 1

= -5.75 + 2(2) +1

Page 9: BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada

= -0.75

* P2 memenuhi syarat :

pk < 0, titik seterusnya adalah xk akan bertambah 1 dan yk adalah tetap (xk = 3, yk = 10)

Seterusnya cari Pk di mana, p3 = pk + 2xk+1 + 1

= -0.75 + 2(3) +1

= 6.25

* P3 memenuhi syarat :

pk > 0, titik seterusnya adalah xk akan bertambah 1 dan yk akan berkurang sebanyak 1(xk = 4,

yk = 9) Seterusnya cari Pk di mana, p2 = pk + 2xk+1 + 1 - 2yk+1

= 6.25 + 2(4) +1 - 2(9)

= -2.75

* P4 memenuhi syarat :

pk < 0, titik seterusnya adalah xk akan bertambah 1 dan yk adalah tetap (xk = 5, yk = 9)

Seterusnya cari Pk di mana, p5 = pk + 2xk+1 + 1

= -2.75 + 2(5) +1

= 8.25

Page 10: BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada

* P5 memenuhi syarat :

pk > 0, titik seterusnya adalah xk akan bertambah 1 dan yk akan berkurang sebanyak 1(xk = 6,

yk = 8) Seterusnya cari Pk di mana, p6 = pk + 2xk+1 + 1 - 2yk+1

= 8.25 + 2(6) +1 - 2(8)

= 5.25

* P6 memenuhi syarat :

pk > 0, titik seterusnya adalah xk akan bertambah 1 dan yk akan berkurang sebanyak 1(xk = 7,

yk = 7) Seterusnya cari Pk di mana, p7 = pk + 2xk+1 + 1 - 2yk+1

= 5.25 + 2(7) +1 - 2(7)

= 6.25

Jadual di bawah menunjukkan titik-titik simetri bagi oktan yang pertama berdasarkan

pengiraan di atas

di mana pengiraan akan berhenti sekiranya x >= y :

k Pk X Y X + Xc Y + Yc

0 -35/4 @ -8.75 1 10 11 30

1 -5.75 2 10 12 30

2 -0.75 3 10 13 30

3 6.25 4 9 14 29

4 -2.75 5 9 15 29

5 8.25 6 8 16 28

6 5.25 7 7 17 27

4. Tentukan titik-titik simetri pada 7 oktan yang lain menggunakan simetri 8 hala.

Jadual di bawah menunjukkan titik-titik simetri bagi 7 oktan yang lain :

Page 11: BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada

Oktan2 (b, a) @ (x, y)

x y

10 1

10 2

10 3

9 4

9 5

8 6

7 7

Oktan3 (b, -a) @ (x, -y)

x -y

10 -1

10 -2

10 -3

9 -4

9 -5

8 -6

7 -7

Oktan4 (a, -b) @ (x, -y)

x -y

1 -10

2 -10

3 -10

4 -9

5 -9

6 -8

7 -7

Oktan5 (-a, -b) @ (-x, -y)

-x -y

-1 -10

-2 -10

Page 12: BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada

-3 -10

-4 -9

-5 -9

-6 -8

-7 -7

Oktan6 (-b, -a) @ (-x, -y)

-x -y

-10 -1

-10 -2

-10 -3

-9 -4

-9 -5

-8 -6

-7 -7

Oktan7 (-b, a) @ (-x, y)

-x y

-10 1

-10 2

-10 3

-9 4

-9 5

-8 6

-7 7

Oktan8 (-a, b) @ (-x, y)

-x y

-1 10

-2 10

Page 13: BULATAN - ivan_maurits.staff.gunadarma.ac.idivan_maurits.staff.gunadarma.ac.id/Downloads/files/69198/Lingkaran... · terletak pada sempadan bulatan pada oktan pertama (1/8 daripada

-3 10

-4 9

-5 9

-6 8

-7 7