Shapes/Circle Shape

From GameDevID

Jump to: navigation, search

Dalam membuat aplikasi grafis(bitmap) sepertinya Photoshop, GIMP, MS-Paint, Graphic Gale dan sebangsanya, tentu kita harus membuat peralatan - peralatan yang pada umumnya ada di dalam aplikasi tersebut. Salah satunya adalah "Circle Tool" yang berfungsi untuk membuat "fill" di dalam gambar kita. Dalam logikanya itu bisa di selesaikan beberapa kode.

Diantaranya adalah salah satu ini:

Dengan Pemeriksaan Satu - Satu

Ide utamanya adalah mengecek satu persatu pixel di dalam rectangle (x, y, width, height) apakah pixel tersebut akan di warnai atau tidak. Karena yang kita inginkan adalah bentuk lingkaran maka diperlukan properti x, y, dan radius. pseudocode:

 FOR j FROM 0 TO height
   FOR i FROM 0 TO width
     IF ( CALL square_root (i^2 +  j^2) <= radius) THEN
       SET color to position (x + i,y + j)
     ENDIF
   ENDFOR
 ENDFOR

Dengan Flood Fill

Ide utamanya adalah membuat line di sekeliling shape yang ingin kita buat dan melakukan flood fill di tengah2 objek, ini dilakukan di tempat lain, bukan di tempat utama / tempat yang kita inginkan untuk ditampilkan. Setelah itu dikopi ke tempat utama, sesuai x dan y nya.

 FOR n FROM 0 TO radius
   SET j = n
   SET i = CALL round (CALL square_root(radius^2 - j^2))
   
   SET color to position (radius + x - 1, radius + y - 1)
   SET color to position (radius + y - 1, radius +x - 1)
   
   SET color to position (radius - x, radius + y - 1)
   SET color to position (radius - y, radius + x - 1)
   
   SET color to position (radius + x - 1, radius - y)
   SET color to position (radius + y - 1, radius - x)
   
   SET color to position (radius - x, radius - y)
   SET color to position (radius - y, radius - x)
   
   IF ( j EQUAL i - 1) THEN
     BREAK the loop
   ENDIF
 ENDFOR
 CALL flood_fill(CALL round(radius), CALL round(radius))
Personal tools