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