Grafikk og geometri#

Læringsutbytte

Etter å ha arbeidet med dette temaet, skal du kunne:

  1. Bruke skilpaddegrafikk til å visualisere geometriske sammenhenger.

  2. Utforske geometriske mønstre.

Så tidlig som mot slutten av 40-tallet ble små skilpaddeliknende roboter brukt til å trene opp ingeniører og informatikere i algoritmisk tenkning og programmering. Matematikeren, informatikeren og læreren Seymour Papert videreutviklet disse skilpadderobotene slik at de kunne tas i bruk av barn og ungdom. Han var også en av utviklerne bak programmeringsspråket Logo, som kom ut i 1967. Logo hadde som formål å være et programmeringsspråk som skulle inspirere og engasjere, i tillegg til at det skulle kunne brukes til å utforske matematikk. Mest kjent er Logo for turtle-grafikken/skilpaddegrafikken, der du kan programmere en peker i et koordinatsystem på samme måte som skilpadderobotene til Papert. Dette skal vi se på her.

Underveisoppgave

Se videoen nedenfor. Dette er en dokumentar fra 1972 der matematikeren Seymour Papert forklarer det pedagogiske prosjektet bak Turtle og programmering i skolen. Legg merke til også Papert ønsket å integrere programmering for å lære matematikk (og musikk og kunst!), ikke for å lære programmering i seg selv. Prøv å oppsummere hovedpoengene i videoen. Det kan være nyttig å vite at Papert var elev av Jean Piaget.

La oss se på en skilpadde som heter Gunnar. Gunnar følger enkle kommandoer, som “forward”, “backward”, “right” og “left”. Vi kan også gi form og farge til skilpadden med enkle kommandoer. Her er et eksempel på hvordan Gunnar kan bevege seg:

Underveisoppgave

Endre programmet ovenfor slik at Gunnar tegner en trekant. Hva er sammenhengen mellom vinkelen som skilpadden snur og vinklene i trekanten?

Å tegne en trekant krever få linjer kode, men hva hvis du vil tegne en åttekant, en førtitokant, eller en nittisekskant? Det er slitsomt og kjedelig å skrive samme kommando hundrevis av ganger. Og det er totalt unødvendig. Vi bruker nemlig løkker til å gjenta kode, for eksempel slik:

Oppgave 1

Forklar hvordan programmet ovenfor fungerer. Tegn så en firkant og en femkant.

Oppgave 2

Tegn en 100-kant. Hvilken geometrisk figur likner dette på, og hvorfor?

Oppgave 3

Tegn et hus! Du bestemmer selv hvor detaljert det skal være.

Oppgave 4*

Lag en Python-funksjon trekant, firkant og femkant som tegner hver sin geometriske figur.

Oppgave 5*

Lag en Python-funksjon mangekant med n og lengde som parametre. Funksjonen skal tegne en n-kant med sidelengde lengde.

Det finnes mange flere kommandoer vi kan gi til skilpadden vår. Her er noen eksempler. Eksperimenter med kommandoene og se hva de gjør!

Oppgave 6

Få Gunnar til å tegne et menneske eller en blomst. Legg en plan før du begynner. Hvilke geometriske former vil du ta utgangspunkt i?

Oppgave 7

Tegn OL-ringene. Bestem selv hvor mye de skal likne de faktiske OL-ringene:

Geometriske beregninger#

Vi kan også gjør enkle beregninger i Python, for så å bruke disse beregningene til å tegne med skilpaddegrafikk. For eksempel kan vi regne ut hypotenusen i en rettvinkla trekant med katetlengder 3 og 4 slik:

kat1 = 3
kat2 = 4
hyp = (kat1**2 + kat2**2)**0.5 #eventuelt kan vi importere sqrt fra pylab
print("Lengden til hypotenusen er:", hyp)
Lengden til hypotenusen er: 5.0

Oppgave 8

Tegn en trekant med vinkler 30, 60 og 90 grader. Gjør eventuelle beregninger i selve programmet.

Flere skilpadder#

Dersom vi ønsker å tegne ved hjelp av flere pekere (eller skilpadder) i koordinatsystemet, må vi faktisk gi dem navn. Vi sier at vi oppretter to skilpaddeobjekter, med et sett med felles egenskaper og muligheten for å modifisere disse egenskapene hver for seg. Vi kan for eksempel lage to skilpadder som heter Shelly og Raphael. Shelly kan få være grønn, mens Raphael er rød. Shelly kan også være raskere enn Raphael. Dette gjør vi slik:

Oppgave 9: Ei kjærleikshistorie

De to skilpaddene, Shelly og Raphael, er glad i hverandre. De bor sammen i origo. Men en dag blir de uvenner, og Shelly løper 300 skritt mot venstre, mens Raphael går 300 skritt mot høyre. Men så ser de et tre der de pleide å være da de var unge og nyforelskede. Treet er 300 skritt rett opp fra huset deres i origo. Hvordan må de gå for å møte hverandre der igjen og oppleve kjærlighet nok en gang?

Kunst (?)#

Lag noe! Tenk, vær kreativ, prøv, feil, prøv igjen – utfordre deg selv! Med skilpaddegrafikk kan du både slippe fantasien løs og lære litt om geometri i samme slengen. Kanskje “kunstverket” nedenfor kan inspirere?

Oppgaver#

Oppgave 10

Tegn en trekant med vinkler 30, 60 og 90 grader. Den lengste sida skal være 100 lang.

Oppgave 11

La skilpadden gå 30 bortover, vende 90 grader og gå 40 oppover. Vend den så 143,13 grader. Hvor langt må den gå nedover for å komme tilbake til utgangspunktet og danne en rettvinkla trekant? Du kan skrive ut posisjonen i koordinatsystemet ved å skrive print(pos()).

Oppgave 12

Tegn en rettvinkla trekant ABC med vinkler \(\angle A = 45^o\) og \(\angle B = 90^o\), der hypotenusen skal være 282,84 lang.

Oversikt over kommandoer#

Her har du en oversikt over flere nyttige turtle-kommandoer:

from turtle import *   # Importerer kommandoene vi trenger

forward(100)           # Går framover 100 skritt
backward(100)          # Går bakover 100 skritt
right(45)              # Snur 45 grader mot høyre
left(45)               # Snurt 45 grader mot venstre
goto(30,45)            # Går til koordinaten (30, 45)
print(pos())           # Skriver ut posisjonen til pekeren
penup()                # Slutter å tegne
pendown()              # Begynner å tegne igjen
circle(50)             # Tegner sirkel med radius 50
 
shape('turtle')        # Gir pekeren form som en skilpadde
color('green')         # Fargelegger pekeren
pencolor('red')        # Fargelegger det vi tegner
pensize(10)            # Angir tykkelsen på strekene som tegnes
speed(4)               # Tegnefart fra 1-10 (men 0 er raskest!)

fillcolor("limegreen") # Angir fyllfarge
begin_fill()           # Starter å fylle figuren med farge
end_fill()             # Slutter å fylle figuren med farge

Video#

Se videoen nedenfor for en innføring eller repetisjon til skilpaddegrafikk.