Moduł Turtle
Płot
✓
|
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. |
|
Rysunek pomocniczy![]() |
Najmniejszy prostokąt
✓
|
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:
|
Oryginalna treść zadania pochodzi z OEIIZK |
Dwa koła
✓
|
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ół:
|
Oryginalna treść zadania pochodzi z OEIIZK |
Losowe koła
✓
|
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). |
|
Rysunek powyżej przedstawia efekt wywołania funkcji losowe_kola(20, 15, 100). |
|
Rysunek powyżej przedstawia efekt wywołania funkcji losowe_kola(220, 15, 100). |
Losowe prostokąty
✓
Content 1
|
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. |
|
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). |
|
Rysunek powyżej przedstawia efekt wywołania funkcji losowe_prostokaty(100, 50, 300). |
Spirale
✓
|
|
|
![]() |
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). |
Płatek Kocha
✓
|
|
Drzewo binarne
✓
Content 1
|
|
|
|
Trójkąt Sierpińskiego
✓
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). |
Dywan Sierpińskiego
✓
|
|
|
|
Drzewo Pitagorasa
✓
|
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 w chaos
✓
|
|
|
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. ![]() |
Ornament
✓
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). |
|
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) |
Posadzka
✓
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. |
|
Szachownica
✓
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 |
|
Przykład 3: Podaj szerokość prostokąta: 180 Podaj wysokość prostokąta: 80 Długość boku pojedynczego kwadratu szachownicy wynosi: 20 |
|
Przekształcenia
✓
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] |
|
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
✓
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:
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 |
|
Pentadendryt aksjomat: F reguła: F:F+F-F–F+F+F kąt: 72o krok: 4 powtórzeń: 4 |
|
Smok Heighway’a aksjomat: FX reguły: X:X+YF+ Y:-FX-Y kąt: 90o krok: 3 powtórzeń: 13 |
|
Pełna wersja zadania znajduje się tutaj |