Razmetane krožnice

Napiši program, ki nariše nekaj naključno postavljenih krožnic, tako kot je prikazano na sliki:

krogi

Poveži s prvo

Podobno kot prej, hkrati pa poveži še središče prve krožnice s središči vseh ostalih krožnic.

Krogi

Vse povezano

Sedaj pa s črtami poveži središča vseh krožnic.

krogi_crte

Krožnice na krožnici

Namesto, da točke po risalni površini posuješ naključno, jih raje enakomerno razporedi po krožnici.

Krogi

... in jih, tako kot prej, poveži z daljicami.

Krogi

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.

Krogi

Gore

Napiši program, ki ustvari naključno gorato pokrajno.

gora

Nalog se lahko lotiš po svoje, lahko pa uporabiš eleganten rekurzivni algoritem:

Začni z vodoravno daljico čez celo platno.

gora0

Poišči točko na sredini in jo dvigni ali spusti za naključno število pikslov.

gora1

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].

gora2

Po štirih iteracijah lahko pričakuješ nekaj takega:

gora4

Zadnja sprememba: sreda, 10 maj 2023, 11:41