Elipsa **

Zadání

Odevzdejte do 11. ledna 2022 do zp/Elipsa.java.

Nakreslete elipsu, pokud je zadána velikost hlavní a vedlejší poloosy.

Např. pro vstup 30 a 6 program vytiskne následující:

java Elipsa 30 6
              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Neřešte problém, že znaky jsou vyšší než širší, ale berte znakovou mřížku jako čtvercovou. Pro vykreslení pak využijte definici elipsy.

Nápověda: pro určení, jestli bod P[x,y] z obrázku níže leží v elipse stačí spočítat hodnotu ( x a ) 2 + ( y b ) 2

x y M F1 F2 S1 S2 S3 S4 a a a b P e p


By Antonsusi [GFDL or CC-BY-3.0], via Wikimedia Commons.

Program pro nakreslení kruhu lze zapsat např. takto:

public static boolean uvnitrKruhu(int x, int y, int polomer) {
    return x * x + y * y < polomer * polomer;
}

...

for (int x = -polomer; x <= polomer; x++) {
    for (int y = -polomer; y <= polomer; y++) {
        if (uvnitrKruhu(x, y, polomer)) {
            znak = 'X';
        } else {
            znak = ' ';
        }
        System.out.printf("%c", znak);
    }
    System.out.println();
}
Licence Creative Commons
Alej.alisma.cz, jejímž autorem je Vojtěch Horký, podléhá licenci
Creative Commons Uveďte autora-Zachovejte licenci 4.0 International.