Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Det skrå kast - dokumentation

Lignende præsentationer


Præsentationer af emnet: "Det skrå kast - dokumentation"— Præsentationens transcript:

1 Det skrå kast - dokumentation

2 Creating lines Disse to stykker af kildekoden tegner de horizontale og vertikale linjer og er altså en del af brugergrænsefladen

3 Creating axis labels Ovenstående kode tegner teksten teksten til de horizontale og vertikale streger og er ligeledes en del af brugergrænsefladen

4 Draw graph Ændres y1-=.5 til y1+=.5 vil grafens få en negativ hældning i stedet for en positiv, og altså gå nedad. Ved at ændre y1-=.5 til y1-=2 vil hældningen blive 4 gange så stejl I programvinduet er koordinatsættet (0,0) ikke i nederste venstre hjørne som i et traditionelt koordinatsystem, men derimod i øverste venstre hjørne, og y-aksen er omvendt af normalt, dvs. y-værdien stiger når man går nedad og falder når man går opad. X-aksen er stadig den samme, altså stiger når man går mod højre og falder mod venstre. #--5.Draw Graph-- delen tilhører både logik- og brugergrænseflade-laget. Funktionen w.create_line() er en del af brugergrænsefladen, da den tegner stregen der bliver vist på skærmen. Den resterende del er del af logik-laget. Her ændres der på de variabler der skal bruges til at tegne grafen.

5 Converting movement into position
vx += 0.5 vy += 0.5 vx += 0 vy += -1 vx += -1 vy += 0.5 #--6.Converting movement into position-- delen tilhører datalaget. Der beregnes og gemmes nye værdier til x1, y1 og vy.

6 Gravity For at den røde linje skal se ud som om den påvirkes af tyngdekraften, skal værdien der lægges til vy være positiv. Hvis vi tilføjer eller trækker fra vx vil x-retningen også være påvirket af en acceleration, men denne har ikke noget med tyngdekraften at gøre. På billedet herunder regnes først de nye positionsvariabler ud i #--6 ved hjælp af hastighedsvektorerne. Herefter regnes de nye hastighedsvektorer ud i #--7. Hvis vi byttede om på rækkefølgen af disse to udregninger ville positionsvariablerne altså få nogle andre værdier. Grunden til at vx+= og vy+= programmeres under #--7.Gravity-- og ikke under #--5.Draw graf-- har at gøre med rækkefølgen af de forskellige udregninger.

7 Collision with floor Hvor meget præcisionen skal øges for at stregen ikke går igennem afhænger af hvor høj starthastigheden er, da denne også er med til at bestemme hvor store skridt der tages. Fx hvis vy = -10 fra start vil den være +10 når den når ned til gulvet igen. Vil vi finde den præcision hvor der højest rykkes 1 pixel nedad ad gangen ved vy = 10 kan vi opstille en lille ligning: 10 * x = 1, hvor x er præcisionen. Dette giver en præcision på 0,1 som vi også har valgt at bruge i vores program Med en præcision på 0.5 vil stregen altså rykke sig med 10 * 0.5 = 5 pixels nedad på skærmen. Dette er synligt under gulvstregen og altså ikke præcist nok til programmets formål.

8 Collision with floor Øger vi præcisionen ved at gøre trinene mindre, betyder det også at simulatoren skal køre længere tid for at beregne og afbillede samme kast. Vores timeMax variabel der bestemmer hvor mange gange vi kører vores sumulation loop skal altså forøges. Som standard er vores timeMax = Øger vi præcisionen 10 gange, fx fra 0.1 til 0.01 vil vores simulation loop altså skulle køre gange i stedet, medmindre vi ikke også ændrer vores timeMax, i hvilket tilfælde grafen blot ikke tegnes færdigt, som vist nederst til højre. Præcision på 0.1 og timeMax = 3000 Præcision på 0.01 og timeMax = 3000

9 Collision with wall #--9.Collision with wall-- hører mest til datalaget, da denne del af programmet har med beregning af hastighedsvektorenes nye værdi at gøre.

10 Air resistance #--10.Air resistance-- delen har med datalaget at gøre. Denne del af programmet ligger tæt på computeren, da den har at gøre med udregning af forskellige variablers værdier at gøre.

11 Sammenligning med fysikresultater
Vinkel Længde 20° 233 30° 258 40° 253 45° 245 50° 207 Vores starthastighed målte vi til Der ikke er nogen tydelig logisk sammenhæng mellem vinkel og længde i vores resultater, og vores simulator vil derfor ikke komme til at passe lige godt til alle vinkler. Som man kan se på billedet skyder programmet for kort ved 20°, mens der skydes for langt ved nogle af de større vinkler. Det er dog relativt tæt på. For at tilpasse programmet har vi ændret på påvirkningen fra tyngdekraften og vindmodstanden.

12 Omskrivning af program til funktion
I korte træk har vi blot defineret funktionen fire_canon() i starten af koden, lige at have importeret math og Tkinter. Som parametre for denne funktion har vi sat variablerne angle og velocity. Vi brugte også disse to variabler tidligere, men da vi har dem som parametre i funktionen nu, skal vi ikke erklære dem igen. Herefter har vi bare rykket hele koden en tak ind, for at høre under fire_canon() funktionen. Resten af koden er stort set uændret.

13 Tilføjelse af en brugerflade ved hjælp af Tkinter
En af de væsentligste ting ved tilføjelsen af vores brugerflade, er at grafen først skal tegnes når der klikkes på ‘go’-knappen. Til dette har vi defineret en ny funktion msetvar() som vi flyttede alle udregninger samt tegningen af selve grafen ind under. Vi satte så ‘go’-knappen til at kalde denne funktion. Vi fik så programmet til at bruge de indtastede værdier i felterne som variabler for vinkel og starthastighed. Flere detaljer samt screenshots på de næste par sider.

14 Tilføjelse af en brugerflade ved hjælp af Tkinter
ment_angle og ment_velocity er begge string variabler til at gemme det der skrives i de to felter. mlabel_angle og mlabel_velocity er bare tekst. De to inputfelter laves med mentry_angle og mentry_velocity. Delen gemmer hvad der skrives i tekstfelterne i variablerne ment_angle og ment_velocity.

15 Tilføjelse af en brugerflade ved hjælp af Tkinter
Linjen angle = float(ment_angle.get()) virker på følgende måde: Først hentes værdien gemt i ment_angle ved get() funktionen. Herefter laves den om til en float værdi, som til sidst gemmes i angle variablen. Resten af programmet er der ikke ændret ved.


Download ppt "Det skrå kast - dokumentation"

Lignende præsentationer


Annoncer fra Google