Algoritma Bulatan Titik Tengah            Contoh dan Penyelesaian       Soalan dan Penyelesaian (Input Pengguna)

 

Mari Cuba Lukis

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);

            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 :