Naloge
Razmetane krožnice
Napiši program, ki nariše nekaj naključno postavljenih krožnic, tako kot je prikazano na sliki:
Poveži s prvo
Podobno kot prej, hkrati pa poveži še središče prve krožnice s središči vseh ostalih krožnic.
Vse povezano
Sedaj pa s črtami poveži središča vseh krožnic.
Krožnice na krožnici
Namesto, da točke po risalni površini posuješ naključno, jih raje enakomerno razporedi po krožnici.
... in jih, tako kot prej, poveži z daljicami.
Nesekajoči se krogi
Napiši program, ki naključno razmeče 1000 krogov, tako da
- se središče nobenega kroga ne nahaja znotraj drugega kroga,
- se krožnice med seboj ne sekajo.
Naloge se loti tako, da si naključno izmišljaš koordinate središča in polmere. Če je središče kroga znotraj katerega od že narisanih krogov (te si boš moral očitno zapomniti), si izmisliš novo središče. Če pa ugotoviš, da bi se krožnica sekala s katero od obstoječih krožnic, zmanjšaj polmer kroga za toliko, da se bosta krožnici ravno dotikali.
Gore
Napiši program, ki ustvari naključno gorato pokrajno.
Nalog se lahko lotiš po svoje, lahko pa uporabiš eleganten rekurzivni algoritem:
Začni z vodoravno daljico čez celo platno.
Poišči točko na sredini in jo dvigni ali spusti za naključno število pikslov.
Postopek rekurzivno ponovi na levi in desni daljici. Interval znotraj katerega izbiraš odmik sredinske točke pa zmanjšaj na polovico. Če si za odmik prve sredinski točke izbiral med števili iz intervala [-200, 200], boš za novi sredinski točki interval skrčil na [-100, 100].
Po štirih iteracijah lahko pričakuješ nekaj takega: