HTX, RTG. Rumlige Figurer. Matematik og programmering



Relaterede dokumenter
Michael Jokil

Projektopgave Rumlige figurer. Matematik & Programmering Lars Thomsen Klasse 3.4 HTX Roskilde Vejledere: Jørn & Karl 05/

Visualiseringsprogram

Klasse 1.4 Michael Jokil

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

Programmering C RTG

Jeg har i forbindelse med it og programmering designet og udviklet et it-produkt, som kan beregne rødder i en anden gradsligning.

Sammenlign og byt. Et eksempel på dokumentering af et program

Andreas Møinichen og Aske Märcher

Dokumentation af programmering i Python 2.75

Rumlige figurer. Matematik A og Programmering C - projekt

ROSKILDE TEKNISKE GYMNASIUM. Læringsprogram. Lommeregner

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

1 Indholdsfortegnelse

Afsluttende - Projekt

Numerisk differentiation og integration med Python

Programmering 19/ ROSKILDE TEKNISKE GYMNASIUM. Projektbeskrivelse. Programmering. Rasmus Kibsgaard Riehn-Kristensen

Eksponentielle modeller

Rumlige figurer. SO-projekt Matematik og Programmering klasse 3.4 Vejledere: Karl og Jørn. Af: Asger, Christian og Kalle

Software Dokumentation

Fag: Matematik A og Informationsteknologi B

Eksponentielle modeller

IT og Programmering eksamens projekt

Projekt: Avedøre værket

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

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

VEKTOR I RUMMET PROJEKT 1. Jacob Weng & Jeppe Boese. Matematik A & Programmering C. Avedøre-værket. Roskilde Tekniske Gymnasium 3.4. Fag.

ROSKILDE TEKNISK GYMNASIUM Matematik og IT projekt i klasse 3.4 af: Casper Lykke Larsen - Lars-Emil Jakobsen - Thomas Denckert Hernes

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Matematik A og Informationsteknologi B

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

SOFTWARE DOKUMENTATION

Eksponentielle modeller

Opgave Opgave 2 Andengradsligningen løses, idet. Opgave er en løsning til ligningen, da:

IT - Opgave. Produkt til Læring

Online billede filtrering

Python 3 kursus lektion 1:

Indholdsfortegnelse:

Programmering I Java/C#

MATEMATIK A-NIVEAU. Anders Jørgensen & Mark Kddafi. Vejledende eksempler på eksamensopgaver og eksamensopgaver i matematik, 2012.

Objects First with Java A Practical Introduction Using BlueJ

Matematik A / IT B Roskilde Tekniske Gymnasium. SO Projekt Mat / IT Tema: Gærcellevækst med Eksponentielle Modeller & IT Produkter

Automatisering Af Hverdagen

Denne artikel er en detaljeret gennemgag af det fundamentale i batchfiler til hjemmebrug :-) FEEL THE POWER! ;-)

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

DM536. Rapport og debug

ysikrapport: Maila Walmod, 1.3 HTX, Rosklide I gruppe med Morten Hedetoft, Kasper Merrild og Theis Hansen Afleveringsdato: 28/2/08

Undervisningsbeskrivelse

Arduinostyret klimaanlæg Afsluttende projekt programmering C

APPENDIX A INTRODUKTION TIL DERIVE

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

lineær regression er en metode man bruger for at finde den mindste afstand mellem bestemte punkter ved at bruge denne formel: a= n i=1 i=1

6. Regression. Hayati Balo,AAMS. 1. Nils Victor-Jensen, Matematik for adgangskursus, B-niveau 1

Projektbeskrivelse RSS Læser

Informations Teknologi Indholdsfortegnelse

SO-projekt MAT/IT. Eksponentielle Modeller - Gærceller

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

Lineær Programmering i GeoGebra Side 1 af 8

Test af It-komponent

Undervisningsbeskrivelse

App til museeum Af Alan Mohedeen 3.5

Ugur Kitir HTX - Roskilde 01/

XML Difftool brugervejledning

Matematikprojekt Belysning

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

Rumfang af væske i beholder

DM507 Algoritmer og datastrukturer

Integralregning Infinitesimalregning

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

Læringsprogram. Numeriske metoder. Matematik A Programmering C Studieområdet. Roskilde Tekniske Gymnasium Klasse 3.4

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

Det skrå kast, en simulation

Arbejde med 3D track motion

Lad os prøve GeoGebra.

Kompendium til Geogebra

Eksamensopgaver datalogi, dl/vf 2010 side 1/5. 1. Lodtrækningssystem

Ib Michelsen Vejledende løsning stxb 101 1

Programmering C. Casper Hermansen Klasse 2.7 Programmering C. Navn: Casper Hermansen. Klasse: 2.7. Fag: Programmering C

Computerspil - Kappa

Kasteparabler i din idræt øvelse 1

Introduktion til cosinus, sinus og tangens

Lær Python dag 1 - modul 1

WT-1011RC Programmer User Guide

HUK (Hukommelsestest)

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

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

Transkript:

HTX, RTG Rumlige Figurer Matematik og programmering Vejledere: Jørn Christian Bendtsen og Karl G. Bjarnason Morten Bo Kofoed Nielsen & Michael Jokil 10-10-2011 In this assignment we have been working with 3-dimensional objects. We have used integration and made a smooth transition from one function to another, this was done using math and not at random. In this assignment we have also programmed a program which is able to draw a function and make a 3d figure from it. Furthermore the program is also able to compute the figures volume and draw a picture of the figure

Indholdsfortegnelse Resume... Fejl! Bogmærke er ikke defineret. Mat del... Fejl! Bogmærke er ikke defineret. Programmeringsforløbet... 4 Kerneproblem... 10 Kravspecifikation... 10 Design af brugerfladen... 10 Implementering... 11 Input, operationer og output... 11 Flowchart... 15 Test... 16 Test af program... 16 Diskussion af udviklingsmiljø... 16 Bilag 1 kildekode fra Lazarus... 17 Bilag 2 Kildekode fra Visual Python... 18 Bilag... 19 Side 2 af 19

Side 3 af 19

Side 4 af 19

Side 5 af 19

Side 6 af 19

Side 7 af 19

Side 8 af 19

Side 9 af 19

Programmeringsforløbet I dette forløb har vi beskæftiget os med programmeringen af vores program som tegner en vase i Lazerus ved hjælp af Visual Python. Den komplette kildekode kan ses i bilagene. Kerneproblem Vores kerneproblem i dette projekt er at vi skal have implementeret nogle funktioner med flydende overgang, som vi har programmet i programmeringssproget Python, til at tage imod argumenter fra udviklingsmiljøet Lazarus, og derefter bruge koden i Python til at lave en visuel fremstilling af funktionerne, som skal drejes 360 grader om x-aksen. Derudover skal programmet også kunne udregne volumen af den fremstillede figur. Kravspecifikation Der er opstillet følgende krav til programmet: - Brugerfladen skal udvikles i Lazarus. - Programmet skal kunne variere en eller flere parametre og vise det beregnede volumen. - Programmet skal kunne visualisere figuren i 3D og et længdesnit i 2D. Derudover har vi også opsat nogle krav selv, som vores program også skal opfylde: - Brugerfladen, som fremstilles i Lazarus skal kunne importere informationer og billeder direkte fra VPython. - Alle beregninger og fremstillinger af funktioner skal foregå i VPython og derefter eksporteres til Lazarus. Design af brugerfladen Til design har vi valgt et enkelt, brugernemt design med en enkelt knap, to skrivebokse, to labels, og en billedboks. Programmet fungerer sådan at man indtaster en konstant. Så trykker man på knappen Beregn volumen ud fra radius. Denne knap igangsætter så at konstanten bliver adderet til funktionens radius, hvorefter programmet tegner funktionen drejet 360 grader om x-aksen og derefter udregner volumen af figuren, og skriver det i boksen Volumen. Side 10 af 19

Implementering I denne del af opgaven beskriver vi hvordan vi har udviklet vores program og hvordan og hvorledes de forskellige dele af programmet fungerer og hænger sammen. Input, operationer og output Input I programmet har vi tre vigtige grupperinger, som er vigtige at forstå. Det omhandler input, operationer, og output. Input er de data som brugeren af programmet sender til programmet, i dette program foregår dette ved hjælp af tal som indtastes i boksen Konstant. Det brugeren så indtaster i boksen Konstant, sender Lazarus så videre til Visual Python i form af argumenter. Grunden til denne brug af argumenter er fordi at vi skal have vores brugerflade (Lazarus), og vores udregne- og tegneprogram (Visual Python), til at arbejde sammen. Så det der sker, er at vi skal have Python til at modtage argumenter fra Lazarus. Det har vi gjort ved hjælp af følgende kommando: Hvilket gør at programmet tjekker, da det er en if-statement, om der er to argumenter, og hvis der er, indstiller r til at være lig med argument nummer to. (argument et er altid nul.) Så for at sende argumenter ved hjælp af Lazarus har vi brugt kommandoen: Som gør det, at den indsætter inputtet fra edit1.text som argument i Python. (edit1.text, er boksen hvor brugeren indtaster en konstant.) Side 11 af 19

Operationer Operationerne er den del af programmet som behandler input, og sørger for at der bliver fremstillet et output. I vores program består operationerne af forskellige fragmenter. Hovedparten består dog af de fire følgende: - Tegning af funktionen - Skabelsen af en 3d figur ud fra funktionen - Gem billedet af figuren Disse funktioner er det som vores program skal kunne, og derfor er det dem der hovedparten af vores program. Tegning af Funktionen I denne operation beskæftiger vi os med denne del af koden i vores program: Hvis man er opmærksom lægger man mærke til at koden som jeg har omkranset, er den kode hvor at Python-delen af vores program modtager argumenter fra Lazarus. Det første der sker i denne del af koden er at vi definerer 5 variabler som vi skal bruge senere. Herefter kommer if-statement en, som tager mod argumenter fra Lazarus. Hvorefter der kommer et while-loop, som kører vores første funktion så længe x ligger i intervallet fra x til ca. 1,5, vores anden funktion så længe at x ligger i intervallet fra ca. 1,5 til ca. 2,4, og vores sidste funktion indtil x lid med 4. Side 12 af 19

Skabelsen af en 3d figur ud fra funktionen I denne operation beskæftiger vi os med denne del af koden i vores program: Først vil vi gerne have punkterne på vores kurve til at blive drejet 360 grader om x-aksen. Så har vi gjort det at vi får vores figur til at skifte farve jo længere hen af x-aksen den bevæger sig. Herefter bruger vi igen et loop til at lave cirkler ud fra funktionsværdierne adderet med den konstant brugeren af programmet indtaster. Gem billedet af figuren I denne operation beskæftiger vi os med denne del af koden i vores program: Her bruger vi funktionen imagegrab, som basis tager et screenshot fra koordinaterne (6,30) til (1000,1000). Hvor punktet (0,0) er øverst-venstre i skærmen. Derefter bruger vi im.save, til at gemme billedet. Side 13 af 19

Output Output er de færdige, behandlede data, som bliver præsenteret for brugeren. Man kan sige at outputtet er resultatet af programmet. Herunder ses outputtet af vores program. Side 14 af 19

Flowchart I understående flowchart kan man se hvordan programmet fungere, både med hensyn til input, operationer og output. Side 15 af 19

Test I denne del af opgaven tester vi programmet og dets funktionalitet. Endvidere kommer vi til at diskutere ting som udviklingsmiljø, nogle af de statements der er blevet brugt, og til sidst nogle af de eksterne funktionsbiblioteker vi har brugt under udviklingen af vores program. Test af program Ved testen startede vi programmet op, hvorefter vi indtastede en konstant. Programmet virkede som det skulle. Det fremstillede et billede af figuren og udregnede volumen. Diskussion af udviklingsmiljø Til vores udviklingsmiljø har vi valgt at bruge Visual Python. Dette er fordi at vi mener at det er det der passer bedst til vores opgave med at skulle fremstille en 3d figur af en vase. Herudover har vi også valgt Visual Python da det er det vi mener at vi behersker bedst og kan fremstille det bedste program med. Hvis man kigger på for eksempel Pov-Ray, i forhold til vpython er Pov-Ray lavet til at lave billeder, dog kun 2d i den forstand at man ikke kan dreje på scenen og se tingene fra andre vinkler. Her er vpython mere fleksibel, og vi mener at det er nemmere at manipulere med vores figur. Side 16 af 19

Bilag 1 kildekode fra Lazarus Side 17 af 19

Bilag 2 Kildekode fra Visual Python Side 18 af 19

Bilag Side 19 af 19