K-opgave 2002 - Visualisering af rumkurver



Relaterede dokumenter
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

DANMARKS TEKNISKE UNIVERSITET

SWC eksamens-spørgsmål. Oversigt

Software Construction 1 semester (SWC) Spørgsmål 1

Civilingeniøreksamen januar Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Eksempel: Skat i år 2000

Skriftlig eksamen i Datalogi

DM507 Algoritmer og datastrukturer

Forelæsning Uge 2 Torsdag

Kursus navn: Indledende programmering Kursus nr

Singleton pattern i Java

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag

Abstrakte datatyper C#-version

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer

Ugeseddel 4 1. marts - 8. marts

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

DM507 Algoritmer og datastrukturer

Tree klassen fra sidste forelæsning

DM507 Algoritmer og datastrukturer

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

Forelæsning Uge 2 Torsdag

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

DM507 Algoritmer og datastrukturer

Forelæsning Uge 4 Torsdag

Skriftlig eksamen i Datalogi

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

Forelæsning Uge 4 Mandag

Videregående Programmering for Diplom-E Noter

Forelæsning Uge 2 Torsdag

DM507 Algoritmer og datastrukturer

Forelæsning Uge 5 Mandag

Forelæsning Uge 6 Mandag

Videregående programmering i Java

Singleton pattern i C#

Forelæsning Uge 4 Torsdag

Forelæsning Uge 2 Mandag

DM507 Algoritmer og datastrukturer

Forelæsning Uge 3 Torsdag

Fagets IT Introduktion til MATLAB

Forelæsning Uge 3 Torsdag

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

Videregående programmering i Java

Forelæsning Uge 1 Torsdag

Bilag 1 Rige billeder Ordremodtagelse

Kursusarbejde 3 Grundlæggende Programmering

Klasser og objekter. (Afsnit i manualen)

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

Klasser og nedarvning

Skriftlig eksamen i Datalogi

dintprog Manual Revision: 731 September 30, Introduktion Notation... 3 I Begreber 4 2 Grundbegreber om programmering 4

SWC Elementer i klassedefinition

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense

Forelæsning Uge 1 Torsdag

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

Ting man gør med Vektorfunktioner

BRP Kursusintroduktion og Java-oversigt

Forelæsning Uge 2 Torsdag

Dag 10 Flertrådet programmering

DM536. Rapport og debug

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion

Hvad er Objekter - Programmering

Offset til terminalskærm i Java

Skriftlig Eksamen. Datastrukturer og Algoritmer (DM02) Institut for Matematik og Datalogi. Odense Universitet. Torsdag den 6. juni 1996, kl.

A Profile for Safety Critical Java

Forelæsning Uge 3 Mandag

HTX, RTG. Rumlige Figurer. Matematik og programmering

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 6

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

I profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 13/ Side 1 af 7

9.8 Kildekode. side 88. Pakke Klasse Sidenummer. fortsætter..

Introduktion til MatLab Matematisk Modellering af Dynamiske Modeller ved Kasper Bjering Jensen, RUC, februar 2010

Ting man gør med Vektorfunktioner

Forelæsning Uge 3 Mandag

DM507 Eksamen Obligatorisk Opgave Rejseplanlægning

public Set(int size) { this.listelement = new LinkedList<Integer>(); }

Databaseadgang fra Java

Objektorienteret Programmering

Grundlæggende Programmering ITU, Efterår Skriftlig eksamen i Grundlæggende Programmering

Note om RMI af Peter Kjærsgaard

Klienten. import java.util.*;

Sekvenser af længde mellem 1 og 4 ord repræsenteres ved en klasse Segment, som uden grundlæggende ser således ud:

Forelæsning Uge 3 Mandag

Kursusarbejde 2 Grundlæggende Programmering

Datalogi OB, Efterår 2002 OH er, forelæsning 3/ forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

Assignment #5 Toolbox Contract

Crash Course i Programmering. HumTek, RUC

Forelæsning Uge 2 Mandag

Transkript:

K-opgave 2002 - Visualisering af rumkurver MikkelBoje,di010633@diku.dk UlrikSchouJrgensen,di010347@diku.dk MartinDamhus,di010539@diku.dk 12.oktober2007 Indhold 1 Sammenfatning-dennerapport 1.1 Ambitionsniveau 4 1.2 Kravtillseren 1.3 Bemrkninger............................. 5 2 Problemorienteretanalyse 2.1 Problem... 2.2 Specikation....... 6 2.3 Kurveparametriseringer. 2.3.1 Terminologi.. 2.3.2 Typerafkurver 7 2.4 2.5 Punkter Typerafoperationer....... 8 2.6 Plotning 2.6.1 Endeligreprsentationafuendeligpunktmngde........................... 2.6.2 2.6.3 Kurverogkoordinataksersudstrkning. Hvilkepunkterskalplottes? 2.7 Inddata................ 10 9 2.8 Transformationen 2.7.1 Brugerspeciceredeparametre 11 2.9 Uddata................................. 11 12 3 Design 3.1 Algoritmiskstrukturafprogrammet-ansvar 13 3.2 DesignPatterns......................... 13 3.2.1 Fleksibelindlsningmuliggrbrugafdesignpatterns 14 14 3.2.2 Operationerpagurerogdesignmnstre.......... 15 1

3.3 Klasser. 3.3.1 Kontrologadministration.............. 15 15 3.3.2 3.3.3 Figurer. Operationer....... 16 16 3.3.4 3.3.5 Vektorerogmatricer Srligepunkter 16 3.3.6 Designpatterns 17 3.3.7 Indlsning. 17 3.3.8 Undtagelser.......................... 17 17 4 Programmeringsovervejelser 4.1 Implementationafdesign. 18 4.2 Inddata....................... 18 4.2.1 Inddatakommandoerlagresilisteaflinier 18 18 4.2.2 4.2.3 Indkommendetalparametre Fortolkningafinddata 18 4.3 Afrundingsfejl............... 19 4.4 Vrdibrendeobjektererikkekonstante 19 19 4.5 4.6 Undtagelser Beregningerogkretid........ 20 20 4.7 4.8 Koordinatakserneiuddata Tegningpabrt-objektet 21 20 4.8.1 4.8.2 Tegningafgurer Tegningafspecialpunkter..... 21 21 4.8.3 Tegningafakser....................... 22 5 Programbeskrivelse 5.1 Programmelogprogramudvikling 23 5.2 Navngivningskonventioner 23 5.3 Grnseader................ 23 5.4 Klassersinteraktionsamtansvarsfordeling 23 23 5.5 Programgennemlb 5.5.1 InitialiseringafCurvePlotter........... 23 23 5.5.2 Kaldafdraw......................... 24 6 Afprvning 6.1 Specikationogstrategi 25 6.2 kvivalensklasser 25 6.3 Grnsetilflde 25 6.4 Testresultater............................. 26 26 2

7 Brugervejledning 7.1 Forudstningerforatbrugeprogrammet 28 7.2 Figurtyper. 28 7.3 Operationer.. 29 28 7.4 7.5 Programopstart Stak-indlsningafinddatalinier......... 29 29 7.6 Syntaks 7.6.1 Figurer...... 30 7.6.2 Eksempel. 31 31 7.6.3 7.6.4 Operatorer. Eksempel 32 7.7 Fejlmeldinger....................... 32 32 7.8 Atudvideprogrammetmednyegurerelleroperatorer...... 33 8 Konklusion 8.1 Konklusion.............................. 34 34 A Kildekode A.1 CurvePlotter. 35 A.2 FigureManager 38 35 A.3 A.4 FigureA OperatorA... 49 43 A.5 A.6 Axis Line... 53 50 A.7 A.8 Opgave2A Opgave3A 54 A.9 Opgave4A 55 A.10Point.... 56 A.11PointParm. 59 57 A.12Translation A.13CurveConc. 61 61 A.14Scaler A.15Vector. 63 62 A.16VectorX A.17Matrix..... 64 A.18VectorIteratorI 69 65 A.19VectorVisitorI A.20VectorList 69 A.21Transform... 69 A.22Trans2dVisitor 72 71 A.23ReadInputLines A.24InputLine..... 75 A.25ReadFileException.......................... 81 79 3

B CRC-kort 82 C Grnseader C.1 CurvePlotterI 85 C.2 FigureI..... 85 C.3 FigureManagerI 86 85 C.4 C.5 InputLineI MatrixI. 86 C.6 OperatorI 87 86 C.7 C.8 PointI PointParmI...... 88 87 C.9 C.10TransformI. ReadInputLinesI 88 C.11VectorI..... 89 C.12VectorIteratorI 89 89 C.13VectorListI C.14VectorVisitorI. 90 90 C.15VectorXI. C.16Interfacesforundtagelser................................ 91 90 D Transformationen 93 E Klassediagram 95 F CurvePlotterinitialiseres 96 G CurvePlotterkalderdraw 97 H FigureManageriarbejde 98 I Inddatatilafprvning 99 J Uddatafraafprvning 100 1 Sammenfatning - denne rapport Denne portenanalysererproblemstillingengivetiopgaveformuleringen[1],beskriverdet rapport er en besvarelse af K2-opgaven i datalogi, stilletar 2002. Rap- udvikledeprogramsfunktionalitetogdetsudvidelsesmulighederogdokumenterer programmetibilagene.programmeterskrevetijava(v.1.4.0)oghartilformal at fulgtmedik2-brevkassen[2]. \visualisere kurver i rummet", se kravspecikationen 2.2. Undervejs har vi information,se8. Deterikkelykkedesosatindfrimaletmedprogrammettilfulde,fornrmere 4

1.1 Ambitionsniveau Vi tildesignetafprogrammetovereventuelleeektivitetshensyn,udenatdettehar har i udviklingen af programmet lbende vgtet overskuelighed og hensyn frttilmangekomplikationer.iimplementeringenharvidogsigtettilatundgaet gentagneberegningero.l.decideretressourcespild. Hermederikkeudelukket,atoptimeringermuligvissesteder. 1.2 Krav til lseren Lseren ingssproget af nrvrende Java. Srligrapport sprogbrug forventes vil vre atforklaret vre bekendt i denmed grad, programmer- adskillersigfrastandardterminologivedrrendejava. det radikalt 1.3 Bemrkninger Vi ellersomernemtforstaelige(fx. vil i rapportens sprog anvendeinput)samtengelskeord,derermedidansk engelske med darlig dansk oversttelse retstavning,eksempelvisinterface. gumenter(ogaltsaburdeopskrivesmetodenavn(arg1,arg2,...,argn),hvisvi Vi vil tillade os at skrive metodenavn() for metoder, der tager mange ar- blotskalrefereretilmetodensnavn. 5

2 Problemorienteret analyse 2.1 Problem Viskaludarbejdeetprogramtilvisualiseringafkurverirummet.Dissekurver vilvrespeciceretvedparametriseringerieenvariabel.detskalvremuligt atudfre"operationer"1pakurverne. 2.2 Specikation Vivilherudspecicereopgavetekstenskravtilenrkkekonkretekravtilvores program. Forskellige typer2 kunnevisualiseres. kurveparametriseringer sasom spiraler eller linier skal Detskalvremuligtforbrugerenatangivetidsintervalletforparametriseringsvariablen,saledesathverkurve,dernskestegnet,harsitegettidsinterval. Tilhverkurveskalbrugerenkunnespecicereekstraparametre,forkurvetypen Lineskaleksempelvisetpunktogenretningsvektorkunneangives. Detskalvremuligtatudfre"operationer"pakurverne. Tilhvernsketoperation,skalrelevanteparametrekunneangives.Fx.skal translationsforesprgslerledsagesaftreparametre,nemligde3koordinater tilforskydningsvektoren. Fremvisningenafkurverne(modiceredeellerejviaoperationer)skalledsagesafetkoordinatsystem,derlokalisererkurvernesplaceringi R3. Programmetskalvreeksibelt: -Detskalvreletattilfjenyekurvetyper -Detskalvreletattilfjenyeoperationer Visualiseringen diskuteresyderligereiafsnittet2.9). skal vre venlig imod jet (hvad der forstas herved, vil Programmet opgaver,se[1]. skal kunne fremvise de kurver, der er angivet i de bundne 1Vilprciseresomlidt,seafsnit2.3.1. 2Se2.3.2 6

2.3 Kurveparametriseringer Vivilanfrenogleovervejelserogbemrkningeriforbindelsemedbegrebet"kurveparametrisering". 2.3.1 Terminologi Givet billedmngdenf(i)medkurvensspor.deterdettespor,vivilplotte,narvii en kurveparametrisering f : I 3 t 7! (f1(t);f2(t);f3(t)), vil vi benvne programmetgivesetantalkurvermedtilhrendetider. rametrisering.medsammebetydningvilvibenytteordeneparametriseringer, Vivilfritvekslemellemvissebetegnelserfordetmegetlangeordkurvepa- kurver-og,mereprogramnrt3-gurer.vimenerikke,atdettevilgiveanledningtilmisforstaelser. der-givetenrkkeinputparametre-modicererudseendeogantalafinputkurver.de"obligatoriske"operationerertranslation(givet1kurveogenvektorleveres 1leveres1nykurve). og kurvesammenstning (givet 2 kurver i en bestemt rkkeflge Derskaludfresoperationerpakurverne;hervedvilviforstamekanismer, efteratdenskedeoperationererudfrt,delsdetbillede,derfremkommerved Ved billedet vil vi dels forsta de i 3 dimensioner plottede (se 2.6) kurver, projektionnedpakameraetskoordinatsystem.\billedet"refererersaledesogsa tildenstatiske,rumligekurve-"konstellation",derergivetvedbrugerenskurveogoperationsnsker. pa. Medbrttet vilvimenedetobjektaftypen Graphics,somviskaltegne \Plotning"vilvibenytteomtoforskelligeprocesser: Udregningafkoordinatsttettilenparametriseringsvrdiiengiventid Forbindelseafpunkterneidetprojiceredebilledemedliniestykker 2.3.2 Typerafkurver Vi udseende.daviikkeagteratkasteosudiatomstteeninddataltilenfunktion, skal visualisere parametriseringer. Disse kan matematisk set have vilkarligt alstaopndeenkompletmatematisksyntaks(se2.7)forinddata,vilviopdele dekurver,determuligtatfaatse,ityper.hvertypeharsaenrkkeparametre, derkanspeciceres. generelparametrisering.betragteksempelvis Et problem herved er, at enhver kurvetype er et specialtilflde af en mere f(t)=(cost;sint;0) ; t2[0;2] 3Ikildekodenvilviofterefereretil/benvneparametriseringernesom"gurer". 7

derparametrisererenhedscirklenir2.denneparametriseringeretspecialtilflde afbadekuglensparametrisering(senedenfor)ogdengenerellespirals f(t)=(cos(at)+c1;sin(bt)+c2;t+c3) ; t2r spiral-parametrisering (derkunharcirkulrgrundformfor er igen et specialtilflde = -ogellerserelliptisk).mendenne struktur,fx.kunneetvilkarligt n'tegradspolynomiumiterstattetrediekoordinatfunktionoglggestilhverafdetofrste,givendeflgendesygeudtryk af en endnu mere generaliseret f(t) = (cos(at)+c1+c2t+:::+cntn; sin(bt)+d1+d2t+:::+dntn; e1+e2t+:::+entn) ; t2r Hvadviskallreherafer,atdeteroptilosatfaststtetyperafkurver.Disse vil betragte altid vre mereet generelle specialtilflde parametriseringer, af noget mere ma vedkommende generelt, og nsker selv tilfje brugeren denne at kurvetype4. 2.4 Punkter Vissepunkterkrverspecialbehandling.Brugerenkankrve,atengivenkurves vrditiltident0fremhves. kunneangivestekst-ogtal-vrdierudforgivnepunkter.iforlngelseafdenne Viharogsabrugforspecialpunktertiltegningafkoordinatsystemet;derskal tankegangkunnemanogsaforestillesig,atbrugerenfx.nskedeatforsynevisse punktermedteskt,fx."skringmedy-aksen","lokaltminimum"eller"start". Iafsnittet4.8.2vilviidetaljeretgradovervejesprgsmaletomkringpunkter. 2.5 Typer af operationer Ligesomviinddelerkurverneityper,vilviinddeleoperationerityper.Viskalimplementeredetotyperoperationertranslationogkurvesammenstningsammen medenselvvalgttildemonstrationafdesignetseksibilitet. identiskmedtranslationenafdenenekurve,sadennesstartpunktnetopforenes Vi indser hurtigt, at sammenstningen af 2 kurver som beskrevet i [1] er meddenfrstekurvesslutpunkt. 4Viarbejderkunmedparametriseringerieenvariabel,sarumligegurersasomkugler-eller meregenerelt(dervargeneraliseringenigen!)-ellipsoiderkanikkeidennekontekstparametriseresfuldstndigt(dissegurerkanadeparametriseres).deterdogmuligtatimplementere kurver,derlberpakugle-ogellipsoide-overader,ogaltefterbrugerspeciceredeparametre mereellermindreprcistantyderenrumliggur. 8

parametrer1;r2;r3strkkerkurvernemedenfaktorripadeni Af forslag til selvvalgte operationer er en skaleringsfunktion, der tekoordinat, givet tre enrotationsfunktion,derrotererenkurvegraderomkringenbrugerspeciceret linieirummetsamtenfunktion,dervisertangententilengivenkurveietgivent punkt. af eksibilitetshensyn Sidste forslag involverer blive kendskab kasseret, mens til parametriseringens interessen for nstsidste aedte, ogmindskes vil nok kraftigtaf,atdetfrdigeprogramselvkanroterekurverne. Viagterderforimplementereforslagnummer1. 2.6 Plotning Viskalfremvisekurver,ogligesomviidenikke-ideellevirkelighedreprsenterer fx.enliniestykkemedenstreg,derngterntsetharenbredde,vilvifremviseen passendereprsentationafkurverne. 2.6.1 Endeligreprsentationafuendeligpunktmngde Idet oplagtatladeenkurvevrereprsenteretvedenindiceretendeligpunktfamilie,dertilhrerkurvenspunktmngde.vedfremvisningenvilretteliniestykker forbindetopunktermedindeks klart,atreprsentationensprcisiongesmedantalletafpunkteripunktfami- iogi+1ogdermedvisualiserekurven.deter hver egentlig kurve matematisk set er en uendelig punktmngde, er det lien gurerreprsenteresvedkoordinatlister.dissekansapunktforpunktprojiceres Ġivetdennskedespecikationafbilledettilfremvisning,kanaltsasamtlige nedi2dimensioner,hvoreftergureftergur"samles"medliniestykker. 2.6.2 Kurverogkoordinataksersudstrkning Kurveparametriseringer specicerettidsintervalogkurvetype).begrnservitidsintervallet,forhvilketvi kan have endelig eller uendelig udstrkning (alt efter plotter typer kurver, kurven, dette vil kurvens er pa ingen lngden made altid sandt vreforendelig vilkarlige (narparametriseringer). vi betragter vores Opdelingafkurvestykketipunkterogforbindelseafdissepunktermedliniervil altsamedendeligmangepunkterkunnegiveenvilkarliggodapproximation. altsa Koordinatakserne reprsenteres med i rummet endeligermange uendelige. punkter. DisseDette skal ogsa problem fremvises, vil viogvende skal tilbagetili4.7. 2.6.3 Hvilkepunkterskalplottes? Viskalopvejeprogrammetskretid,dergesmedantalletafpunkterpr.kurve, modapproximationenskvalitet,derligeledesgesmedpunktantallet.derforma 9

enfornuftigbeslutningomantalletafpunktertages,ogherkommeretproblem ispil. etn2nikkendvendigvisgiveenfornuftigpunktmngdetilplotning-hvisvi Givetenkurveparametriseringf(t),t2I=[a;b],davilettilfldigtvalgaf altsavlgerdepunkter,derskalplottes,tilatvremngdenff(a+k(b n a) f0;1;:::;n 1gg(viopsplittertidsintervalleti n 1ligestorebidder(skrer 1)jk2 altsavedialtnpunkter),ogplotterhvertintervalendepunkt).detteskyldes,at kurvenssporikkegennemlbesmedkonstanthastighed. estpunkterafsttes,narkurvengennemlbesmedhjfart.skaldettelykkes Detvilgiveenrelativthjereprcisionmedetkonstantantalpunkter,hvis foros,skalvibrugekurvenshastighedsvektor(somviforkendtekurvetyperogsa nemtkanudledeetmatematiskudtrykfor)ibestemtepunkter.viskalogsatil atvurdere,hvad"hjfart"er.ogudfradisseoplysningerkanpassendepunkter bestemmes. lsningmedhenvisningtilvoresmalstningomeksibilitetogvoresnskeom Vi kan dog allerede pa nuvrede tidspunkt afvise denne noget ambitise overskuelighed. eniethvertpunktveldenerethastighedsvektorgivetvedetlukketudtryk. Hvernykurvetype,mannskerattilfje,villemeddennelsningskullehave hverendvidere-selvomenpassendealgoritmenokvillekunneudregnevorestil foratplottetilstrkkeligmangepunktertil,atfremvisningener"glat"ogfejlfri kurve hrende denition af "hj fart"pa kort tid - vil vi nok blot srge (ellerladeantalplottedepunktervreenbrugerdeneretparameter).detteletterimplementationafnyekurvetyperogforsimplerkoden.omkostningeneren forsvindendelilleforsinkelseogeventuelt\overdige"punkteriplotningen. 2.7 Inddata Vores operationer program er udfrt skal kunne et antal plotte gange en rkke pa visse nskede af kurverne. kurver, efter Herefter at enskal rkke skrmfremstillingenkunneroteresogbeskuesfraforskelligevinkler. 2d- Inddataopdelersigderfornaturligtitohalvdele: Nar Kurver gurerne til plotning. er plottetdennedelafinddataskalkunbenytteseengang. ikkegresigen,frbrugerennskeratbeskueandrekurver. internt i programmet i 3 dimensioner, dette gerenvedhjlpaffremviserprogrammetrotererogskalererbilledet.denne Rotationogprojektion.Dennedelafinddatalevereslbende,narbru- delafinddataleveresvedkaldaffunktionen erbeskrevetiinterfacetforcurveplotter,se[1]. CurvePlotter.draw(),som kendervedkommendesnsker.brugeradenifremviserprogrammettilladerikke Brugeren skal specicere en lang rkke ting, fr programmet overhovedet 10

specikationafkurver,parametreogoperationer.detersaledesikkeentrivialitet, hvorledesbrugerenspecicerersinenskertilprogrammet: VedkommendekunneskrivedetienJava-klasse. Vedkommendekunneskrivedetindienl,deroverholderenafosopstillet syntaks. Vi forskelligemenuerogindtastningsfelterkunnekontrollereinddata. kunne programmere en grask ekstra brugerade, hvori brugeren fra skrivesinenskerienlendatkrve,atvedkommendeskullekendetiljava.vi Sidstelsningerforambitis,ogdetermerebrugervenligtatladebrugeren harderforvalgtmidterstemodel.detkrverdog,atviopstillerensyntaksfor inddatalen,ogenmetodetilatafkodebruger-nskernedfldetienlegalsyntaks. Dettevilblivediskuteretdelsunderafsnittet4.2,delsibrugervejledningensafsnit 7.6. 2.7.1 Brugerspeciceredeparametre Tilhvergurvilvialtidladebrugerenkunnespeciceredeoplagte6tal-parametre antalpunktertilplotning,tidstart,tidslut,r,gogb,saledesatfx. 500 0 2 45 255 120 betyder,atdenpagldendegurskalplottesmed500punkter,parametriseringen skalplottepunktermedtiden skalistandardrgb-modellenvreiforholdet(45,255,120). tlbeneiintervallet[0;2],ogfarvenafkurven vilkarligmangevrdiertilbrugiparametriseringen5. Engursparametrekunnevisaforestilleosvillebestaaf6fasteefterfulgtaf parametre(kurvesammenstning),med3(koordinatsttilentranslationsvektor) Tiloperationererderikkeligesafasteparametre,dissekanangivesudental- ellermed45(densygeoperation,derlggeret44'te-gradspolynomiumevlueret i0tilhverkoordinatiengur).operationsparametreerderaltsaetvilkarligt antalaf. 2.8 Transformationen Vi hvorforvikanklareosmedtre-dimensionalevektorer. henviser til den matematisk tunge argumentation i bilag D. Her forklares, 5Herhenvisestilafsnit3.3.7. 11

2.9 Uddata Det merededelogdendel,viprogrammerer,vilvreen"rumligkasse"projiceretned samlede uddata for det komplette program bestaende af den forprogram- i2dimensioner,ledsagetafetpassendekoordinatsystemogengurmngde,helt indeholdtikassensudsnitaf fraforskelligevinkler. R3.Dettebilledekanroteresogdrejesoganskues entenladehvergurhaveforskelligfarve,ogkoordinatsystemetogbaggrunden Foratgredenne2-dimensionellefremstillinggrasktilfredsstillende,vilvi have brugerdeneret. kontrastiske srfarver, der ikke antages af kurver - eller lade alting vre passendeinddelingforsynetmedtal. Matematisk ville det vre nskeligt, om koordinatsystemet var ledsaget af 12

3 Design Vitilsigteratudarbejdeeteksibeltprogramdesign,dermuliggrudvidelseaf programmet. operationstyper;altsaikkeomfattendringafplotningsalgoritmen,syntaksfor Udvidelserne vil dog begrnse sig til tilfjelse af nye kurve- og samtfortolkningafinddatao.l. vilviopnavedatforsgeathaveenlavkoblingmellemdeindgaendeklasser. Vivildogtilstrbe,atudskiftningafprogramdelebliverlettestmuligt.Dette 3.1 Algoritmisk struktur af programmet - ansvar Enoverordnetrkkeprogramtrinskaltydeligviskunudfreseengangpr.inddatal,dvs.eengangforhvergangenbrugernskeratbenytteprogrammetgramtrinanfreetansvar,somenpassendeklasseidesignetmatagesigaf. I den flgende skitse af denne \engangs-algoritme" vil vi under hvert pro- Indlsinddatal,dvs.oversttilforstaeliginternreprsentationaftekst- lensindhold. prsentation Ansvar: Indlse, omstte til intern reprsentation, opbevare intern re- Udfrinddatalenskommandoer,dvs.plotningafgurer,modikationvia operationer. Ansvar:Forstainternreprsentation,kendegur-ogoperationstyper,kunneinitialiseregurerogoperationer Opretetpassendekoordinatsystemtilfremvisningsammenmedbilledet. Ansvar:Kendekoordinatakserneirummet Gemdisseoplysninger,saderkantrkkespadem,hvergangdraw()kaldes. Ansvar:Gemmedataombilledet oprettelseafcurveplotterogendtindlsningafgurer)samlersigietkaldaf Betragtervietjeblikvoresprogramdelheltoverordnet,servi,atalt(efter funktiondraw()medenrkkeparametreogenbrtattegnepa.returvrdien lbende,mensdertegnespabrttet. er en boolean (lykkedes det at tegne frdig eller ej?), da skrmen opdaterer ansvarfrem. Kiggervimereidetaljen,trderenrkkeprogramtrinmeddertilhrende Modtagparametreogetbrt-objektattegnepa,givedemvideretilrette instanser. Ansvar:Koordinerefunktionskald Tagkopi,somvigernemandrei,afoplysningernefrainddatalen. Ansvar:Kopierebilledet 13

Modicerkopienviarotationogprojektion. Ansvar:Transformerebilledettil2dimensioner Findpassendekoordinatsystemtilatledsagebilledet. Ansvar:Oprettepassendekoordinatsystem,kendeakserneirummet Tegnkurverogkoordinatsystempabrttet(dissevilsidelbendemedindtegningenvisespaskrmen). Ansvar:Tegnebilledet,kendestrrelsenafbrttet,hvorpadertegnes metsstruktur,skalviogsahavegurerogoperationerispil,derkanholdepa Udoverdeansvar,viharharudkrystalliseretsomenkonsekvensafprogram- informationompunktertilplotning,samt(mankunnekaldedeterfllesansvar foralleklasseriprogrammet)eksibilitetmht.udvidelse. tionmedgurerogoperationerforegarpaheltbestemtemader.vivilmedandre Dettefllesansvarkanvidoghurtigtreduceretiletkravom,atkommunika- orddenereetfllesinterfacefornyegurerogoperationer.opfylderentilfjet nygurelleroperationdetteinterface,kanprogrammetafvikles. 3.2 Design Patterns Vednrmerebetragtningafdeopgaver,derskaludfresunderprogramafviklingen,servihurtigtetparstrukturerdergarigen. vektorerskalsakunnemodicereseenforeen,narvieksempelvisladerenoperationpagurenudfres,ellernarviladerenmatrixvirkepahvervektor.imange forskelligesituationererdetpraktiskatbesgeetobjekt(fx.en Vector)ogmodicereobjektetsattributter.Denneobservationgiverosinspira- Figureelleren Forhvergurskalenlisteafpunkterellerstedvektorerfordisseplottes.Disse tiontilatanvendevisitor-mnstret,derigenbenytteriterator-mnstret. detklassernefiguremanagerogreadinputlinehjlpermedatsikrevoresmal, nemligbrugafstandardiseringerafgur-ogoperatorklassersamtinddatatype. eksible design nem tilfjelse af nye gurer operatorer. Disse gr 3.2.1 Fleksibelindlsningmuliggrbrugafdesignpatterns Selveindlsningsalgoritmenerbeskreveti7.5.Indlsningenoginitialiseringen af kurvetilfjelserikkebetyder,atmanskalndreidenoprindeligekildekode.blot gurer og operatorer pa den heri beskrevne made sikrer, at operator- og skaletinterfaceoverholdes. ladendedesignetseksibilitet.vihardogsknnet,attilfjelseafnyeklasserer Defastlagteparameterstrukturerforgurerogoperatorermindskertilsyne- et behovet vigtigere for for at tilfje eksibiliteten nye gur- endogbrugerbestemte operatorklasserparametre, langt overstiger idet vi behovet mener, for at ndringerafparametre. 14

gur-ogoperationstyper. Deparametre,viharvalgt,erbredtfavnendeogkanformentligdkkedeeste mnstermedfordel. Vha. denne eksible indlsning kan vi implementere det nskede design- 3.2.2 Operationerpagurerogdesignmnstre Da operatorerdesignetsomvisitorerumuligt.istedetharoperator-klassenfaetet der i operationer pa gurer kan indga ere gurer, er et design med alle megetenkeltogikke-krvendeinterface. af. Faktiskerdetkunndvendigtatvide,hvormangegureroperatorengrbrug somermodiceretpabaggrundafindkomnegurer.igenkrvervoresdesign, Derudover skal operatoren besidde en metode, der returnerer nogle gurer, atderaltidbliverreturneretgurer,daeksempelvisopsplitningafgurerellers villevreumulig(nyegurerkankommetilellernogleafdemodtagnekanblive slettet). ogreturneredisseherefter.isafaldviloperatorernegrebrugafvisitorer,der Deterklart,atdeesteoperatorerblotvilmodiceredeindkomnegurer besgerhvergurmeden-ioperatorendeneret-visitor.fordideesteoperatorerblotharforskelligevisitorer,hardenabstrakteoperator-klasse implementeret den metode, der modicerer de indkomne gurer. Metoden OperatorA brugafenaccessor-metode,somreturnerervisitoren.dennemetodekansaoverskrives. gr ureneindholderen Visitor-designpatterneterimplementeretafgur-klasserneved,atalleg- benytterdennesdovisit()-metodepassendesteder.visitorenkanimplementeres publicmetodevisit(),somnetopmodtagerenvisitorog forskellige klasseioperatorenellerdenskalvreekstern.visitorenskalselvflgeligopfylde steder, og der stilles ingen krav til om visitoren skal vre en intern interfacettilgurernesvisitor. 3.3 Klasser Vedbetragtningafproblemstillingenudkrystalliseresnaturligtenrkkeobjektog tegningafbilledetpadetudleveredebrt,koordinationafdissehandlinger.dette problemtyper: Figurer, operationer, vektorer, matricer, et koordinatsystem, erillustreretpagur1,see. 3.3.1 Kontrologadministration Klasser:CurvePlotter, Objekter af disse klasserfiguremanager, eksisterer der kuntransform disse har hver isr veldenerede styrende roller. een afderes underprogramudvikling,og fremgaafgur2og3ibilagene. prcise funktioner vil 15

3.3.2 Figurer Fllesforallegurtyperneerenrkkekarakteristikaogansvar.Disseplaceres Klasser:FigureI, FigureA, Subclasses... derforienabstraktsuperklasse. Atkunnemodtageenrkkeinputparametreogomsttedissetilenkonkret parametriseringsforskrift. Atevalueresinvrditilengiventid,vedgentagneberegningeraltsaplotning. Atgemmeinformationomspeciellepunkter,derfx.skalmarkeres. Atvremodicerbareviaoperationer. Givetetbrtattegnesigselv. Atvrekopierbare,altsacloneable. ne,endvidereliggerdennebeslutningiforlngelseafkonventionelgraskjava- programmering. Atfunktionendrawplaceresihvergursikrer,atkodenindkapslesigurer- 3.3.3 Operationer Klasser:OperatorI, Flles for operationeroperatora, er, de givet Subclasses m gurer... parametrereturnererknyegurer. og n meningsfyldte tilhrende gurerneogunderbesgetmodiceretgurerneslagredekoordinaterpapassende Vivilividestmuligudstrknnigdesigneoperationersomvisitorer,derbesger vis,somnvntovenfor. 3.3.4 Vektorerogmatricer Klasser:Vector, Disseklasserlagrerkoordinatstogeransvarligeforatkunneudfrestandar- VectorX, Matrix doperationer(matrixprodukt,krydsprodukt,vektoradditionosv.)padissekoor- dinatst. distinktionen Matematisk VectorogVectorX.Dettebunderi,atvimangestederbenytter set er der ikke forskel pa vektorer, som vi antyder med vektorerudenbehovforvektoroperationer(sahvorforgivedeindgaendeobjekter redundantemetoder?).ligeledesermatricerjogeneraliseredevektorer(ellervektorereretspecialtilfldeafmatricer);atviharoprettetseparateklasserskyldes etdesign-ogoverbliksmssigtskn. Detvisersigimidlertid,atvoresproblemerkanlsesindenforde3-dimensionelle Endviderekandetanfres,atvektorerikkendvendigviser3-dimensionale. 16

vektorer: hellerikkeuundvrlige-vivilblotkiggepa3-dimensionelle,hvorviserbortfra De 4-dimensionale kan undvres i henhold til 2.8. 2-dimensionale er sidstekoordinat. Derforvilviudelukkendeimplementere3d-vektorer. dkapsleinformationpapassendevis. Objekterafdisseklasser,Vector, VectorXsamtMatrix,benyttestilatin- somderviltypiskvremangevector-objekterispil(punkterlagresvedplotning Matrix-objekter Vector-objekter). ved udregningen VectorX-objekter af denvil matrix kun og benyttes de vektorer, sammender med beskriver et par transformationenfra3dimensionertiletbegrnsetudsnitaf2dimensioner,eller eksisteremidlertidigt6. 3.3.5 Srligepunkter Klasser:Point Tilhvergurerknyttetsrligepunkter,derskalmarkeres.Informationomdisse punkterlagresiobjekteraftypenpoint.disseerligesomgurerneudstyretmed en parametre7. draw-funktion, derunder tegningen tagerhjde for despecicerede special- 3.3.6 Designpatterns Klasser:Visitor, Disseklassereralleredebeskrevetunderafsnittet3.2. VectorVisitorI enspecikationafvisitor-interfacet,saledesatdetbesgteobjektskalvreen VectorVisitorI erblot vektor. 3.3.7 Indlsning Klasser:ReadInputLines, Disse klasser star for, som dels InputLine datalenpaenmade,dersikrerlavestmuligkoblingmellemklasserne. beskrevet i 3.2.1, og dels i 4.2, at indlse indparametre, Vi nsker hvorfor altsa at dergeneralisere altsa ikke ndvendigvis inddatas udseende vil vre forde gur- 6 faste og operations- tilgurerne,somnvnti2.7.1.vitilsigter,atparameterantalletafhensyntil parametre udvidelsesmulighederneervilkarligt. 3.3.8 Undtagelser Endvidere RuntimeException. vil vi designe en rkke undtagelser, som alle vil arve fra klassen 6Javas\clean-up"fjernerobjekterudenreferencertilsig. 7Detteharviikkenaetatimplementere,meniteorienerdetikkealenemuligt,menkrver ikkeandenndringafkildekoden 17

4 Programmeringsovervejelser 4.1 Implementation af design Voresimplementationafprogrammetvilihvertfaldpasystemarkitektoniskplan flgedetudviklededesignfuldstndigt.deenkeltemodulervilformentligtafvige marginaltfradetidesignetudtnkte,fx.viletbestemtstmetoderogvariable ikkealtidndvendigvismodsvareetbestemtansvarudledtidesignet. overvejelserindenimplementationen. Vivilnedenforgaidetaljermeddedeleafdesignet,derkrveryderligere 4.2 Inddata konkretiseredensopgaver. I designet har vi en separat klasse til indlsning, ReadInputLines. Vi vil her 4.2.1 Inddatakommandoerlagresilisteaflinier Voresindlsningafinddataskervedatderlseslinieforlinieienbrugerforfattettekstl,somerkonstrueretefternoglenjeregler.Ideeneratsystemetved indlsningen deresparametre,selvomantalletafparametremattevariere. skal kunne kende forskel pa gurer og operatorer og kan indlse denpagldendelinie,etobjektaftypeninputline.dissegemmesietarrayaf Hver linie vil vi omstte til den interne reprsentation af kommandoen i InputLine's,somsakansendesvideretildenfortolkendeenhed,FigureManager. Hervedadskillesindlsningfrarestenafprogrammet. danafviklingsmeekanismenfiguremanagerskalfortolkeinput. Derskalaltsaopstillesreglerfor,hvordangyldiginddatanedfldes,oghvor- derviharvalgtenmaskelidtindvikletsyntaktiskogindlsningsmssigtlsning, tnkeligeparametre. til gengld gr det muligt for brugeren af programmet at regulere pa alle Syntaksenvilfremgaafbrugervejledningensafsnit7.6. 4.2.2 Indkommendetalparametre ing. TalparametrevilvigemmeiJava-typendouble.Se4.3forovervejelseromafrund- inputvrdier Determeddouble'sproblematiskatangiveirrationaleellersrdelesprcise matematiskutilfredsstillendevis:ivoresinddata-lserer som eksempelvis eller e. Dette problem har =sinafrundingtil ma vi lse pa en double.brugerenkanaltsaikkeeskplicitiinddataangivetallet,somjoheller ikkekanlagresimaskinen,menblotenapproximativreelvrdisom3:1415::: 18

4.2.3 Fortolkningafinddata Administrationen klassenfiguremanager,sommodtagerinddatalensometarrayafinputline's. af oprettelsen af gurer og operatorer foregar i et objekt af brugervejledningens7.5.dennealgoritmesikrerfornuftigtydningafinddatalens Dettegennemlbessaogbehandlesviaenstak-algoritme,dererbeskreveti kommandoerudenmisforstaelser. gurerogoperatorer,sombrugerenharangivet,oprettetoglagtitostakke.vi Efterhanden som arrayet af InputLine's gennemlbes, bliver de forskellige harmegettidligtidesignfasennsketatholdeangivelsenafsystemetsgurerog operatorerudenforsystemet.detskullealtsavremuligtatspeciceregurerog operatorer,somsystemetiudviklingsfasenikkekendtetil.denneadskillelseer lykkesvedbrugafjava'sstandardklasse,classloader.vedhjlpafdenneklasse er bliver detoprettet muligt atved indlse initialisering en klasseafudfra FigureManager en tekststreng. pa baggrund ClassLoader-objektet standard-classloader. af systemets indgaroprettelseafetobjektafklassenconstructor,hvorpavibrugermetoden Selveoprettelsenafengurellerenoperatorerenanelsekompliceret,dader afklassenclass,dadeangiverkonstruktrensparameter-klasser. newinstance(),somtagerenlisteafobject's.object-objekterneskalallevre 4.3 Afrundingsfejl Vi ydende arbejder tal. med Denne Java-typen type er (ikke double srlig) alle de begrnset steder, vi (8har bytes), brugsa forafrundings- fejl marginaleafvigelsevilikkefakonsekvenserforhverkenfremvisningelleranden vil opsta. Vi arbejder altsa med en svkket prcision undervejs. Denne lagring af programkrsel. 4.4 Vrdibrende objekter er ikke konstante signdredes.ivoresimplementationagterviimidlertidatndrekoordinaterne ObjekteraftypenVector,VectorXellerMatrixvillemannormaltikkeforestille tiletvektorobjektvreforanderlige.eksempelvisskalviudfreoperationerpa gurerspunktlisterellerskaltransformereenvektortil2dimensioner. Ligeledes ville man ikke matematisk opfatte to vektortranslaterede8 medsammeparametriseringsomens.idesignettilsidesttesdissematematiske kurver konventionerafhensyntildetobjektorienteredeendeligelayoutsamtnsketom atimplementerevisitor,derkanndreengursudseendevedatbesgehvert plottetkoordinatst. 8Medenandenvektorendnul-vektoren,se'f'li';-) 19

4.5 Undtagelser Undtagelserbenyttes,narnogetfataltelleruigennemfrligtopstarundervejsien programafvikling. inddata Iprincippetskalintetjokunnegagaltivoresprogram,hvisbrugerenskriver derkunkanskyldesos.eksempelvisvilviopretteundtagelseriforbindelsemed i korrekt syntaks. Ikke desto mindre vil vi tage hjde for problemer, matrixmultiplikation overensstemmende).disseogtilsvarendeundtagelsererinformativeforeventuelle (der jo kun er deneret hvis matricernes dimensioner er videreudviklerepaprogrammetogndvendige,hvis,foreksempel,matrix-klassen isoleretskullebenyttesienandensammenhng9. selvomdeikkevilblivekastetafos,narprogrammetkres. Af dissearsager har vi altsa implementeret alle vigtige undtagelser, ogsa 4.6 Beregninger og kretid Vivilikkekunneundgaenrkke\overdige"beregninger.Samtligegurerskal plottesi3dimensioner,deterklart.herefterskalderoteresogprojiceresnedi2 dimensionervha.forskriftenangiveti[1].oftevilikkealtafdeti3dimensioner plottedekunnesespaskrmbilledet.deterderforspildatprojicerepunkter,der alligevelikkeskalvises. ticererherinddatamngdenn Sadan\overdig"plotningforvrrerimidlertidikkevoreskretid.Viiden- ogtegnes,idetplotningeni3dimensionererenengangshandlingogdermedikke somantalletafpunkter,derskaltransformeres kommertilatpavirkebrugenafprogrammet.betragteshhv.transformations-og indtegningstidenforhvertpunktsomkonstanteraogb,viltidenfortransformationogindtegningafetpunktvrean+bn.kretidenvilderforvre(a+b)n, hvornerantalletafplottedepunkter.tidskompleksitetenersaledeskuno(n). 4.7 Koordinatakserne i uddata Vores endeligudsnitafakserne,mendetteudsnitafhngerreeltsetafvinklen,hvorfra uddata skal ogsa indeholde passende koordinatakser. Vi skal fremvise et dersesmodorigo.istedetforenkompliceretalgoritmetilatvaretageenefter jepunktetpassendebeskringafakserne(beskringerndvendigforatkunne plottemedendeligmangepunkter),kanmanvlgeforskelligemetodertilvalg afkoordinatsystem. rummetafformen[b1 Narbilledetafallegurererfrdigplottet,vilderndesenmindstekassei tede punktmngde. Mana1] [b2 kunne lade a2] [b3 koordinatakserne a3],dernetopomslutterdenplot- dennekassessider,kunafhngendeafinddata(ogderforkanfremstillesengang vre liniestykker langs 9Vivilnokbenytteosaf,atvikunbehverathandteretre-dimensionellevektorertilat grematrix-klassenskodesimplere(ogdermedikkegenereltbrugbar). 20