2009-06-20 25 views
8

Tüm hareketin ızgara tabanlı olduğu bir oyun yapıyorum. Ayrıca bir daire içinde dolaşabilecek varlıklar yapmam. Herkesin karenin ızgarası dışında bir daire oluşturmak için herhangi bir öneri var mı (MS Paint, kare pikselden bir daire oluşturmak için daire aracını kullanır gibi).Izgarada daire nasıl yapılır?

cevap

3

Bressenham'ın Orta Nokta Çember algoritması için Java Uygulamam;

private void drawCircle(final int centerX, final int centerY, final int radius) { 
    int d = 3 - (2 * radius); 
    int x = 0; 
    int y = radius; 
    Color circleColor = Color.white; 

    do { 
     image.setPixel(centerX + x, centerY + y, circleColor); 
     image.setPixel(centerX + x, centerY - y, circleColor); 
     image.setPixel(centerX - x, centerY + y, circleColor); 
     image.setPixel(centerX - x, centerY - y, circleColor); 
     image.setPixel(centerX + y, centerY + x, circleColor); 
     image.setPixel(centerX + y, centerY - x, circleColor); 
     image.setPixel(centerX - y, centerY + x, circleColor); 
     image.setPixel(centerX - y, centerY - x, circleColor); 
     if (d < 0) { 
      d = d + (4 * x) + 6; 
     } else { 
      d = d + 4 * (x - y) + 10; 
      y--; 
     } 
     x++; 
    } while (x <= y); 
} 

Tam sınıf uygulama ve diğer birçok dil örneği rosetta sitesinde bulunabilir; http://rosettacode.org/wiki/Bitmap/Midpoint_circle_algorithm

İlgili konular