Avedøre-værket i rotation

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

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

Projekt: Avedøre værket

Hvis man ønsker mere udfordring, kan man springe de første 10 opgaver over. , og et punkt er givet ved: P (2, 1).

Michael Jokil

Hvis man ønsker mere udfordring, kan man springe de første 10 opgaver over. 1, og et punkt er givet ved: (2, 1)

Afstande, skæringer og vinkler i rummet

Afstande, skæringer og vinkler i rummet

Vektorer i 3D. 1. Grundbegreber. 1. Koordinater. Enhedsvektorerne. Vektor OP. De ortogonale enhedsvektorer kaldes for: Hvis punkt p har koordinaterne:

VUC Vestsjælland Syd, Slagelse Nr. 1 Institution: Projekt Trigonometri

Eksponentielle modeller

Matematik A-niveau 22. maj 2015 Delprøve 2. Løst af Anders Jørgensen og Saeid Jafari

VEKTORGEOMETRI del 2 Skæringer Projektioner Vinkler Afstande

Matematik A, STX. Vejledende eksamensopgaver

VEKTORGEOMETRI del 2 Skæringer Projektioner Vinkler Afstande

Vektorer og lineær regression

Vektorer og lineær regression. Peter Harremoës Niels Brock

Opgave 1 - Lineær Funktioner. Opgave 2 - Funktioner. Opgave 3 - Tredjegradsligning

Løsninger til eksamensopgaver på A-niveau 2017

Delmængder af Rummet

Delmængder af Rummet

Visualiseringsprogram

Matematik A STX 18. maj 2017 Vejledende løsning De første 6 opgaver løses uden hjælpemidler

Aalborg Universitet - Adgangskursus. Eksamensopgaver. Matematik B til A

Analytisk plangeometri 1

Afstandsformlerne i Rummet

MATEMATIK A-NIVEAU. Kapitel 1

Projekt 1.4 Tagrendeproblemet en instruktiv øvelse i modellering med IT.

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

Andreas Møinichen og Aske Märcher

Funktioner generelt. for matematik pä B- og A-niveau i stx og hf Karsten Juul

Funktioner generelt. for matematik pä B-niveau i stx Karsten Juul

M A T E M A T I K. # e z. # a. # e x. # e y A U E R B A C H M I K E. a z. a x

Eksamensspørgsmål: Trekantberegning

Matematik A 5 timers skriftlig prøve

For at få 3D-kommandoer til at virke skal AutoCAD LT 2002 først sættes op Vælg Start->Programmer->BYG-CAD>LTSetup

Vinkelrette linjer. Frank Villa. 4. november 2014

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

Projektopgave 1. Navn: Jonas Pedersen Klasse: 3.4 Skole: Roskilde Tekniske Gymnasium Dato: 5/ Vejleder: Jørn Christian Bendtsen Fag: Matematik

HTX, RTG. Rumlige Figurer. Matematik og programmering

TREKANTER. Indledning. Typer af trekanter. Side 1 af 7. (Der har været tre kursister om at skrive denne projektrapport)

Besvarelser til Calculus og Lineær Algebra Globale Forretningssystemer Eksamen - 8. Juni 2015

GUX. Matematik. A-Niveau. Torsdag den 31. maj Kl Prøveform a GUX181 - MAA

Kom-i-gang vejledning opmålingsprogram

Matematik. Meteriske system

Trigonometri. Store konstruktioner. Måling af højde

A U E R B A C H M I K E # e z. a z. # a. # e x. # e y. a x

Klasse 1.4 Michael Jokil

Vektorregning. Vektorer som lister

DENNE LILLE MANUAL TIL GEOGEBRA DÆKKER NOGENLUNDE DE EMNER, DER VEDRØRER FOLKESKOLEN TIL OG MED 10. KLASSE.

1 Løsningsforslag til årsprøve 2009

Matematik projekt. Klasse: Sh-mab05. Fag: Matematik B. Projekt: Trigonometri

Produkter af vektorer i 2 dimensioner. Peter Harremoës Niels Brock

Vektorfunktioner. (Parameterkurver) x-klasserne Gammel Hellerup Gymnasium

Geometri i plan og rum

Analytisk Geometri og Vektorer

Variabel- sammenhænge

Matematik A. Højere teknisk eksamen

Mike Vandal Auerbach. Geometri i planen. # b. # a. # a # b.

Matematik A-niveau STX 24. maj 2016 Delprøve 2 VUC Vestsjælland Syd.

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

Bedste rette linje ved mindste kvadraters metode

Kapitel 3 Lineære sammenhænge

Gratisprogrammet 27. september 2011

ALLAN BOHNSTEDT BERNT HANSEN MICHAEL JENSEN KLAUS MARTHINUS MAT A

Afstandsformlen og Cirklens Ligning

Sfærisk Geometri. Ikast Ib Michelsen

Arbejde med 3D track motion

Her er et spørgsmål, du måske aldrig har overvejet: kan man finde to trekanter med samme areal?

Lektion 7 Funktioner og koordinatsystemer

Matlab script - placering af kran

Matematikprojekt Belysning

Matematik A. Prøvens varighed er 5 timer. Alle hjælpemidler er tilladt. Ved valgopgaver må kun det anførte antal afleveres til bedømmelse.

Besvarelser til Lineær Algebra og Calculus Globale Forretningssystemer Eksamen - 6. Juni 2016

Problemløsning i retvinklede trekanter

Introduktion til cosinus, sinus og tangens

Vektorer i planen. Et oplæg Karsten Juul

Projekt 3.1 Pyramidestub og cirkelareal

Pædagogisk vejledning til. Materialesæt. Sphero.

Beregning til brug for opmåling, udfoldning og konstruktion

IT og Programmering eksamens projekt

Kommentarer til den ægyptiske beregning Kommentarer til den ægyptiske beregning... 5

Frederiksberg HF-kursus Vektorer i planen, Mat B, SSO Kenneth Leerbeck, 2. J. Vektorer. planen

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

Matematikken bag Parallel- og centralprojektion

Anvendelse af matematik til konkrete beregninger

Automatisering Af Hverdagen

Et kommatal som for eksempel 1,25 kaldes også noget andet. Hvad kaldes det også?

Billeder på matematikken

Animationer med TI-Nspire CAS

Geometri, (E-opgaver 9d)

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

Du skal lave en tegning af bordet set lige på fra alle sider (fra langsiden, den korte side, fra oven og fra neden - 4 tegninger i alt).

Geogebra Begynder Ku rsus

Løsninger til eksamensopgaver på A-niveau maj maj 2014: Delprøven UDEN hjælpemidler

I kapitlet arbejdes med følgende centrale matematiske objekter og begreber:

Transkript:

Avedøre-værket i rotation Lavet af Frederik Hass, Andreas Lorentzen, Mikkel Karoli og Philip Roskilde Tekniske Gymnasium, Matematik-It projekt, klasse 3.4

Indledning I dette projekt vil vi ud nogle givne rammer beregne og illustrere en bygning fra Avedøre-værket. Vi har valgt at bruge programmet Visual Python som værktøj, eftersom flest i gruppen er bedst bekendte med Python som programmeringssprog og det har alle de værktøjer man skal bruge for at lave en 3D model. Vi vil desuden lave en animation, der for bygningen til at rotere om sig selv. Teori Matematikdel Information omkring matematikken. På figur 1 ses et billede af Avedøre-værket ved København, der bl.a. producerer fjernvarme. Brændslet afbrændes i den pyramideformede kedelbygning som ses bagerst til venstre. Figur 1 Figur 2 På figur 2 ses en lignende kedelbygning. Bygningen er en pyramidestub med kvadratiskgrundflade, hvis kantlængde AB=BC=40 cm. Pyramidestubbens 4 sider danner samme vinkel med grundplanen. Pyramidestubben er placeret i et 3-dimensionalt koordinatsystem med grundfladen i xy-planen, hvor hjørnepunkterne A=(40,0,0) og C=(0,40,0). Forlængelsen af pyramidestubbens skrå kanter ender i en spids, P=(20,20,80). Pyramidestubbens øverste flade er skrå. På den kant, der er parallel med stykket AB, er punkt D=(xD,yD,38). På den modsatte kant er punkt E=(xE,yE,42). Punkterne A, B og D er beliggende i planen. På pyramidestubben ses en kasseformet udbygning. En af skæringslinjerne mellem denne og pyramidestubben udgøres af stykket FG. Punkterne F=(40,28,0) G=(xG,28,25) H=(40,28,22) er beliggende i planen. To udluftningsrør, som går gennem en udskæring i taget, har samme diameter, D=700 mm. 1 / 18

a) Bestem koordinaterne til punkt B i grundfladen. Eftersom grundfladen ligger på xy-planen, kan vi bare se det som et almindelig koordinatsystem. Vi ved at grundfladen er et kvadrat, og kender to af punkterne A og C, så nu kan vi beregne B. Vi går ud af vores x-akse til vores punkt A (40,0,0), og herefter fortsætter ud af y-aksen til vores punkt B(0,40,0). Så lægger vi de to koordinater sammen, og da vi ved at vi ingen z-værdi her, bliver vores punkt B(40,40,0). b) Opstil en parameterfremstilling for den linje, der går gennem B og P. Hertil vil vi bruge ligningen for parameterfremstilling ud fra 2 punkter: Vi kender to punkter der går gennem linjen m. Her vil jeg først finde stedvektorerne for de to punkter B og P. En stedvektorer er en vektor der går fra Origo (0,0,0) til punkter i rummet. Så vores punkter B og P, ender med at blive: Så beregner vi retningsvektoren: Vi sætter retningsvektoreren og stedvektoren ind i linjens forskrift bliver: 2 / 18

c) Bestem koordinaterne til punkt D. Her vil vi finde punktet D ved hjælp af parameterfremstilling fra forrige opgave m: Vores punkt er Så finder vi t-værdien til vores ligning ved at vi har alle z-værdierne. Vi indsætter den kendte z-værdi for punktet D, som vi har fra oplægget. Vi bruger CAS-værktøj til at isolere t Så sætter vi vores tid ind i ligningen. Punktet D er altså d) Opstil en ligning for planen α. Vi bruger planens ligning på normalform. Hvor er et fast punkt, og er normalvektor for planen. Hvor d er: P 0 i formlen er vores punkt B. 3 / 18

Så finder vi vektoren mellem punkterne B og A. Så finder vi vektoren mellem punkterne B og P. Så finder vi normalvektoren for α, ved at finde krydsproduktet. Man kunne også have lavet den med BP vektoren. Så sætter vi vores værdier ind i vores ligning hvor vi havde isoleret d. Så til sidst sætter vi alle vores værdier ind i ligningen for planen på normalform. Nu har vi altså ligning for planen e) Beregn vinklen mellem en af pyramidestubbens skrå sider og grundplanen, xy. Her er vores normalvektor for planen α, fra sidste opgave. Her er vores normalvektor til β. Vi ved at normalvektoren skal stå vinkelret på xy-planen, og det er det eneste. Det gør den følgende normalvektor: Så finder vi længden af de to stedvektorer. Så sætter vi vores værdier ind i ligningen for vinklen mellem to planer. 4 / 18

Vi trækker den fundende vinkel fra 180 grader så at finde den endelige vinkel. Så vinklen mellem en af de skrå side og xy-planen er altså ca. 121 grader f) Opstil en ligning for planen π. Vi bruger igen planens ligning på normalform. Hvor er et fast punkt, og er normalvektor for planen. Hvor d er: Her har vi normalvektoren for β, hvor y-værdien ikke er bestemt til 1, igen er vi interesseret i en vektor der står vinkelret på denne gang xz-plan. Vi har det faste punkt F som er. Her har vi så isoleret d som er konstanten. Hvorefter vi sætter vores normalvektor ind. Vi indsætter værdier Nu har vi altså ligningen for planen 5 / 18

g) Beregn vinklen mellem α og π. Her her vi forskrifterne for de to planer: Ni regner nu prikproduktet af de to normalvektorer Vi ser at prikproduktet mellem de to normalvektorer er lig 0, altså må vinklen mellem de to planer være ret 90 grader h) Opstil en parameterfremstilling for skæringslinjen mellem α og π. Vi skal altså finde et fast punkt på skæringslinjen samt en retningsvektor. Vi finder vores retningsvektor ved at krydse de to normalvektorer fra de to planer. Vi ved at punktet F ligger på skæringslinjen, derfor kan vi bare bruge stedvektoren til F i parameterfremstillingen som det faste punkt. Nu har vi parameterfremstillingen for skæringslinjen mellem planerene og i) Beregn arealet af den del af planen, der afgrænses af punkterne F, G og H. Eftersom vi i forvejen har to af de tre koordinater til punktet G, skal vi bare isoler x fra ligningen. Her har vi ligningen for α planen. Her har vi sat vores punkt G ind i ligningen, og efterfølgende isolere vi x-koordinaten. 6 / 18

Så ender vi med at have vores 3 punkter: Herefter finder vi vektoren mellem FG og FH. Herefter finder vi krydsproduktet, mellem de to fundende retningsvektorer Vi ved at krydsproduktet af to retningsvektorer, står vinkelret på det plane de udspænder, og har en længden svarende til arealet af det parallelogram de udspænder. Den viden kan vi bruge til at regne arealet af den trekant de tre punkter udspænder, ved at dividere længden af vektoren med to, så har vi trekantens areal. Så det endelige areal bliver. Arealet 68,75 cm 2 j) Beregn længden af storaksen til den ellipse, der udgør en udskæring til et af rørene i taget. I oplægget er diameteren for rørene sat til at være 700mm. Det tolker vi som en fejl, eftersom at bygningens sider, i bunden, er sat til 40 cm, altså skulle skorstenene værre større i diameter, end selve bygningen. Vi har tilladt os at sætte en ny diameter, d = 70mm, svarende til 7 cm. 7 / 18

Diameteren er kaldet w i opgaven: Vi beregner først de manglende koordinater til punktet E Vi starter med at fremstille en parameterfremstilling for linjen det går igennem punkterne C, E og P. Vi skal bruge en retningsvektor, vi beregner Nu har vi værdierne til vores parameterfremstilling, vi indsætter værdier. Nu piller vi z-koordinatens ligning ud af parameterfremstillingen og sætter z lig 42, som er den eneste værdi vi kender fra vores punkt E. Og isolere t. Nu ved vi til hvilken tid t, vores z koordinaten er lig 42. Den tid t, sætter vi ind i parameterfremstillingen for at finde de resterende punkter. Nu kender vi vores punkt E. Hvis man se ind på rørene fra siden, og altså kigger direkte ud af y-aksen, kan man beskrive udskæringen ved hjælp af en retvinklet trekant. Hvor hypotenusen er storaksen, den nederste katete er diameteren på røret. Det gælder altså om at finde hypotenusen. Til at starte med vil vi gerne beregne den anden katete og så bruge pythes sætning til at beregne hypotenusen. 8 / 18

Vi vil gerne beregne hældningen af taget, når vi kender den, kan vi bare gange på med diameteren af røret, for at finde den anden katete. Vi benytter hældningsformlen. Så vi indsætter bare værdierne fra de to kendte punkter. Her skal man bare være opmærksom på at bruge z-koordinaten i stedet for y-koordinaten. så vores formel ser sådan ud når vi bruger den. Vi har nu hældningen, vi beregner nu den anden katete. Tallet er negativt, hvilket meget logisk med en negativ hældning og ligegyldigt i denne sammenhæng. De to kateter sætter vi ind i Pythagoras sætning og beregner længden af storaksen. Længden af storaksen i den ellipsen der udgør uskæringen til et af rørene i taget, er altså 7,14 9 / 18

Extreme Programming Extreme programming handler om at være åben for at løbende at ændre sit program, så det kan tilpasses brugeren undervejs. I extreme programming er det brugeren der bestemmer, hvis brugeren ønsker programmet ændret, skal det ændres. Extreme programming kan især være godt i meget store projekter, hvor der går så lang tid før man bliver færdig, at brugeren har fået nye behov. User Story User Story beskriver brugerens forventning og oplevelse til produktet. Userstory laves alene af brugeren uden påvirkning fra afsenderen (f.esk ledende spørgsmål). På den måde får man en klar beskrivelse af hvordan oplevelsen med produktet har været.valg af de brugerhistorier, (user stories), som skal implementeres i denne iteration. Pairprogramming I pairprogramming arbejder man to sammen om en maskine. En person programmere mens den anden observere hvad der sker. Det er ikke forbudt at give gode råd til ham der programmere, men man kan også lade ham gøre sit arbejde og imens tænke over forbedringer til det bliver din tur. Man skifter jævnligt plads til at programmere (f.eks hvert 15min.) Fordelen ved pairprogramming er at man får et bredere syn på koden, der bliver altså ikke kun brugt én metode, men to. Koden skal også være forståelig for begge parter, og på den måde undgår man fejl. Pairprogramming fungerede godt i praksis, det er rimelig simpelt at komme i gang med. Dog kan man godt være i tvivl om hvad oberservatørens rolle er, skal han guide, eller skal han bare observere og lægge en strategi til når han skal skrive. Dette var lidt uvidst. Fordele Man sikrer lige meget arbejde til begge parter (hvilket kan være godt i skoleprojekt) Den rutinerede programmør får ikke lov til bare at programmere, men han bliver nødt til at se det i et lidt større perspektiv, og sætte sig ind i den anden programmørs sted. På den måde bevæger man sig ud over de evner man normalt ville bruge, og lærer nogle andre ting end bare ren kode. For den uøvede programmør får man en meget effektiv learning by doing oplevelse, da man får en meget konkret opgave stillet. Ulemper For den øvede programmør kan denne arbejdsmåde give følelsen af at arbejde direkte ueffektivt, da man måske kunne have løst opgaven hurtigere alene. 10 / 18

For den uøvede programmør kan det være svært at udnytte observatør rollen til noget meget brugbart, når den anden har styr på hvad han laver og derfor kører derud af. I denne situation er det svært at give brugbare inputs. Når man overtager programmør rollen efter et kvarter kan det være svært at sætte sig ind hvad der er sket. Da vi anvendte pair programming byttede vi roller hvert kvarter, vi mener at man med fordel kunne sætte tiden ned til 10 min. På den måde får man et bedre flow i rollerne, og f.eks. hvis man sidder fast i koden eller har et godt input går der ikke så længe før man kan komme videre. Det er også mere begrænset hvad der kan nås på 10 min og programmet vil derfor ligne det program man efterlod mere, end hvis man kodede 15 min. Kommunikationsplanlægning Afsender: OS Budskab: Visualisere avedøreværket Modtager: Gymnasieelever Medie: Computerprogram, Visual Python Effekt: Tvivlsom User Stories Når programmet køres vises et vindue med en roterende bygningen af avedøreværket. Ved at klikke et sted i vinduet stopper bygningen med at rotere. Ved klik igen på vinduet går animationen i gang igen. Programmet lukkes ved tryk på det røde kryds. Kravspecifikation Skal kunne eksekveres fra en windows maskine med VPython. Modellen skal have målene fra matematik. Modellen skal rotere på xy planet Når man trykker et sted i vinduet med musen, skal animationen stoppe. Når man trykker igen skal animationen genoptages. Programmet skal lukke ved tryk på krydset. 11 / 18

Testspecifikation Programmet åbnes. Starter programmet? Er der en model af bygningen fra avedøreværket? Roterer bygningen om sig selv på xy planen? Der trykkes med musen et sted i vinduet. Stopper bygningen med at rotere? Der trykkes igen med musen et sted i vinduet. Starter rotationen igen fra hvor den slap? De to foregående punkter gentages af 3 gange Der trykkes på krydset Lukker programmet? Design Modellens design Modellen er en pyramidestub med en tilbygning og to skorstene. Pyramidestubben kan laves af flader, eftersom det kun er en model vil der ikke være nogen der lægger mærke til at kassen ikke er massiv. Det vil sige at vi skal bruge 6 flader til at lave grunden for vores bygning (pyramidestubben), de fire skrå sider, en top og en bund. En flade kan laves med funktionen convex, hvor man kan sætte 3d punkter (stedvektorer) hvor flades skal udspændes mellem. På samme måde laves den lille tilbygning som sidder på værkets østlige side. Den består altså af 6 punkter hvor de 4 flader er udspændt mellem Til sidst laves der to skorstene, to cylinder objekter. De er prædefinerede, hvor man blot skal angive en position, en radius, og en vektor der angive retningen og længden på en gang. I dette tilfælde bruger vi to cylindre placeret på xy-planen, og så gjort så høje at de kommer op gennem taget. Vi arbejder her med mange objekter og det kan være problematisk i længden. Så vi kunne godt tænke os at samle alle objekterne til ét objekt. Det gør man med en frame objekt. Ved hvert objekt kan man nu skrive hvilken frame objektet høre til. Så er det muligt nu at rotere, skalere og translatere alle objekterne på en gang ved blot at gøre det med frame'en. Vi skal f.eks. rotere vores frame første omgang således at den står på højkant. Det er også senere brugbart når vi skal til animere en rotation af hele bygningen. 12 / 18

Brugergrænseflade Når programmet åbnes vil man se modellen af avedøreværket i rotation. I toppen af billedet vil der være tekst der beskriver brugerens mulighederne. Teksten skal lyde Tryk på skærmen for at pause modellen Når man har trykket på skærmen for at pause, vil der kommer en ny tekst, hvor der står følgende: Tryk på skærmen for at starte modellen igen. Ordvalget er, i den første sætning, meget vigtigt. Vi har derfor valgt at skrive pause i stedet for stoppe. Hvis der står stop kan folk blive forvirret og utrykke over hvad der sker når man trykker, kan man starte rotationen igen, lukker programmet helt ned? sådanne spørgsmål. Ordet pause fortæller derimod at lige meget hvad man gør er det kun midlertidigt, og man kan fortsætte hvor man slap. På den måde bliver brugeren ikke bange for at prøve sig frem i programmet. Implementering Vi har implementeret funktionaliteten af vores program over flere iterationer, på den måde kan vi være sikre på at det vi er i gang med fungere, i stedet for at lave et stort rod og så finde ud af at det ikke virker. 1. Første trin var at bruge convex objektet i visual modulet til at tegne overfladerne af kraftværket, her skulle vi også bruge koordinaterne til de forskellige punkter som vi udregnede i matematik. 2. Da vi havde selve formen af kraftværket lagde vi de to skorstene på. 3. Da vores model var færdiggjort blev vi nødt til at rotere det hele, det var nødvendigt fordi vi havde brugt koordinater direkte fra vores udregninger, men i python bruges 3d koordinater som x = bredde, y = højde og z = dybde. 4. Vores næste trin var at implementere kravet om en animation, vi valgte at modellen skulle rotere om sig selv på y aksen, eller i xz planen. 5. Det sidste krav vi manglede at opfylde var en brugergrænseflade, en måde for brugeren at interagere med programmet. Vi valgte at det skulle være muligt at stoppe og starte animationen, men i stedet for at lave en knap syntes vi det ville være smartere at kunne klikke på selve vinduet. Måden vi implementerede det på var ved brug af en event som kommer med visual, når der bliver klikket på skærmen affyres eventen, som ændre vores run variable mellem 1 og 0. 6. Til sidst lavede vi et label så det var tydeligt at man kunne klikke på skærmen, da der ikke var nogen knap eller andet der ville gøre det nemt at se. Hele koden til programmer ligger som bilag, kommenteret og dokumenteret i de enkelte trin. 13 / 18

Fremtidige iterationer Det endelige resultat fungere og opfylder vores krav, men der er stadig forbedringer vi kunne have gjort, den mest åbenlyse er at kraftværket kun er i den ene fjerdedel af vinduet, hvilket burde centreres. Andre forbedringer der kunne gøres inkludere en baggrund, eventuelt lignende en himmel, med en lyskilde lignende en sol og materiale på kraftværket lignende det virkelige værk i stedet for en grå kasse. Test Programmet åbnes. Starter programmet? Er der en model af bygningen fra avedøreværket? Roterer bygningen om sig selv på xy planen? Der trykkes med musen et sted i vinduet. Stopper bygningen med at rotere? Der trykkes igen med musen et sted i vinduet. Starter rotationen igen fra hvor den slap? Stopper bygningen med at rotere? Der trykkes igen med musen et sted i vinduet. Starter rotationen igen fra hvor den slap? Stopper bygningen med at rotere? Der trykkes igen med musen et sted i vinduet. Starter rotationen igen fra hvor den slap? Der trykkes på krydset Lukker programmet? 14 / 18

Konklusion I dette projekt blev der lagt stor vægt i at få it-delen og matematik-delen til at spille sammen. Vi har skullet lave den ene del før man rigtig kunne komme i gang med den anden, så det har været med til at få fagene blandet godt sammen. Vi har skulle bruge vores viden inden for vektorfunktioner i matematik, hvori vi samtidig har skulle bruge vores viden i it til at konstruere en grafisk model at kraftværket som overholder alle vores krav. Vi har haft frie hænder til at lave it delen, da der ingen krav var om hvilket program vi skulle bruge til at lave modellen. Vi har illustreret bygningen og lavet animationen, med et selvvalgt IT-værktøj. Vi har desuden opnået en viden om Ekstreme Programming som metode. 15 / 18

Bilag # -*- coding: utf-8 -*- from visual import * #Start / Stop animationen når der klikkes på vinduet def toggle_animation(event): #Debug kode til at sikre at musse klik bliver registreret print event.event, event.pos, event.button global run #Skift run mellem 0 og 1 if run == 0: run = 1 elif run == 1: run = 0 #Bind musedown eventen til toggle_animation funktionen, dette gør at funktionen kører hver gang der trykkes ned på venstre musseknap scene.bind('mousedown', toggle_animation) #Definer frame f = frame() #Definer henholdsvis bund og top planet, koordinaterne til disse tages fra vores udregninger convex(frame=f, pos=[(0,0,0), (40,0,0), (40,40,0), (0,40,0)]) convex(frame=f, pos=[(10.5,10.5,42), (30.5,9.5,38), (30.5,30.5,38), (10.5,29.5,42)]) #Definer de 4 sider af kræftværket convex(frame=f, pos=[(0,0,0), (40,0,0), (30.5,9.5,38), (10.5,10.5,42)]) convex(frame=f, pos=[(40,0,0), (40,40,0), (30.5,30.5,38), (30.5,9.5,38)]) convex(frame=f, pos=[(40,40,0), (0,40,0), (10.5,29.5,42), (30.5,30.5,38)]) convex(frame=f, pos=[(0,40,0), (0,0,0), (10.5,10.5,42), (10.5,29.5,42)]) #Definer porten på kæftværket convex(frame=f, pos=[(40,28,0), (33.75,28,25), (40,28,22)]) convex(frame=f, pos=[(40,12,0), (33.75,12,25), (40,12,22)]) convex(frame=f, pos=[(40,28,22), (40,12,22), (40,12,0), (40,28,0)]) convex(frame=f, pos=[(40,28,22), (40,12,22), (33.75,12,25), (33.75,28,25)]) #Definer de to skorstene cylinder(frame=f, pos=(15,15,0), axis=(0,0,50), radius=3.5) cylinder(frame=f, pos=(23,15,0), axis=(0,0,50), radius=3.5) #Roter kræftværket til at stå op da y er den vertikale akse i python og vi har brugt z i matematiken 16 / 18

f.rotate(angle=pi/2, axis=(-1,0,0), origin=(20,20,0)) f.rotate(angle=pi/2, axis=(0,-1,0), origin=(20,20,0)) #Forklarende tekst label(pos=(0,0,0), text="klik for at pause animationen") #Start med at køre programmet run = 1 #Vinklen der skal ligges til kræftværkets rotation for hver programcyklus add = 0.015 #Fortsæt for evigt (Indtil programet lukkes) while(true): #Hvis run er sat til 1, dette ændres i toggle_animation funktionen ved musse klik) if run == 1: #Læg "add" vinklen til kræftværket for at rotere det f.rotate(angle=add, axis=(0,1,0), origin=(20,20,0)) #Kør 50 programcykluser i sekundet rate(50) #Forklarende tekst label(pos=(0,0,0), text="klik for at pause animationen") #Start med at køre programmet run = 1 #Vinklen der skal ligges til kræftværkets rotation for hver program cycklys add = 0.015 #Fortsæt for evigt (Indtil programet lukkes) while(true): #Hvis run er sat til 1, dette ændres i toggle_animation funktionen ved musse klik) if run == 1: #Læg "add" vinklen til kræftværket for at rotere det f.rotate(angle=add, axis=(0,1,0), origin=(20,20,0)) #Kør 50 cykluser i sekundet rate(50) 17 / 18