Skip to content

Instantly share code, notes, and snippets.

@redhead
Created January 14, 2011 12:25
Show Gist options
  • Save redhead/779544 to your computer and use it in GitHub Desktop.
Save redhead/779544 to your computer and use it in GitHub Desktop.
// jednotliva Kruznice je reprezentovana touto tridou Kruznice:
public class Kruznice {
public double x; // x stredu
public double y; // y stredu
public double r; // polomer
}
/////////////////////////////////////////////////////////////////////////////////
// metoda pro vypocet obsahu nejmensiho obdelniku:
public static double obsah(Kruznice[] pole) {
double minX = 0; // nejmensi X, kde se nejaky kruh dotyka zleva
double maxX = 0; // nejvetsi X, kde se nejaky kruh dotyka zprava
double minY = 0; // nejmensi Y, kde se nejaky kruh dotyka zdola
double maxY = 0; // nejvetsi Y, kde se nejaky kruh dotyka shora
// prochazime postupne vsechny kruznice
for(int i = 0; i < pole.length; i++) {
// pro prehlednost ulozim kazdou kruznici v cyklu do promenne k
Kruznice k = pole[i]; // pole[i] obsahuje instanci tridy Kruznice (reprezentuje jednu kruznici)
if(k.x + k.r > maxX) // x+r je nejvetsi X-ova hodnota v kruhu
maxX = k.x + k.r; // pokud je vetsi nez drive nalezene maximum X, ulozime tuto hodnotu
if(k.x - k.r < minX) // x-r je nejmensi X-ova hodnota v kruhu
minX = k.x - k.r; // pokud je mensi nez drive nalezene minimum X, ulozime tuto hodnotu
if(k.y + k.r > maxY) // to samy pro maximalni Y
maxY = k.y + k.r;
if(k.y - k.r < minY) // to samy pro minimalni Y
minY = k.y - k.r;
}
// delku strany podel x-ove osy zjistime odectenim meznich hodnot X
double x = maxX - minX;
// delku strany podel y-ove osy zjistime odectenim meznich hodnot Y
double y = maxY - minY;
return x * y; // vratime obsah obdelniku x*y
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment