Shapes/Circle Shape
From GameDevID
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))
