LEESMIJ VERSLAG

Project Grafische Technieken - 2e kandidatuur informatica
Academiejaar 2002-2003 - UGent


Groepsleden
-----------
Bart De Smet (info@bartdesmet.net)
Kristof Steurbaut (Kristof.Steurbaut@UGent.be)


Bestanden
---------

gc.zip: De klassen van het project + afbeeldingsbestanden
src.zip: De source code van het project
leesmij.txt: Dit bestand


Uitvoeren
---------

Unzip het bestand gc.zip naar n map. Voer het programma uit met het
volgende commando:

java GraphCenter

Het programma start op met een splashscreen.


Projectsite
-----------

De helpfunctie en eventuele updates zijn beschikbaar via
http://www.bartdesmet.net/rug/graphcenter/


Documentatie
------------

Een aantal klassen is van javadoc informatie voorzien. Deze documentatie is
echter niet in de bestanden opgenomen maar kan via javadoc gegenereerd 
worden.
De complete API van het project zal beschikbaar staan via de projectsite.


Taakverdeling
-------------

Grafische interface:
- Uitwerking tekenpaneel: Bart De Smet
- Bezierrepresentatie: Bart De Smet
- Verhoging van de orde: Bart De Smet
- Environment: Kristof Steurbaut
- Wijzigen layout: Kristof Steurbaut
- Ontwerpen icoontjes, afbeeldingen: Kristof Steurbaut

Structuur:
- Klassenhirarchie: Bart De Smet

Algoritmen:
- Implementatie algoritmen Neville en De Boor: Kristof Steurbaut
- Schrijven helpfunctie: Kristof Steurbaut
- Uitbreiding voor Bezier, graadverhoging, etc.: Bart De Smet


Tijdsbesteding
--------------

Hieronder vermelden we een * schatting * van de tijdsbesteding:

- Research Java-GUI's + Swing + uitwerking structuur GUI: 2 dagen
- Studie theorie
- Uitwerking structuur (modellen etc.): 6 uren
  Hieronder rekenen we het uitwerken van de interfaces voor de representatie 
van data
  en de algoritmen.
- Implementatie Lagrange (basis): 3 uren programmatie + enkele uren 
theoretische studie
- Implementatie De Boor (basis): 4 uren programmatie + enkele uren 
theoretische studie
- Uitbreiding algoritmenklassen voor extra opties: globale schatting van 6-8 
uren
- Algemeen ontwerp GUI:
  * actions, menu's, toolbars: 5 uren
  * tekenpaneel: 3 uren (initile fase, excl. updates)
  * knopenvector: 3 uren
  * documentenklasse: 8 uur (totale tijd)
- Toevoegen knopen:
  * Lagrange: 1 uur (incl. aanpassing algoritme)
  * B-splines: 2 uren (incl. aanpassing algoritme)
- Halveren van de segmenten: 2 uren
- Zoomfunctie (alle opties): 3 uren
- Rotatie: 1 uur
- Aanpassen layout: 4 uren
- Hulpconstructie weergeven en instellen: 5 uren
- Standaardknopenverdelingen: 2 uur (+ aanpassing algoritmen)
- Verhoging van de orde: 4 uren programmatie + enkele uren theoretische 
studie
- Bezierrepresentatie: 3 uren programmatie + enkele uren theoretische studie
- Opslaan/openen documenten: 3 uren
- Afdrukken: 5 uren (+ naslag API, tutorials Java)
- Undo/redo: 2 uren (aanpassing dataklasse)
- Debugging: 1 dag

TOTAAL: geschat 100 uren
Zie ook taakverdeling voor meer details.


Wat is gemplementeerd?
-----------------------

* Minimale vereisten
* Openen en opslaan van de punten + graad, na het openen moet de gebruiker
  wel opnieuw de modus kiezen om de flexibiliteit tussen Lagrange en 
B-splines
  toe te laten. De bestanden hebben een extensie .gt en zijn in puur
  tekstformaat. U kan deze dus manipuleren om knopen en controlepunten aan 
te
  passen.
* Undo/redo functie: hierbij worden alle bewerkingen op de punten en de 
knopen
  bijgehouden in de undo en redo stacks. Het overschakelen van modus of het 
aan-
  of uitzetten van een functie komen niet op de undo/redo-stacks.
* Sneltoetsen voor commando's
* Controlepunten/knopen exact ingeven: voor controlepunten is een 'locator'
  naast de toolbar beschikbaar die de exacte cordinaten aanduidt. Voor 
knopen
  is geen optie voorzien om dit exact in te stellen (tenzij via het 
opgeslagen
  bestand).
* Optie halveren: is ook beschikbaar voor Lagrange vermits dit geen 
eigenlijke
  problemen opleverde. De performantie van deze methode is zoals theoretisch
  verwacht niet perfect door de zware berekeningen van de nieuwe punten.
* Graadverhoging B-splines
* Bzier representatie
* Knooppunten in tekenvenster: hierbij wordt de waarde van de knopen 
weergegeven
  als tekst bij elke knoop
* Gedetailleerd slepen: door deze optie uit te zetten wordt de curve met een
  nauwkeurigheid van 1/10 minder getekend en wordt bovendien de 
hulpconstructie
  en de Bzierrepresentatie tijdens het slepen uitgezet
* Standaardknopenverdelingen: uniform en open uniform
* Detailweergave hulpconstructie: door selectie van een punt op de curve of 
door
  de parameterwaarde op de knopenvector te kiezen kan deze worden 
ingeschakeld
* Layout: kan gewijzigd worden via het dialoogvenster dat voorzien is. 
Verder
  kan het uitzicht van het venster aangepast worden volgens de systeem 
look-and-
  feel of de Java look-and-feel via het menu beeld. De instellingen van de
  kleuren e.d. worden opgeslagen in het tekstbestand environment.ini.
* Zoom-mogelijkheid: er kan gezoomd worden op verschillende manieren. Eerst 
en
  vooral door de keuze van procenten (50, 100, 200, 400) waarbij gezoomd 
wordt
  vanuit de oorsprong. Verder kan gezoomd worden door een kader te tekenen 
of
  door op een willekeurige plaats te klikken (factor sqrt(2)). Er is ook de
  mogelijkheid om te zoomen met een zelf gekozen factor rond een zelf 
gekozen
  zoomcentrum. Zoombewerkingen kunnen met undo/redo hersteld of herhaald 
worden.


Extra functies
--------------

Rotatie:
Er is een rotatiefunctie voorzien. Deze functie kan handig zijn en is vrij
eenvoudig te implementeren (wiskundig gezien). Deze functie laat toe te
roteren rond een gekozen centrum over een bepaalde hoek.

Afdrukken:
Het is mogelijk de getekende curve samen met hulpconstructie, 
gewichtsfuncties
en knopenvector af te drukken naar de printer. Hiertoe dient u de gewenste
opties aan te zetten en dan op afdrukken te klikken. De gewichtsfuncties 
worden
steeds op een apart blad afgedrukt.

Scrollbars:
Het tekenpaneel zit in een scrollpane. Hierdoor is het mogelijk het 
tekengebied
uit te breiden naar onder en naar rechts, maar niet naar boven of naar 
links.
Indien de hulpconstructie of de curve buiten het scherm valt (onder of 
rechts)
verschijnen schuifbalken.

Helpfunctie:
Deze gebruikt internet om een pagina met helpfunctie (en eventuele nieuwe
informatie over het programma) in te laden.


Beperkingen
-----------

Bij het afsluiten kan het opslaan van een bestand niet geannuleerd worden.
Het probleem wordt vermeld op de site van Sun: 
http://forum.java.sun.com/thread.jsp?thread=110938&forum=257&message=294568
maar de gegeven oplossing bood geen soelaas.

Afdrukken herschaalt niet. U moet er zelf voor zorgen dat de afdruk op het 
blad
past (bijvoorbeeld door te zoomen). Bij een 'normale resolutie' vormt dit
normaalgesproken geen problemen.

Bij zoomen en roteren kan de afbeelding buiten het scherm vallen. Hiervoor 
is er
geen oplossing beschikbaar, maar dit kan wel ongedaan gemaakt worden met 
undo.
