Michael Jokil 11-05-2012



Relaterede dokumenter
HTX, RTG. Rumlige Figurer. Matematik og programmering

Klasse 1.4 Michael Jokil

Det skrå kast, en simulation

Kasteparabler i din idræt øvelse 1

Læringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4

Eksponentielle modeller

ROSKILDE TEKNISKE GYMNASIUM. Læringsprogram. Lommeregner

Visualiseringsprogram

Programmering C RTG

Dernæst vil der komme et vindue frem, hvor man kan ændre på x- og y-aksen samt andre indstillinger så som farve og skrift.

Matematik A og Informationsteknologi B

Matematikprojekt Belysning

Vi har valgt at analysere vores gruppe ud fra belbins 9 grupperoller, vi har følgende roller

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

Dokumentation af programmering i Python 2.75

Online billede filtrering

Tyngdekraft i Scratch

FUNKTIONER. Eks. hvis man sætter 3 ind på x s plads bliver værdien 2*3 + 5 = 11. Sætter man 4 ind på x s plads vil værdien blive 2*4 + 5 = 13

10/11/2013 Avedøreværket. Matematik og IT. Mikkel G, Erik, Alexander og Mathias ROSKILDE HTX KLASSE 3.4

IT og Programmering eksamens projekt

Lektion 7 Funktioner og koordinatsystemer

Af: Safa Sarac Klasse 3.4 Skole: Roskilde Tekniske Gymnasium, HTX Vejleder(e): Karl B Dato: 26. marts 2012

Matematik C. Cirkler. Skrevet af Jacob Larsen 3.år HTX Slagelse Udgivet i samarbejde med Martin Gyde Poulsen 3.år HTX Slagelse.

HTX. Afsluttende projekt. E-learning Komunikation/It C Helena, Katrine og Rikke

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

Kom godt i gang med Fable-robotten

Tværfagligt Projekt. Matematik og IT

Eksponentielle modeller

Fable Kom godt i gang

Mini SRP. Afkøling. Klasse 2.4. Navn: Jacob Pihlkjær Hjortshøj, Jonatan Geysner Hvidberg og Kevin Høst Husted

Kapitel 3 Lineære sammenhænge

APPENDIX A INTRODUKTION TIL DERIVE

5/11/2015. Programmering. Hussein Al-Saidi ROSKILDE TEKNINSK GYMNASIE VEJLEDER: CHRISTOFFER S.

Eksponentielle modeller

Ugur Kitir HTX - Roskilde 01/

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Fable Kom godt i gang

i x-aksens retning, så fås ). Forskriften for g fås altså ved i forskriften for f at udskifte alle forekomster af x med x x 0

Komunikation/It C Helena, Katrine og Rikke

Daniel Kaasing Roskilde Tekniske Gymnasium Programmeringsjournal. Lavet af Daniel Kaasing. Lærer: Karl G Bjarnason

Det grafiske billede af en andengradsfunktion er altid en parabel. En parabels skæring med x-aksen kaldes nulpunkter eller rødder.

Uafhængig og afhængig variabel

Mircobit Kursus Lektion 4 (Du skal her vælge Lets Code Og herefter Block Editor.)

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

For at få tegnet en graf trykkes på knappen for graftegning. Knap for graftegning

Det skrå kåst. Af Allan Tobias Langhoff, Nikolaj Egholk Jakobsen og Suayb Köse

Løsningsforslag Mat B 10. februar 2012

Arealet af en trekant Der er mange formler for arealet af en trekant. Den mest kendte er selvfølgelig

Photofiltre nr. 85 Lave grafikbillede hvor vi bruger plugins side 1

Gratisprogrammet 27. september 2011

Mitch Studerer programmering og elsker at lave fede programmer. Han holder også meget af film og kunst. Mitch er i det hele taget en fin fyr.

Rumfang af væske i beholder

Lavet af Ellen, Sophie, Laura Anna, Mads, Kristian og Mathias Fysikrapport blide forsøg Rapport 6, skråt kast med blide Formål Formålet med f

Hvis man ønsker mere udfordring, kan man springe de første 7 opgaver over. Skitser det omdrejningslegeme, der fremkommer, når grafen for f ( x)

Undervisningsbeskrivelse

[FUNKTIONER] Hvornår kan vi kalde en sammenhæng en funktion, og hvilke egenskaber har disse i givet fald. Vers. 2.0

Matematik B. Højere Teknisk Eksamen. Projektoplæg

Computerspil. Hangman. Stefan Harding, Thomas Bork, Bertram Olsen, Nicklas Thyssen og Ulrik Larsen Roskilde Tekniske Gymnasium.

Grønland. Matematik A. Højere teknisk eksamen

Bedste rette linje ved mindste kvadraters metode

Guide til din computer

Høvdingebold. Introduktion. Scratch

Excel tutorial om indekstal og samfundsfag 2008

Undervisningsbeskrivelse

Matema10k. Matematik for hhx C-niveau. Arbejdsark til kapitlerne i bogen

Opgaver om koordinater

Om at finde bedste rette linie med Excel

Brugervejledning til Graph

Automatisering Af Hverdagen

qwertyuiopåasdfghjklæøzxcvbnmqw ertyuiopåasdfghjklæøzxcvbnmqwert yuiopåasdfghjklæøzxcvbnmqwertyui Polynomier opåasdfghjklæøzxcvbnmqwertyuiopå

Lineære modeller. Taxakørsel: Et taxa selskab tager 15 kr. pr. km man kører i deres taxa. Hvis vi kører 2 km i taxaen koster turen altså

Oversigt. funktioner og koordinatsystemer

Årsplan 8. Klasse Matematik Skoleåret 2016/17

Variabelsammenhænge og grafer

Studieretningsopgave

Brøk Laboratorium. Varenummer

Bevægelse i to dimensioner

gudmandsen.net 1 Parablen 1.1 Grundlæggende forhold y = ax 2 bx c eksempelvis: y = 2x 2 2x 4 y = a x 2 b x 1 c x 0 da x 1 = x og x 0 = 1

Institut for Matematik, DTU: Gymnasieopgave. Arealmomenter

Arduinostyret klimaanlæg Afsluttende projekt programmering C

Modellering betyder at lave en matematisk model, der beskriver en praktisk situation. I det følgende arbejdes med lineære funktioner.

Optimale konstruktioner - når naturen former. Opgaver. Opgaver og links, der knytter sig til artiklen om topologioptimering

Talrækker. Aktivitet Emne Klassetrin Side

Teknologi & Kommunikation

Undersøgelse af funktioner i GeoGebra

Graph brugermanual til matematik C

Projekt - Visual Basic for Applications N på stribe

Lineære sammenhænge. Udgave Karsten Juul

Differentialregning. Et oplæg Karsten Juul L P

Transkript:

HTX, RTG Det skrå kast Informationsteknologi B Michael Jokil 11-05-2012

Indholdsfortegnelse Indledning... 3 Teori... 3 Kravspecifikationer... 4 Design... 4 Funktionalitet... 4 Brugerflade... 4 Implementering... 5 Produktudvikling... 5 1. Iteration... 5 2. Iteration... 9 3. Iteration... 10 Videreudvikling... 12 Konklusion... 12 Bilag 1... 13 Af Michael Jokil Klasse 3.4 Side 2 af 14

Indledning I dette projekt vil jeg prøve at udvikle et program som skal hjælpe fysik elever på HTX med at forstå et forsøg som hedder "Det skrå kast". Grunden til at jeg har valgt dette er fordi at jeg har talt med mange, som synes at det er et svært forsøg, og synes at det godt kunne have være, både bedre forklaret og bedre illustreret. Denne problemstilling har jeg så efterfølgende undersøgt med hensyn til hvordan jeg kunne fremstille løsningsforslag, som ville kunne hjælpe elever som har problemer med forsøget. Ud fra dette har jeg så fundet frem til at jeg kan lave et program i Python, som ved hjælp af dets indbyggede bibliotek "Tkinter" kan illustrere "Det skrå kast". Teori I dette projekt vil jeg gøre brug af udviklingsmiljøet og programmeringssproget "Visual Python" som jeg skal bruge til at skrive den kode som opgør programmet, samt flere af dets biblioteker som jeg skal bruge under udviklingen af programmet. Til udviklingen af selve brugerfladen bruger jeg "Tkinter" som er et "bibliotek" i Python. Biblioteker i programmeringssprog er et udtryk for en samling af kode skrevet i det gældende sprog som definere en eller flere funktioner som gør det nemmere for brugeren at bruge sproget, ved for eksempel at skrive en kode som gør det muligt at sætte noget i x'ne, med hensyn til matematik. Når man bruger koordinaterne til et vindue i Tkinter skal man huske på at punktet (0,0) befinder sig øverst i venstre side af vinduet og x bevæger sig til højre når det bliver større, mens y bevæger sig nedad når den bliver større, og ikke op som i et normalt koordinatsystem. Af Michael Jokil Klasse 3.4 Side 3 af 14

Kravspecifikationer I dette afsnit vil jeg definere de overordnede krav som jeg gerne vil have programmet skal overholde før at mener at det virker. De overordnede krav som jeg gerne vil have at programmet skal overholde er som følgende: 1. Programmet skal yde et visuelt hjælpemiddel til at forstå hvad "Et skråt kast" er 2. Programmet skal være nemt at bruge 3. "Det skrå kast" skal være opstillet på en nem og overskuelig måde Disse krav er stillet på baggrund af nogle af de "user stories" som jeg har indsamlet under min indledende problemfase. Design Funktionalitet Programmet skal fungere således at der skal være af afsnit i koden som handler om at fremstille et koordinatsystem, et afsnit som handler om Tkinter og et afsnit som handler om selve simuleringen af forsøget. Brugerflade Brugerfladen er designet således at den består af et enkelt vindue som viser første kvadrant af et koordinat system som fylder hele vinduet undtagen bunden, hvor de knapper man kan trykke på, befinder sig. Af Michael Jokil Klasse 3.4 Side 4 af 14

Implementering Produktudvikling 1. Iteration Hvad skal der i 1. prototype Min plan for den første prototype er at jeg gerne vil have at programmet skal kunne tegne et koordinatsystem og en simpel funktion som for eksempel x = y. Krav for 1. prototype Skal kunne tegne et koordinat system Skal kunne tegne en simpel funktion Gennemgang af 1. prototype I gennemgang af prototype 1 vil jeg komme ind på importering af biblioteker, definering af variabler, brugerfladen med hensyn til Tkinter og simuleringen af en simpel funktion. importering af biblioteker Til denne prototype har jeg brugt biblioteket Tkinter, og biblioteket "math" som er det bibliotek hvor mange matematiske formler og udtryk er defineret. Definering af variabler Til brug i 1. prototype har jeg defineret følgende variabler, som ses på billedet herunder: "Tidslut" definerer en variabel som jeg skal bruge til at fortælle programmet hvornår det skal stoppe med at tegne funktionen, som kommer til at være "Det skrå kast". Af Michael Jokil Klasse 3.4 Side 5 af 14

x1, y1 er xy-koordinatenerne til det punkt hvor funktionen skal begynde. "Hastighedx" er den hastighed grafen skal bevæge sig hen ad x-aksen for hvert interval. "Hastighedy" er den hastighed grafen skal bevæge sig op ad y-aksen for hvert interval. x2 = x1, og y2 = y1, sætter henholdsvis x- og y-koordinatenerne for punkt 1 lig med et nyt punkt, punkt 2. Brugerflade med Tkinter Det er så her i programmet hvor vinduet hvori det visuelle design kommer til at ligge i. Koden nedenfor bruges til at oprette et vindue, eller "canvas" mede højden 480 og bredden 640, og fylde det med hvid farve. (#ffffff, er hexidecimal kode for hvid) Udvikling af koordinatsystemet Til udviklingen af koordinatsystemet for x-aksen har jeg brugt følgende kode: Den gør brug af kommandoen "w.create_line(x1,y1,x2,y2)" som er en kommando, der fortæller Tkinter at nu skal den oprette en linie fra punktet (x1,y1) til punktet (x2,y2), (to vilkårlige punkter, som ikke skal forveksles med variablerne x1, y1, x2 og y2), og kommandoen "fill" fortæller så programmet hvad farve den linie skal være, igen i hexidecimal. Her tegner jeg så en sort x-akse, og derefter et gitter af nye grå linier i intervaller på 100 pixel. Derefter gør jeg det samme for y-aksen, tegner en sort y-akse og derefter grå linier hver 100 pixel. Af Michael Jokil Klasse 3.4 Side 6 af 14

Så vil jeg også gerne have, at der bliver vist nogle enheder på akserne. Dette gør jeg ved hjælp af følgende: Her bruger jeg så, i stedet for kommandoen "w.create_line()", w.create_text(x,y,text=""), som skriver teksten som fremgår mellem apostroferne og i punktet (x,y). Derefter får jeg dette billede: Af Michael Jokil Klasse 3.4 Side 7 af 14

Simuleringen Til at simulere en enkelt funktion har jeg brugt koden: Det denne kode gør er at den laver et loop der bliver ved med at køre så længe dets betingelser er opfyldt, i dette tilfælde så længe "tidstart" er mindre end "tidslut". Derudover ligger loopet så 1 til "tidstart" for hver iteration. For så at tegne grafen ligges der 1 til x, og -1 til y for hver iteration, og derefter laver kommandoen "w.create_line()" en linje mellem (x1,y1) som nu er henholdsvis 1 og -1 større og (x2,y2) som er lig det (x1,y1) var før der blev lagt noget til. Herefter bliver x2 sat lig med x1 og y2 lig med y1, og loopet startes forfra, indtil betingelserne for loopet ikke længere bliver opfyldt. Test Her i testen for prototype 1 skulle jeg over holde disse to krav: Skal kunne tegne et koordinat system Skal kunne tegne en simpel funktion Under test får jeg dette billede: Af Michael Jokil Klasse 3.4 Side 8 af 14

Hvilket tydeligt viser at der både bliver tegnet et koordinatsystem og funktionen x = y som er en den simple funktion, som jeg har valgt at bruge. 2. Iteration Hvad skal der i 2. prototype I anden prototype vil jeg gerne have fremstillet det såkaldte "Skrå kast" i programmets koordinatsystem. Krav for 2. prototype Skal kunne tegne et koordinat system Skal kunne tegne "Det skrå kast" Gennemgang af 2. prototype I denne, og følgende prototyper vil jeg nøjes med at gennemgå det som er nyt fra sidst. Som man kan se er der nu blevet indført to ekstra ting til funktionen som opgør "Det skrå kast". Der er nu sat en hastighedsberegner ind, som gør at for hver iteration af loopet reduceres hastigheden en lille smule. Derudover er der også sat tyngdekraft på, sådan at der er en kraft som "trykker ned" på funktionen for hver iteration. Test Her i testen for prototype 2 skulle jeg over holde disse to krav: Skal kunne tegne et koordinat system Skal kunne tegne "Det skrå kast" Af Michael Jokil Klasse 3.4 Side 9 af 14

Under test får jeg dette billede: Her kan man tydeligt se at der stadig bliver tegnet et koordinatsystem og at der nu også bliver tegnet "Det skrå kast". 3. Iteration Hvad skal der i 3. prototype I tredie prototype skal jeg have sat alle de små beregninger ind i en funktion som jeg definerer, derudover skal jeg have lavet kollision med x-aksen således at den affyrede "bold hopper" på x- aksen. Endvidere skal jeg have lavet en knap som starter "Det skrå kast" i den visuelle brugerflade. Krav for 3. prototype Skal kunne tegne et koordinat system Skal kunne tegne "Det skrå kast" "Det skrå kast" skal kollidere med x-aksen De små beregninger i programmet skal sættes sammen og defineres i en funktion Der skal laves en knap til at starte "Det skrå kast" Gennemgang af 3. prototype I denne prototype har jeg fået alle de små beregninger, inklusiv den nye, som beregner kollisionen med x-aksen defineret i en funktion jeg har kaldt "kast". Dette kan ses i bilag 1, hvor hele kildekoden til programmet kan findes. Den nye beregning ser således ud. Af Michael Jokil Klasse 3.4 Side 10 af 14

og gør det at så længe y1-koordinaten er større end 430, som er der hvor x-aksen befinder sig, og så længe at hastigheden er større end nul, så skal hastigheden for y reduceres med en faktor på 0,6 og inventeres da det er -0,6 der bliver multipliceret med. Derudover har jeg også lavet en knap som kalder funktionen "kast". Den ser således ud: Det den gør er, at den opretter en knap, som er førdefineret i Tkinter, sætter den til at hedde "Start" og giver kommandoen "kast", som er funktionen, hvis der bliver trykket på den. Test Her i testen for prototype 3 skulle jeg over holde disse to krav: Skal kunne tegne et koordinat system Skal kunne tegne "Det skrå kast" "Det skrå kast" skal kollidere med x-aksen De små beregninger i programmet skal sættes sammen og defineres i en funktion Der skal laves en knap til at starte "Det skrå kast" Under test får jeg først dette billede: Her kan man tydeligt se at der stadig bliver tegnet et koordinatsystem, og nu også en "Start" knap. Af Michael Jokil Klasse 3.4 Side 11 af 14

Hvis jeg trykker på "Start" sker følgende: Den tegner nu igen "Det skrå kast", denne gang også med kollision med x-aksen, og hvis man kigger i program koden i bilag 1 kan med se alle de små beregninger er sat ind i funktionen "kast". Videreudvikling Eventuelle videreudviklinger af programmet skal gå med at indsætte knapper i brugerfladen med tilhørende kode i programmet, som fungerer således at det giver brugeren af programmet mulighed for selv at vælge udgangsvinkel på kastet, og den hastighed hvormed "bolden" affyres. Herudover kunne man også lave luftmodstand, som for eksempel kunne bruges til at simulere vind. Konklusion Programmet hjælper måske ikke helt så meget endnu som jeg havde håbet på det ville. Jeg ville gerne have nået at gøre således at programmet kunne modtage input fra brugeren, i form af affyringsvinkel og hastighed, og derefter lave "Det skrå kast" ud fra det. Dog synes jeg stadig at programmet har opfyldt de hovedkrav som jeg har sat, i hvilke jeg definerede at det vigtigste var at programmet kunne give at visuelt billede af, hvad "Det skrå kast" rent faktisk går ud på. Af Michael Jokil Klasse 3.4 Side 12 af 14

Bilag 1 Af Michael Jokil Klasse 3.4 Side 13 af 14

Af Michael Jokil Klasse 3.4 Side 14 af 14