Izpitno vprašanje RAČ2PRA 2400

Iz MaFiRaWiki

GFDL Avtor tega članka je študent/ka KlaudijaGerencer.

Pripravil/a ga je pri predmetu Računalništvo 2 (FMF PRA).


Kljub temu ste vsi vabljeni k urejanju in popravkom, saj je bistvo wikija ravno v sodelovalnem delu.

Vprašanje

S pomočjo razreda LogoZelva izriši trikotnik Sierpinskega.

Ideja

Trikotnik Sierpinskega dobimo tako, da sredine stranic trikotnika povežemo in dobimo štiri manjše trikotnike. Srednjega izrežemo, na zunanjih treh trikotnikih postopek ponovimo. In to ponavljamo velikokrat.

Izhajajmo iz dejstva, da je 0-ta ( izhodna ) stopnja trikotnika kar običajen enakostraničen trikotnik.

Trikotnik stopnje n narišemo tako, da v spodnji levi kot, v spodnji desni kot in v zgornji kot narišemo trikotnik stopnje n-1.


Slika:Sierpinski.jpg

Slika prikazuje izris trikotnika Sierpinski po stopnjah. Prva stopnja je 0, zadnja stopnja je 4.

Odgovor

  1.  
  2. public class Sierpinski {
  3. public static void main(String[] args) {
  4. // stopnja
  5. int a = 2;
  6. // dolžina stranice
  7. int b = 200;
  8. // ustvarimo želvo
  9. Turtle zelva = new Turtle();
  10. // določimo, kje začnemo risati
  11. // z želvo se premaknemo za 200 v levo
  12. zelva.premakniSe(180, 200);
  13. // želvo obrnemo v levo za 180
  14. zelva.premakniSe(180, 0);
  15. // rekurzivno pokličemo metodo sierpinski, ki nam izriše
  16. // trikotnik sierpinskega
  17. sierpinski(a, b, zelva);
  18. }
  19. // metoda, ki nam izriše trikotnik sierpinskega
  20. public static void sierpinski(int stopnja, int dolzina, Turtle zelva) {
  21. // če je stopnja enaka 0, izrišemo navaden enakostranični trikotnik
  22. if(stopnja == 0) {
  23. zelva.narisi(0, dolzina);
  24. zelva.narisi(120, dolzina);
  25. zelva.narisi(120, dolzina);
  26. zelva.narisi(120, 0);
  27. }
  28. // trikotnik stopnje n narišemo tako, da v spodnji levi, v spodnji desni
  29. // in zgornji kot narišemo trikotnik stopnje n-1
  30. else {
  31. sierpinski(stopnja-1, dolzina/2, zelva);
  32. zelva.narisi(0, dolzina/2);
  33. sierpinski(stopnja-1, dolzina/2, zelva);
  34. zelva.narisi(120, dolzina/2);
  35. zelva.narisi(-120, 0);
  36. sierpinski(stopnja-1, dolzina/2, zelva);
  37. zelva.narisi(-120, dolzina/2);
  38. zelva.narisi(120, 0);
  39. }
  40. }
  41. }


Želvja grafika

Osebna orodja