Moduł Turtle

Programowanie Python
Efekt wywołania funkcji płot(’12112211′)

Napisz funkcję rysuj(a, znak), która rysuje pojedynczą sztachetę płotu według wzoru poniżej. Parametr a to długość siatki kwadratu, znak oznacza rodzaj sztachety (1 lub 2).
Napisz funkcję płot(kod) rysującą płotek według kodu przekazanego przez parametr kod. Końcowy rysunek powinien zawierać dokładnie dwa razy więcej sztachet ułożonych symetrycznie względem prostej przechodzącej przez środek płotu. Zadbaj o to, aby wrócić żółwiem do środka rysunku. Cały rysunek płotu powinien mieć stałą szerokość równą 600.


Efekt wywołania funkcji płotek(’12112211122212121′)


Efekt wywołania funkcji płotek(’1221′)

Rysunek pomocniczy

Programowanie Python

Mamy listę punktów na płaszczyźnie. Napisz jednoparametrową funkcję prost(lista), po wywołaniu której powstanie rysunek złożony z prostokąta i punktów danych jako parametr:
  • prostokąt ma krawędzie równoległe do osi x oraz y,
  • jest najmniejszym prostokątem zawierającym wszystkie punkty.
Rysunek powyżej przedstawia efekt wywyołania funkcji prost([[20,-50], [200,0],[-40,70],[125,25]]).
Oryginalna treść zadania pochodzi z OEIIZK

Programowanie Python

Mamy listę punktów na płaszczyźnie. Napisz jednoparametrową funkcję dwa_kola(lista), po wywołaniu której powstanie rysunek złożony z dwóch kół:
  • środek obu kół jest w punkcie [0, 0],
  • promień większego kola koloru zielonego ma najmniejszą możliwą długość taką, by w kole mieścily się wszystkie punkty
  • promień mniejszego koła koloru białego ma największą możliwą długość taką, by w kole nie było żadnych punktow z wyjątkiem jego brzegu.
Rysunek powyżej przedstawia efekt wywołania funkcji dwa_kola([[10,20],[0,100],[30,40],[25,25]])
Oryginalna treść zadania pochodzi z OEIIZK

Programowanie Python

Napisz funkcję losowe_kola(ile, od, do), która rysuje ile kół o losowym położeniu, kolorze wypełnienia i losowym promieniu z przedziału [od, do]. ¯adne dwa koła nie powinny się przecinać i wszystkie powinny się mieścić w oknie, którego rozmiary należy pobrać w programie. W zadaniu zakładamy, że dla podanych parametrów istnieje rozwiązanie. Rysunek powyżej przedstawia efekt wywołania funkcji losowe_kola(5, 100, 160).

Programowanie Python

Rysunek powyżej przedstawia efekt wywołania funkcji losowe_kola(20, 15, 100).

Programowanie Python

Rysunek powyżej przedstawia efekt wywołania funkcji losowe_kola(220, 15, 100).

Content 1

Programowanie Python

Napisz funkcję kolizja(x1, y1, a1, b1, x2, y2, a2, b2), która zwraca True, gdy prostokaty się dotykają, natomiast False w przeciwnym wypadku. Parametry x1, y1 oznaczają współrzędne lewego górnego wierzchołka, paramtry a1, b1 oznaczają długości boków pierwszego prostokąta. Pozostałe parametry dotyczą analogicznie drugiego prostokata.

Programowanie Python

Napisz funkcję losowe_prostokaty(ile, a, b, od, do), która rysuje ile prostokątów o bokach równoległych do krawędzi ekranu o losowym położeniu i losowych bokach a oraz b. ¯adne dwa prostokąty nie powinny się przecinać i wszystkie powinny się mieścić w oknie, którego rozmiary należy pobrać w programie. Kolorem czerwonym oznaczony jest prostokąt o największej, różowym o drugiej co do wielkości, zielonym o najmniejszej powierzchni. W zadaniu zakładamy, że dla podanych parametrów istnieje rozwiązanie. Rysunek powyżej przedstawia efekt wywołania funkcji losowe_prostokaty(10, 100, 300).

Programowanie Python

Rysunek powyżej przedstawia efekt wywołania funkcji losowe_prostokaty(100, 50, 300).

Napisz funkcję rekurencyjną spirala_kw(dlugosc), która rysuje spiralę kwadratową według wzoru. Parametr długosc określa długość najmniejszego boku spirali, a każdy następny bok jest o 5 jednostek dłuższy od poprzedniego. Rysunek przedstawia wywołania funkcji: spirala_kw(20).

Zmodyfikuj tak funkcję rekurencyjną z poprzedniego przykładu, aby żółw wrócił do punktu startowego.

Napisz funkcję rekurencyjną spirala_tr(dlugosc), która rysuje spiralę trójkątną według wzoru. Parametr długość określa długość najkrótszego boku spirali, każdy następny bok jest o 5 jednostek dłuższy od poprzedniego. Zadbaj o to, aby żółw wrócił do punktu startowego. Rysunek przedstawia wywołanie funkcji spirala_tr(20).
Napisz funkcję rekurencyjną spirala_p(dlugosc), która rysuje spiralę pięciokątną według wzoru. Parametr długość określa długość najkrótszego boku spirali, a każdy następny bok jest o 5 jednostek dłuższy od poprzedniego. Zadbaj o to, aby żółw wrócił do punktu startowego. Rysunek przedstawia wywołanie funkcji spirala_p(20).

Napisz funkcję rekurencyjną spirala(bok, kat), która rysuje spiralę według wzoru. Parametr bok określa długość boku spirali, a kat – kąt rysowania następnego boku, który jest o 2 jednostki krótszy od poprzeniego. Zadbaj o to, aby żółw wrócił do punktu startowego. Rysunek przedstawia wywołanie funkcji spirala(200, 122).

Napisz funkcję rekurencyjną koch(poziom, długosc), która rysuje płatek według wzoru. Parametr poziom oznacza poziom wywołania rekurencyjnego, a długosc – długość linii na poziomie 0. Rysunki przedstawiają wywołania funkcji: koch(0, 300), koch(1, 300), koch(2, 300), koch(3, 300).

Napisz funkcję platek(poziom, dlugosc, n) rysującą cały Płatek Kocha. Parametr n oznacza ponadto z ilu kawałków składa się cały płatek. Rysunek przedstawia wywołanie funkcji platek(3, 300, 3).

Content 1

Napisz funkcję rekurencyjną bin(poziom, długosc), która rysuje drzewo binarne. Parametr poziom oznacza poziom wywołania rekurencyjnego od 1 do 12, a długosc – długość linii na poziomie 0. Rysunek przedstawia wywołanie funkcji: bin(0, 100).

Rysunek przedstawia wywołanie funkcji bin(1, 100).

Rysunek przedstawia wywołanie funkcji bin(2, 100).

Rysunek przedstawia wywołanie funkcji bin(4, 100).

Napisz funkcję trojkat(a), która rysuje trójkąt równoboczny o boku a. Rysunek przedstawia wywolanie funkcji trojkat(100).

Napisz funkcję rekurencyjną sierp(stopien, a), która rysuje trojkat Sierpińskiego o podanym stopniu od 1 do 6 i boku a. Rysunek przedstawia wywołanie funkcji sierp(1, 200).

Rysunek przedstawia wywołanie funkcji sierp(2, 200).

Napisz funkcję figura(stopien, a), która rysuje sześciokąt foremny o danym stopniu rekurencji, boku a i losownych kolorach wypełnienia. Rysunek przedstawia wywolanie funkcji figura(3, 150).

Napisz funkcję kwadrat(a), która rysuje kwadrat o boku a. Rysunek przedstawia wywołanie funkcji: kwadrat(100).

Napisz funkcję rekurencyjną dywan(poziom, a) rysującą dywan Sierpińskiego. Parametr poziom oznacza poziom wywołania rekurencyjnego od 1 do 4, parametr a długość boku. Rysunek przedstawia wywołanie funkcji dywan(1, 200).

Rysunek przedstawia wywołanie funkcji dywan(2, 200).

Rysunek przedstawia wywołanie funkcji dywan(3, 200).

Napisz funkcję kwadrat(a), która rysuje kwadrat o boku a oraz funkcję rekurencyjną drzewo(stopien, a) rysującą w każdym wywołaniu rekurencyjnym trzy kwadraty na bokach równamiennego trójkąta prostokątnego. Rysunek przedstawia wywołanie funkcji: drzewo(1,100).

Rysunek przedstawia wywołanie funkcji: drzewo(2,100).

Rysunek przedstawia wywołanie funkcji: drzewo(3,100).

Rysunek przedstawia wywołanie funkcji: drzewo_k(8,80). Ustaw losowy kąt ostry trójkąta prostokątnego w każdym wywołaniu rekurencyjnym. Zadbaj o kolory pnia i korony drzewa.
Zabawa polega na wygenerowaniu nieskończonego ciągu punktów według określonej zasady:
  • Zaczynamy od wygenerowania wierzchołków trójkąta równobocznego ABC i wyboru dowolnego punktu P1.

  • Losujemy wierzchołek trójkąta np. A, a kolejny punkt P2 jest środkiem powstałego odcinka AP1.

  • Losujemy wierzchołek trójkąta np. B, i wybieramy środek P3 odcinka P2B.

  • Losujemy wierzchołek trójkąta np. A i wybieramy punkt P4 jako środek odcinka AP3 i tak dalej…
Napisz program, który wygeneruje w opisany sposób 100 000 punktów. Jaka figura powstała?
Wskazówka: Współrzędne środka odcinka są średnimi arytmecznymi współrzędnych jego końców.
Napisz funkcję element(a), gdzie parametr a oznacza długości wszystkich widocznych odcinków rysunku przedstawionego poniżej. Rysunek przedstawia wywołanie funkcji element(50).

Napisz funkcję gwiazda(a), która złożona jest z trzech powyższych elementów, gdzie parametr a oznacza długość pojedynczego krótszego odcinka. Zacznij rysować ze środka gwiazdy. Rysunek przedstawia wywołanie funkcji gwiazda(50).

zajęcia dodatkowe

Napisz funkcję ornament(ile), gdzie parametr ile oznacza liczbę od 1 do 16 gwiazd, z których składa się ornament.Odległość między środkami dwóch sąsiednich gwiazd ornamentu wynosi 10a, natomiast odległość dwóch skrajnych gwiazd jest stała i wynosi 500.

ornament(3)

ornament(5)
zajęcia pozaszkolne

Chcemy wykonać posadzkę. W tym celu rysujemy siatkę pomocniczą i rozbijamy naszą poszadzkę na mniejsze elementy.

Napisz trzy funkcje pomocnicze: kwadrat(a), trojkat(a), trojkatm(a), gdzie parametr a oznacza długość kwadratu siatki. Poniżej znajdują się odpowiednio wywołania funkcji: kwadrat(50), trojkat(50), trojkatm(50).

Zauważamy, że posadzka zbudowana jest z następujących dwóch elementów czterokrotnie wywołanych i odpowiednio obróconych:


plus środkowy kwadrat.
Napisz funkcje pomocnicze odpowiednio: motyw1(a) oraz motyw2(a), gdzie parametr a oznacza długość boku kwadratu siatki. Rysunki przedstawiają wywołania funkcji motyw1(50) oraz motyw2(50).

Napisz funkcję pomocniczą motywp(a) grupującą dwa powyższe rysunki w jedną całość, gdzie parametr a oznacza długość boku siatki rysunku.

Wykorzystują funkcję motywp(a), napisz funkcję bezparametrową motyw() pokazaną na rysunku poniżej: (cztery wywołania funkcji motywp(a) odpowiednio obrócone plus środkowa posadzka). Wysokość rysunku wynosi 480.

Napisz program, który dla podanych rozmiarów 0 < a, b < 800 liczb całkowitych prostokąta wypełni go szachownicą złożoną z możliwie największych jednakowych kwadratów.
Przykład: Podaj szerokość prostokąta: 300 Podaj wysokość prostokąta: 150 Długość boku pojedynczego kwadratu szachownicy wynosi: 150

Przykład 2: Podaj szerokość prostokąta: 200 Podaj wysokość prostokąta: 120 Długość boku pojedynczego kwadratu szachownicy wynosi: 40

zajęcia dodatkowe

Przykład 3: Podaj szerokość prostokąta: 180 Podaj wysokość prostokąta: 80 Długość boku pojedynczego kwadratu szachownicy wynosi: 20

zajęcia dodatkowe

Rozważmy przekształcenie postaci:

Współczynniki tego przekształcenia będziemy przekazywać w postaci ciągu liczb:
[a, b, c, d, e, f]
. Pewne przekształcenia (przekształcenia zwężające) mają tą własność, że przekształcając dowolny punkt wielokrotnie według tego samego przekształcenia zbiega on do punktu stałego. Złożenie kilku przekształceń zwężających może dać ciekawy efekt.
Przykłady:

Napisz program, który wygeneruje przynajmniej 3 różne fraktale według podanych przekształceń. Poniżej znajduje sie paproć wygenerowana według przekształceń:
[0.2,-0.5,-0.5,0.3,0.4,-0.4]
[0.2,0.4,0.4,-0.3,0.2,-0.4]
[0.6,0.2,-0.1,-0.1,0.7, 0.3]
[0.0,-0.2,0.0,0.1,0.3,-0.6]

zajęcia dodatkowe

Dla przekształceń:
[0,0.9,-0.4,-0.4,0,-0.5]
[0.5,-1,0.5,0.3,0.6,-0.6]

W celu przyśpieszenia programu wykorzystaj funkcję tracer(0) oraz aktualizuj okno z wygenerowanymi punktami co 1000 iteracji. Zostaw program na kilka minut. Do rysowania punktów wykorzystaj np. funkcję dot(3, „blue”).
Zadanie pochodzi ze strony. Tam też znajduje się doładny opis tego zaganienia
(zob. tw. Banacha o punkcie stałym)
L-systemy (systemy Lindemayera), znajdują zastosowanie w grafice komputerowej, szczególnie w generowaniu fraktali i modelowaniu roœlin.
L-systemy wykorzystują tzw. produkcje. Działają one w następujący sposób: dany mamy symbol początkowy zwany aksjomatem – niech będzie to np. ac. Dane są również reguły np: a:b oraz b:ba – co w uproszczeniu możemy czytać następująco: jeżeli mamy a to zastępujemy je symbolem b, jeżeli mamy b to zastępujemy go symbolami ba. Czyli dla naszego aksjomatu i powyższych reguł otrzymamy:
  • 1 iteracja: ac pod wpływem a:b przechodzi w bc a następnie pod wpływem b:ba w bac
  • 2 iteracja: bac przechodzi w bbc a następnie w babac
  • 3 iteracja: babac w bbbbc i dalej do babababac
Powstały w ten sposób ciąg symboli jest już po kilku iteracjach dosyć dobrym przybliżeniem fraktala, do którego dąży w granicy. Następnie otrzymany w ten sposób ciąg symboli interpretujemy zgodnie z zasadami „grafiki żółwia” i otrzymujemy gotowy obraz. ¯ółw rozumie następujące symbole:
  • F idźź do przodu ustaloną odległość rysując linię
  • f idź do przodu ustaloną odległość nie rysując linii
  • + skręć o ustalony kąt w prawo
  • – skręć o ustalony kąt w lewo
Poniżej przedstawiono przykłady systemów i ich obrazów.
Wyspa Kocha
aksjomat: F+F+F+F
reguła: F:F+F-F-FF+F+F-F
kąt: 90o
krok: 10
powtórzeń: 2

Trójkąt Sierpińskiego
aksjomat: F+F+F
reguła: F:F+F-F-F+F
kąt: 60o
krok: 40
powtórzeń: 3

zajęcia dodatkowe

Pentadendryt
aksjomat: F
reguła: F:F+F-F–F+F+F
kąt: 72o
krok: 4
powtórzeń: 4

zajęcia dodatkowe

Smok Heighway’a
aksjomat: FX
reguły:
X:X+YF+
Y:-FX-Y
kąt: 90o
krok: 3
powtórzeń: 13

zajęcia dodatkowe

Pełna wersja zadania znajduje się tutaj