roller coaster construction editor - Institut für Wissenschaftliches

Werbung
SEP 2008
Thema:
Bahnkonstruktionseditor für Achterbahnen
Martin Krosche
Institut für Wissenschaftliches Rechnen
Technische Universität Braunschweig
Hans-Sommer-Straße 65
D-38106 Braunschweig
Version 1.2 (2008-02-01)
Copyright © by Institut für Wissenschaftliches Rechnen, Technische Universität Braunschweig
This work is subject to copyright. All rights are reserved, whether the whole or part of the material is concerned,
specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on
microfilm or in any other way, and storage in data banks. Duplication of this publication or parts thereof is permitted in
connection with reviews or scholarly analysis. Permission for use must always be obtained from the copyright holder.
Alle Rechte vorbehalten, auch das des auszugsweisen Nachdrucks, der auszugsweisen oder vollständigen Wiedergabe
(Photographie, Mikroskopie), der Speicherung in Datenverarbeitungsanlagen und das der Übersetzung.
Einleitung
Das Institut für Wissenschaftliches Rechnen stellt zwei Projektthemen für das
Softwareentwicklungspraktikum (SEP) 2008. Zum einen soll eine Achterbahn simuliert und
visualisiert werden [1], zum anderen soll ein Editor zur komfortablen Konstruktion von
Achterbahnkurven implementiert werden. Dieses Dokument repräsentiert die
Anforderungsspezifikation für den Bahnkurveneditor.
Ziel
Die Grundlage für dieses Projekt bildet [1]. Das Ziel dieses Projektes ist der Entwurf und die
Implementierung eines visuellen, interaktiven Konstruktionswerkzeugs (Editor) für Achterbahnen.
Das Konstruktionswerkzeug soll über 2D (siehe Abbildung 1) und 3D Visualisierungen verfügen.
Abbildung 1: Vorschlag für den 2D Editor (unvollständig).
Ein 2D (Sub-)Fenster soll die Grundfläche der zu konstruierenden Bahn aus der Vogelperspektive
repräsentieren. Die Flächenausdehnung soll vom Benutzer eingestellt werden können (Länge und
Breite). Ein Raster sowie ein Koordinatenanzeiger für Mausbewegungen geben dem Benutzer
Hilfestellung für die gewünschte Konstruktion. Nun sollen Bahnstützstellen interaktiv in dieses
Fenster an die gewünschte Position hineingesetzt werden können. Da allerdings durch das
interaktive Setzen der Stützstellen nur zwei der typischerweise sechs Parameter gegeben werden,
müssen die fehlenden Parameter durch den Benutzer eingegeben werden können. Hierzu zählt die
Höhe der Stützstelle als auch der Vektor für die Gierachse, siehe [1]. Gewünscht sind hier auch
Default-Werte, die dann vom Benutzer bei Bedarf verändert werden können. Zudem soll es
Bausteine geben, die vom Nutzer angewählt und gesetzt werden können. Hierzu zählen 90 Grad
Anstiege als auch Inversionen wie zum Beispiel Loopings oder Korkenzieher. Ein Baustein besteht
aus einer Reihe von Stützstellen die je nach Kurvenelement vollständig definiert sind. Möchte der
Benutzer allerdings sein gesetzten Baustein in den Parametern verändern, soll er auch diese
Möglichkeit bekommen.
Die Auswahl der Bahnkurvenelemente sowie Parameteränderungen erfolgen über ein Menü.
In einem weiteren 2D (Sub-)Fenster soll das Profil der konstruierten Bahn im aktuellen Zustand
stets angezeigt werden. Dadurch erhält der Benutzer Einsicht in die Höhenverhältnisse der gesetzten
Stützstellen. Eine im Konstruktionsfenster markierte Stützstelle soll auch in diesem Fenster farblich
hervorgehoben werden. Zudem soll der Benutzer alle vier Seiten nacheinander betrachten können.
Welche Seite derzeit angezeigt wird, soll auch im Konstruktionsfenster ersichtlich sein.
Über einen Schalter kann der Benutzer sich nach getaner Arbeit seine Konstruktion in einem 3D
Fenster anschauen. In diesem soll auch die Möglichkeit gegeben sein über die Maus zu rotieren und
translieren.
Die Konstruktionsdaten einer Bahn sollen vollständig in eine XML Datei übertragen werden
(näheres hierzu in [1]). Des Weiteren soll eine solche Datei auch wieder eingelesen werden können,
um so eine schon bestehende Konstruktion anpassen zu können.
Mindestens zwei real existierende Achterbahnen sollen mit dem Editor möglichst naturgetreu
nachgebaut werden. Zudem soll noch mindestens eine ausgedachte Bahn konstruiert werden.
Es ergibt sich eine Schnittmenge mit Projekt [1] hinsichtlich der XML Behandlung sowie der 3D
Visualisierung. Die 3D Visualisierung soll durch Projekt [1] erfasst werden, die XML Behandlung
durch dieses Projekt. Zudem soll die Reihenfolge der Programmierung mit Projekt [1] sauber
abgestimmt werden, sprich Synchronisationspunkte gesetzt werden, da die beiden Projekte stark
voneinander abhängen.
Einsatz
Der zu entwickelnde Editor soll in vollem Umfang unter Linux lauffähig sein und mit dem
Simulations- und Visualisierungswerkzeug des anderen Projektes zusammenspielen. Als
Programmiersprache wird Java empfohlen. Es sollte eine geeignete 2D Grafikbibliothek gefunden
werden, die die Anforderungen erfüllt.
Übersicht
In der folgenden Zusammenfassung wird der zu entwickelnde Editor noch einmal aufgezeigt.
•
•
•
•
•
•
2D Konstruktionsfenster
•
Visualisierung der Konstruktion in Vogelperspektive
•
Raster und Koordinatenanzeige
•
interaktives Setzen von Stützstellen
•
interaktives Setzen von Bausteinen:
•
90 Grad Anstieg
•
Looping
•
Korkenzieher
•
Immelmann
•
Boomerang
•
Sonstige, siehe [2]
•
Markierung des derzeit angewählten Kurvenelements
Menü
•
siehe 2D Konstruktionsfenster (Stützstelle, Bausteine)
•
Schalter zur 3D Visualisierung
Höhenfenster
•
Visualisierung der Stützstellenhöhen
•
Wechsel zwischen den einzelnen Seiten mit Markierung im 2D Konstruktionsfenster
•
Markierung des derzeit angewählten Kurvenelements
Einlesen von Konstruktionsdaten einer Achterbahnkurve aus XML Datei
Auslagern von Konstruktionsdaten einer Achterbahnkurve in XML Datei
Konstruktion von mindestens zwei real existierenden Bahnen und einer ausgedachten Bahn
Im folgenden ist die technische Produktumgebung angegeben. Zur Wahl steht Java oder C++.
Allerdings muss die Auswahl einheitlich für beide Projekte sein. Es wird Java empfohlen.
•
•
•
•
•
Betriebssystem:
Programmiersprache:
Entwicklungsumgebung:
Testwerkzeuge:
Tools/Bibliotheken:
Linux
Java oder C++
eclipse oder kdevelop
Junit oder CppUnit
CTL4j oder CTL, Java3D oder OpenInventor und weitere
(Analyse notwendig)
Funktionen
Die in der oberen Übersicht aufgeführten Punkte können auf die benötigten Funktionen abgebildet
werden. Daher erfolgt hier der Verweis auf die Übersicht. Es soll betont werden, dass die
Benutzerführung komfortabel umzusetzen ist.
Qualitätsanforderungen
Die Qualitätsanforderungen an das zu entwickelnde Produkt sind im Folgenden angegeben.
Benutzbarkeit
Eine benutzerfreundliche Bedienung ist Voraussetzung. Dies umfasst das gesamte Produkt. Auch
eine möglichste einfache Installation mit ausgiebiger Beschreibung zählt hierzu.
Zuverlässigkeit
Es wird auf ausgiebige Tests zum Erhalten eines stabiles Produktes Wert gelegt.
Effizienz
Optimierungen bezüglich der Effizienz sind nicht vorgesehen. Das Produkt soll allerdings auf
normalen Rechnern im vollen Umfang laufen. Auch dies wird hier als bedienungsfreundlich
angenommen.
Änderbarkeit
Das Programmdesign muss für eine spätere Erweiterung ausgelegt sein. Neben einer sauberen
Programmstruktur sollen die Kommentare nach Javadoc/Doxygen Vorgaben erfolgen.
Programmcode und Kommentare sollen in Englisch verfasst werden. Klassen, Methoden, Variablen
etc. sollen sinnvoll benannt werden. Zum Testen der Klassen soll unter anderem Junit/CppUnit
zum Einsatz kommen. Zugehörige schriftliche Ausarbeitungen können in deutsch oder englisch
verfasst werden. Hierzu wird Latex empfohlen.
Bei der Wahl der zu verwendenden Tools/Bibliotheken soll darauf geachtet werden, dass diese mit
hoher Wahrscheinlichkeit auch in Zukunft von den Herstellern gepflegt werden. Des Weiteren
müssen alle Quellen in ein Subversion Repository eingespeist und in diesem während des SEPs
gepflegt werden.
Ergänzungen
Die in diesem SEP entstandene Software soll unter GPL oder LGPL Lizenz (je nach
Programmierumgebung) gestellt werden.
Literaturreferenzen
[1]
[2]
Roller Coaster Simulation (Version 2008), Institut für Wissenschaftliches Rechnen,
Technische Universität Braunschweig.
Inversion (Achterbahn), http://de.wikipedia.org/wiki/Inversion_%28Achterbahn%29
Herunterladen