Det skrå kast, en simulation Oplæg skrevet af Bartlomiej Rohard Warszawski den 5.november 29 Formål Eleven skal lave et program i Python, der udfører en simpel simulation af acceleration, hastighed, position, luftmodstand og simpel form for kollision i 2 dimensioner, ved hjælp af vektorer. a) Start hastighed, start position, luftmodstand og kollisions modstand skal kunne indstilles for det objekt der skal simuleres. b) Acceleration, hastighed og position skal simulatoren illustrere over tid i en graf. c) Simulatoren skal indstilles således, at den passer til data indsamlet fra forsøget Det skrå kast. Faglige kompetencer 2.1.1. Redegøre for grundlæggende funktioner af it-komponenter (hardware og software) og samspillet mellem dem 2.1.2. Redegøre for samspillet mellem it-komponenter og bruger 2.1.3. Redegøre for samspillet mellem it-komponenter og de fysiske omgivelser 2.1.5. Vælge og bruge it-komponenter som værktøj til løsning af et problem med relation til elevens, uddannelsens, virksomheders og samfundets brug 2.1.8. Realisere prototyper på it-systemer herunder kunne installere, konfigurere og tilpasse relevante itkomponenter. Kernestof 2.2.2 Samspillet mellem it-komponenter og bruger 2.2.2.1 fysiske grænseflader 2.2.5 It-værktøjer 2.2.5.1 dokumentation, formidling og visualisering 2.2.5.4 modellering og beregning.
Kildekoden Der er allerede lavet et eksisterende design, som I kan bruge. Flere elementer fra kildekoden mangler og det er meningen at I skal udfylde de manglende felter. Flere af overskrifterne har et nummer og skal laves i denne rækkefølge! Eks. #--1.Creating horisontal lines-- #--2.Creating vertical lines-- #--3.Creating horisontal axis labels Følgende kode skal bruges: http://bartek.dk/uv/skraa_kast/python-gfx-assignment.py
Beskrivelse af elementer fra kildekoden #==Initiation of variables== Det er her alle variablerne for hele programmet bliver til. Alle variablerne som skal bruges findes her, men I er velkommende til at tilføje flere. #--1.Creating horisontal lines-- Simulator vinduet skal ende med at se ud på følgende måde: En linje indtegnes med Tkinter på følgende måde: w.create_line(x start, y start, x slut, y slut, fill="farve i hexadecimal") eksempel: w.create_line(,,1,1, fill= #ff ), tegner en rød linje mellem punkterne (,) og (1,1) #--2.Creating vertical lines-- Se #--1.Creating horisontal lines for mere info.
#--3.Creating horisontal axis labels-- En tekstboks indsættes i Tkinter på følgende made: w.create_text(x, y, anchor= kompas retning, text= tekst indhold ) eksempel: w.create_text(1, 1, anchor= sw, text= ), tegner en tekstboks på (1,1) med teksten. Anchor= Tekst placering Anchor= Tekst placering n nw s se w e sw ne #--4.Creating vertical axis labels-- Se #--3.Creating horisontal axis labels for mere info #--5.Draw Graf-- Simulatoren får oplyst (x 1, y 1 ), (x 2 og y 2 ) i #==Initiation of variables== og der tegnes en streg i mellem (x1,y1) og (x2,y2) 15 1 5 (x2,y2) (x1, y1)
Simulatoren udregner den næste x og y (x 2, y 2 ) sættes til at være (x 1, y 1 ) og (x 1, y 1 ) sættes til at være (x ny, y ny ). Der tegnes en streg i mellem (x1,y1) og (x2,y2) 2 15 1 5 (x2, y2) (x1, y1) Det hele gentages igen 2 15 1 5 (x2,y2) (x1,y1) #--6.Converting movement into position-- Hastighed kan betragtes som en vektor: position start + vektor hastighed = position slut (x start ), y start ) x slut, y slut ) #--7.Gravity-- (x, y) +yhastighed
#--8.Collision with floor-- Y hastighed reflekteres. Hvis bolden er 1% elastisk, vil reflektionen være på 1%. X hastighed vil kun forandres, hvis bolden og gulvet har en friktion i mellem hinanden. Dvs. at x hastigheden formindskes til f.eks. 9% 15 1 5 #--9.Collision with Wall-- Samme metode som #--8.Collision with floor-- #--1.Air resistance-- X hastighed og y hastighed reducers hele tiden, på grund af luftmodstand. Denne reduktion kan f.eks. være til 99%.
#--11.Time Counter-- Det kan være smart at vise, hvornår bolden befinder sig forskellige steder på grafen. Se de blå værdier: #--12.Interface for setting up the variables Variablerne kan ændres på følgende 3 måder: 1. De kan ændres direkte i kildekoden (*.py filen) 2. Simulatoren kan laves som en funktion og indtastes i Python Console: simulation(xstart, ystart, xhastighed, yhastighed, luftmodstand, kollisionsmodstand, ) 3. Simulatoren kan få en grafisk brugerflade lavet med Tkinter. Læs mere om brugerflade design på http://infohost.nmt.edu/tcc/help/pubs/tkinter/ Evaluering og bedømmelse Vi gennemgår i fællesskab de forskellige programmer. Der lægges vægt på: 1. 5 % - Antal færdige elementer. 2. 1 % - Simulatorens resultater i forhold til resultaterne målt i virkeligheden. 3. 4 % - Simulatorens brugervenlighed.