Entwicklung eines Werkzeugs zur Auswertung und Bearbeitung von tesselierten Oberflächen



Ähnliche Dokumente
Programmierkurs Java

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Zeichen bei Zahlen entschlüsseln

Welche Lagen können zwei Geraden (im Raum) zueinander haben? Welche Lagen kann eine Gerade bezüglich einer Ebene im Raum einnehmen?

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

Abiturprüfung Mathematik 2008 (Baden-Württemberg) Berufliche Gymnasien ohne TG Analysis, Aufgabe 1

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

1 topologisches Sortieren

Datensicherung. Beschreibung der Datensicherung

Konzepte der Informatik

TECHNISCHE INFORMATION LESSOR LOHN/GEHALT BEITRAGSNACHWEIS-AUSGLEICH BUCH.-BLATT MICROSOFT DYNAMICS NAV

1 Mathematische Grundlagen

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Lineare Gleichungssysteme

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

6.2 Scan-Konvertierung (Scan Conversion)

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Primzahlen und RSA-Verschlüsselung

Aufgabe 1. Zunächst wird die allgemeine Tangentengleichung in Abhängigkeit von a aufgestellt:

Plotten von Linien ( nach Jack Bresenham, 1962 )

Schulberichtssystem. Inhaltsverzeichnis

Dokumentation. estat Version 2.0

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Abitur - Grundkurs Mathematik. Sachsen-Anhalt Gebiet G1 - Analysis

Lineare Gleichungssysteme

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Beschreibung und Bedienungsanleitung. Inhaltsverzeichnis: Abbildungsverzeichnis: Werkzeug für verschlüsselte bpks. Dipl.-Ing.

Mediator 9 - Lernprogramm

Behörde für Bildung und Sport Abitur 2008 Lehrermaterialien zum Leistungskurs Mathematik

Artikel Schnittstelle über CSV

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

Programmierung von Konturzügen aus Geraden und Kreisbögen

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Lernwerkstatt 9 privat- Freischaltung

Welche Unterschiede gibt es zwischen einem CAPAund einem Audiometrie- Test?

Inventur. Bemerkung. / Inventur

Dossier: Rechnungen und Lieferscheine in Word

2 Darstellung von Zahlen und Zeichen

Das Mathematik-Abitur im Saarland

Softwareentwicklung Schrittweise Verfeinerung, Programmieren üben: Tic-Tac-Toe in Raten

Theoretische Grundlagen der Informatik WS 09/10

Wie halte ich Ordnung auf meiner Festplatte?

Die integrierte Zeiterfassung. Das innovative Softwarekonzept

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

IDA ICE - Konvertieren und Importieren von mit TRY_Effekte_aufpraegen.exe erzeugten Datensätzen

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

EH2000 Ablauf am Morgen

1. Einführung. 2. Die Abschlagsdefinition

Die Excel Schnittstelle - Pro Pack

Druckerscriptsprache

Microsoft Access 2013 Navigationsformular (Musterlösung)

Excel Fortgeschrittene Techniken. Peter Wies. 1. Ausgabe, März 2013 EX2013F

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

5. Übung: PHP-Grundlagen

Einführung in die Java- Programmierung

V 2 B, C, D Drinks. Möglicher Lösungsweg a) Gleichungssystem: 300x y = x + 500y = 597,5 2x3 Matrix: Energydrink 0,7 Mineralwasser 0,775,

Textfunktionen. Die Tabellenfunktion LINKS. Zellinhalte extrahieren

Anleitung zur Erstellung einer Batchdatei. - für das automatisierte Verbinden mit Netzlaufwerken beim Systemstart -

Ein PDF erstellen. aus Adobe InDesign CC. Langner Marketing Unternehmensplanung Metzgerstraße Reutlingen

Excel Pivot-Tabellen 2010 effektiv

Task: Nmap Skripte ausführen

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Wir basteln einen Jahreskalender mit MS Excel.

Bilder zum Upload verkleinern

Funktionsbeschreibung. Lieferantenbewertung. von IT Consulting Kauka GmbH

4 Aufzählungen und Listen erstellen

Zahlensysteme: Oktal- und Hexadezimalsystem

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Erstellen von x-y-diagrammen in OpenOffice.calc

Kapitalerhöhung - Verbuchung

syntax.tex Eine Übersicht

Bedienungsanleitung. E-Learning Software VedA

Handbuch. ECDL 2003 Professional Modul 3: Kommunikation. Signatur erstellen und verwenden sowie Nachrichtenoptionen

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Dokumentenverwaltung. Copyright 2012 cobra computer s brainware GmbH

Inkrementelles Backup

2. Word-Dokumente verwalten

Jede Zahl muss dabei einzeln umgerechnet werden. Beginnen wir also ganz am Anfang mit der Zahl,192.

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Anwendungshinweise zur Anwendung der Soziometrie

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Anleitung - Archivierung

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Transkript:

Entwicklung eines Werkzeugs zur Auswertung und Bearbeitung von tesselierten Oberflächen Studienarbeit Christine Sonntag Universität Rostock Lehrstuhl Schiffbau April 2011

Version Datum Kommentar 1.0 April 2011 endgültige Fassung Ich versichere hiermit, dass ich die vorstehende Studienarbeit selbstständig verfasst und keine anderen als die angegebenen Hilfsmittel benutzt habe. Die Stellen, die anderen Werken dem Wortlaut oder dem Sinn nach entnommen wurden, habe ich in jedem einzelnen Fall durch die Angabe der Quelle, auch der benutzten Sekundärliteratur, als Entlehnung kenntlich gemacht. Ort, Datum Unterschrift Copyright c 2011, Christine Sonntag Alle Rechte vorbehalten, Text, Bilder und Grafiken sind geschütztes Material. Christine Sonntag Universität Rostock Albert-Einstein-Straße 2 D-18059 Rostock Tel: + 49 381 498 9270 FAX: + 49 381 498 9272 email: christine.sonntag@uni-rostock.de Dieses Dokument wurde am 30. April 2011 mit dem Satzsystem LATEX gesetzt.

Entwicklung eines Werkzeugs zur Auswertung und Bearbeitung von tesselierten Oberflächen Studienarbeit Christine Sonntag Matrikelnummer: 6201554 Schiffsformen können von vielen CAD-Programmen in Form von tesselierten Oberflächen als Datenformat ausgegeben werden. Dieses zeichnet sich durch einen transparenten Datenaufbau und eine einfache Geometriebeschreibung aus. Einzelne Flächen werden hierbei durch Dreiecke dargestellt und zu einem Körper zusammengefasst, der der Schiffsform entspricht. Diese Art der Beschreibung auch bekannt als.stl-datenformat (Surface Tesselation Language) wird von vielen automatisierten Vernetzungswerkzeugen unterstützt. Bei der Vernetzung für Schiffsumströmungen ist es von Bedeutung, die tesselierte Oberfläche in Regionen zu unterteilen, damit Bereiche wie Bug, Heck und Über- sowie Unterwasserschiff unterschiedlich diskretisiert werden können. Des Weiteren ist die Kenntnis hydrostatischer Parameter des zu vernetzenden Körpers wichtig, um Kraftbeiwerte sowie Anfangsschwimmlagen des Körpers richtig zu berechnen. Ziel der Arbeit ist es, ein Werkzeug zu programmieren, das eine im.stl-datenformat vorhandene Schiffsform in mehrere beliebige Teilflächen zerlegt und die hydrostatischen Parameter als Formkurvenblatt ausgibt. Die folgenden Arbeitspakete sollen im Rahmen der Arbeit bearbeitet werden: 1. Literaturstudium zu der Beschreibung von Oberflächen in den Datenformaten.stl und.vrml 2. Ausarbeitung der für die.stl-manipulation benötigten mathematischen Grundlagen 3. Programmierung einer Ein- und Ausgabeschnittstelle für.stl-flächen 4. Programmierung von Algorithmen für die Bearbeitung und Ermittlung der Parameter des Formkurvenblattes 5. Programmierung von Algorithmen zur Ausgabe von Spantkontur und Spantarealkurve 6. Validierung des erarbeitenden Werkzeuges mit Hilfe von unterschiedlichen Schiffsformen im.stl-format 7. Berichterstellung entsprechend den Konventionen am Lehrstuhl (L A TEX) Voraussetzung: Grundkenntnisse der objekorientierten Programmierung in C++ oder Java Betreuer: Dipl.-Ing. Lutz Kleinsorge; Beginn: 01. Januar 2011 Ende: 30. April 2011 i

Inhaltsverzeichnis 1 Kurzfassung 1 2 Einleitung 3 3 Grundlagen 5 3.1 Beschreibung von Oberflächen im STL-Datenformat...................... 5 3.2 Beschreibung von Oberflächen im VRML-Datenformat.................... 6 3.3 Mathematische Grundlagen.................................... 7 3.3.1 Schneiden eines Dreieckssegments mit einer beliebigen Ebene............ 7 3.3.2 Numerische Integration mit der Trapezregel...................... 9 3.4 Genutzte Software......................................... 11 4 Entwurf des Programms 13 4.1 Spezifikation der Anforderungen an das Programm...................... 13 4.1.1 Algorithmus zum Einlesen der STL-Datei........................ 14 4.1.2 Algorithmus zum Schneiden der STL-Fläche...................... 14 4.1.3 Algorithmus für die Ermittlung der Parameter des Formkurvenblatts....... 14 4.1.4 Algorithmus zur Berechnung der Werte für die Spantarealkurve.......... 15 4.1.5 Algorithmus zur Ausgabe der Spantkontur....................... 15 4.2 Ablaufstruktur des Programms.................................. 16 4.2.1 Einlesen einer STL-Datei.................................. 17 4.2.2 Schneiden der STL-Fläche................................. 18 4.2.3 Berechnung eines Formkurvenblatts........................... 21 4.2.4 Berechnung der Werte für die Spantarealkurven.................... 25 4.2.5 Ausgabe einer Spantkontur................................ 27 5 Validierung des Programms 29 5.1 Algorithmus zum Einlesen der STL-Datei............................ 29 5.2 Algorithmus zum Schneiden der STL-Fläche.......................... 29 5.3 Algorithmus zur Ermittlung des Formkurvenblatts...................... 31 5.3.1 Formkurvenblatt eines Quaders............................. 31 5.3.2 Formkurvenblatt eines Container-Schiffs........................ 34 5.3.3 Formkurvenblatt eines Tankschiffs............................ 37 5.3.4 Formkurvenblatt einer Fregatte.............................. 40 5.3.5 Genauigkeit der Rechnungen............................... 43 5.4 Algorithmus zur Berechnung der Spantarealkurve....................... 46 5.5 Algorithmus zur Ausgabe der Spantkontur........................... 48 5.6 Mögliche Problempunkte..................................... 49 5.6.1 Unzulässige Nutzereingaben............................... 49 5.6.2 Lücken im Dreiecksnetz.................................. 49 5.6.3 Fehlende Seiten....................................... 50 5.6.4 Überlappende Flächen................................... 52 5.6.5 Fehlerhafte Orientierung von Dreiecksnormalen.................... 52 5.6.6 Negative y-werte...................................... 53 5.6.7 Negative und positive y-werte.............................. 53 5.6.8 Ungewöhnliche Spantformen............................... 54 5.6.9 Abweichende Lage im Koordinatensystem....................... 54 6 Bewertung und Ausblick 55 iii

Literaturverzeichnis 57 A Programmbedienung 59 A.1 Starten des Programms....................................... 59 A.2 Durchführung des Programms.................................. 59 B Beschreibung der Methoden des Programms 67 iv

Abbildungsverzeichnis 1 Dreieckssegment, Schnittebene und Schnittgerade....................... 8 2 Interpolierter Spant einer STL-Fläche............................... 10 3 Struktogramm zum Ablauf des gesamten Programms..................... 16 4 Struktogramm zum Einlesen der STL-Datei........................... 17 5 Struktogramm zum Schneiden der STL-Fläche......................... 19 6 Struktogramm zur Berechnung des Formkurvenblatts..................... 22 7 Struktogramm zur Berechnung der Spantarealkurven..................... 26 8 Struktogramm zur Ausgabe der Spantkontur.......................... 27 9 Abmaße des Container-Schiffes im 3D-Tool........................... 29 10 Unterwasserbereich des Container-Schiffs als geschnittene STL-Fläche........... 30 11 Vor-, Mitt- und Hinterschiff des Container-Schiffs als separate STL-Flächen........ 30 12 Schnitt der STL-Fläche in y-richtung............................... 30 13 Extrahierter Bugwulst des Container-Schiffs........................... 31 14 STL-FLäche eines Quaders..................................... 32 15 STL-Fläche des Container-Schiffs KCS.............................. 34 16 Vergleich von Volumen, Wasserlinienfläche und benetzter Fläche (KCS).......... 36 17 Vergleich von Formschwerpunkt, Wasserlinienschwerpunkt u. Metazentrum (KCS)... 36 18 Vergleich von longitudinalem Metazentrum u. Einheitstrimmoment (KCS)......... 37 19 STL-Fläche des Tankers KVLCC.................................. 37 20 Vergleich von Volumen, Wasserlinienfläche u. benetzter Fläche (KVLCC1)......... 39 21 Vergleich von Formschwerpunkt, Wasserlinienschwerpunkt u. Metazentrum (KVLCC1). 39 22 Vergleich von longitudinalem Metazentrum u. Einheitstrimmoment (KVLCC1)...... 40 23 STL-Fläche der Fregatte 5415................................... 40 24 Vergleich von Volumen, Wasserlinienfläche und benetzter Fläche (5415).......... 42 25 Vergleich von Formschwerpunkt, Wasserlinienschwerpunkt und Metazentrum (5415).. 42 26 Vergleich von longitudinalem Metazentrum und Einheitstrimmoment (5415)....... 43 27 Einfluss der Spantanzahl auf das Volumen........................... 44 28 Einfluss des Wasserlinienabstands auf das Volumen...................... 45 29 Spantarealkurve des Container-Schiffs bei T = 10, 8 0m.................... 46 30 Spantarealkurve des Tankschiffs bei T = 20, 80 m........................ 47 31 Spantarealkurve der Fregatte bei T = 6, 15 m.......................... 47 32 Spantkontur des Container-Schiffes bei x = 115 m und x = 234 m.............. 48 33 Lücke in der STL-Fläche...................................... 50 34 Fehlerhafte Spantarealkurve.................................... 50 35 Varianten des Quaders als STL-Fläche.............................. 51 36 Überlappende Fläche bei der Fregatte 5415........................... 52 37 Falsch gerichtete Normalen in der STL-Fläche......................... 52 38 Doppelte STL-Fläche........................................ 53 39 Beispiel einer ungewöhnlichen Spantkontur........................... 54 A1 Beginn des Programms....................................... 59 A2 Fehler beim Einlesen des Dateipfades.............................. 60 A3 Erfolgreiches Einlesen eines Dateipfades............................. 60 A4 Aufforderung zum Eingeben der Schnittgrenzen........................ 61 A5 Fehler beim Eingeben der Schnittgrenzen............................ 61 A6 Fehler beim Eingeben einer zu großen Schnittgrenze...................... 62 A7 Beispiel für die Ermittlung der neuen STL-Flächenabmaße.................. 62 A8 Erfolgreiches Schreiben einer STL-Datei............................. 62 A9 Fehlerhafte Eingabe für die Tiefgänge.............................. 63 A10 Beispieleingabe zur Berechnung des Formkurvenblatts.................... 64 A11 Beispiel eines berechneten Formkurvenblatts.......................... 65 A12 Ausgabebeispiel für eine ermittelte Spantarealkurve...................... 65 A13 Beispielausgabe einer Spantkontur................................ 66 A14 Ende des Programms........................................ 66 v

Tabellenverzeichnis 1 Ausgegebene Flächenmaße des Container-Schiffs....................... 29 2 Berechnetes Formkurvenblatt des Quaders........................... 32 3 Ergebnisse für das Formkurvenblatt des Container-Schiffs.................. 34 4 Ergebnisse für das Container-Schiff aus Orca3D......................... 35 5 Ergebnisse für das Formkurvenblatt des Tankschiffes..................... 38 6 Ergebnisse für das Formkurvenblatt des Tankschiffes aus Orca3D.............. 38 7 Ergebnisse für das Formkurvenblatt der Fregatte........................ 41 8 Ergebnisse für das Formkurvenblatt der Fregatte aus Orca3D................. 41 9 Einfluss der Spantanzahl auf die Ergebnisse........................... 44 10 Einfluss des Wasserlinienabstands auf die Ergebnisse..................... 45 vii

Kurzfassung 1 1 Kurzfassung STL-Dateien bieten aufgrund ihrer unkomplizierten Datenstruktur und der einfachen Beschreibung der triangulierten Oberflächengeometrie eines Körpers eine gute Grundlage für die Analyse und weitere Bearbeitung des beschriebenen Körpers. So wird ein Java-Programm entworfen, welches dies speziell für Schiffsformen ermöglicht. Dazu erfolgt zu Beginn eine Spezifikation der konkreten Anforderungen an das Programm, anschließend werden die Abläufe in den entworfenen Algorithmen näher beschrieben. Zunächst wird ein Algorithmus zur Manipulation von STL-Dateien erstellt, der die tesselierte Fläche in beliebige Teilflächen zerlegen kann. Dies ist vor allem für numerische Strömungsberechnungen vonnöten, um später verschiedene Bereiche des Schiffes durch unterschiedlich genaue Panelnetze diskretisieren zu können. Die nötigen mathematischen Grundlagen zum Schneiden der Flächen werden vorab dargelegt. Für die Auswertung der STL-Flächen werden Algorithmen zur Ermittlung von Formkurvenblättern und Spantarealkurven sowie zur Ausgabe von Spantkonturen entwickelt. Die entsprechenden hydrostatischen Parameter, wie etwa Verdrängungsvolumen, Verdrängungsschwerpunkt, Wasserlinienfläche, Wasserlinienschwerpunkt, Breiten- und Längenmetazentrum, Einheitstrimmoment sowie benetzte Oberfläche, werden dabei durch numerische Integration berechnet. Die nötigen Spant- und Wasserlinienkonturen werden interpoliert und mittels Trapezregel integriert. Die dabei verwendeten Berechnungsformeln werden aufgezeigt. Anschließend erfolgt die Validierung aller entworfenen Algorithmen. Dazu werden diese anhand von verschiedenen Beispiel-Dateien getestet, die sowohl einfache geometrische Formen als auch kompliziertere Schiffsformen enthalten. Die Ergebnisse werden mit den Resultaten anderer Software verglichen, wobei sich keine nennenswerten Abweichungen zeigen. Darüber hinaus werden die Auswirkungen von einigen möglichen Fehlern, die in einer STL-Datei enthalten sein können, untersucht. Die Validierung zeigt, dass das entworfene Programm seinen Anforderungen gerecht wird und die Aufgabenstellung für alle getesteten STL-Flächen und ebenso für einen Großteil der betrachteten Problemfälle erfüllt. Einige Möglichkeiten zur Erweiterung des Programms werden genannt. Der Anhang enthält schließlich ausführliche Hinweise zur Bedienung des entworfenen Java- Programms sowie eine kurze Beschreibung zu den im Programm-Code verwendeten Methoden. Das Programm selbst ist als CD-ROM beigefügt.

Einleitung 3 2 Einleitung Tesselierte Oberflächen, insbesondere triangulierte, wie sie in STL- oder VRML-Dateien beschrieben werden, spielen eine zunehmend große Rolle im Entwurfsprozess von Schiffen, Flugzeugen oder auch anderen Objekten und werden daher von vielen CAD-Systemen unterstützt. Die stückweise Beschreibung einer Fläche durch einzelne, ebene Dreieckssegmente hat sich in vielen Fällen bewährt, denn sie ermöglicht z.b. schnelles Rendern, also Generieren einer Graphik auf dem Computer-Bildschirm. Des Weiteren ist es beispielsweise unmöglich, Kugelflächen allein durch Rechteckflächen zu approximieren. Approximationen höherer Ordnung, also durch gekrümmte Flächen, sind zwar in den meisten Fällen für das 3D-Objekt repräsentativer und geben es präziser wieder, jedoch gestaltet sich dabei auch die Prüfung oder weitere Verarbeitung des Modells komplexer [1, 2, 3, 4, 5]. Ein wichtiger Aspekt ist, dass das STL-Datenformat im Gegensatz zum VRML-Format auch für Strömungsberechnungen, wie sie etwa im Entwurfsprozess des Schiff- oder Flugzeugbaus Anwendung finden, an Bedeutung gewonnen hat. Dies liegt ebenfalls daran, dass es vergleichsweise transparent und übersichtlich aufgebaut ist und eine einfache Geometrie-Beschreibung enthält [6, 7]. In der Numerischen Strömungsmechanik dient das STL-Format als Schnittstelle zwischen dem CAD-System und dem Algorithmus zur Erzeugung von Oberflächennetzen für CFD- Rechnungen (Computational Fluid Dynamics). Um für einen Körper Strömungsberechnungen durchführen, also z.b. Widerstands- und Auftriebsbeiwerte ermitteln zu können, muss dessen Oberfläche vernetzt werden, wofür das STL-Netz als Basis genommen wird. Eventuelle Lücken oder Überlappungen in der STL-Fläche müssen vor der Vernetzung des zu untersuchenden Körpers korrigiert bzw. entfernt werden. Die Netzdichte beeinflusst dabei direkt die Genauigkeit der Berechnungen (vgl. [6, 7]). Bei der Strömungsoptimierung im Schiffbau spielen oft einige Bereiche des Körpers eine größere Rolle als andere und müssen daher besonders fein diskretisiert werden. So ist beim Schiff vor allem das Unterwasserschiff interessant. Speziell Bug- und Heckbereich haben großen Einfluss auf die Strömungseigenschaften des Schiffes und sollten daher möglichst genau vernetzt werden. Anstatt jedoch den kompletten Körper mit einem sehr feinen Netz zu überziehen, bietet es sich an, für diese verschiedenen Strömungsbereiche Netze unterschiedlicher Dichte zu erzeugen, um somit die erforderlichen Speicher- und Rechenkapazitäten reduzieren zu können. Dafür ist es von Nutzen, die STL-Fläche in mehrere Teilflächen zu zerschneiden, für welche dann jeweils separat ein angemessenes Oberflächennetz zur CFD-Rechnung erzeugt werden kann. Das Programm, welches in dieser Arbeit entworfen wird, soll einen geeigneten Schnittalgorithmus enthalten, der diese Zerlegung der STL-Fläche ermöglicht. Zudem bietet das STL-Format aufgrund seiner übersichtlichen Struktur und der einfachen mathematischen Beschreibung der tesselierten Oberfläche eine gute Grundlage für die Ermittlung eines Formkurvenblatts für den Körper. In einem Formkurvenblatt sind die hydrostatischen Parameter für ein aufrecht und unvertrimmt schwimmendes Schiff in Abhängigkeit vom Tiefgang angegeben [8]. Dazu zählen das verdrängte Volumen, der Formschwerpunkt, die Wasserlinienfläche, der Wasserlinienschwerpunkt, die Anfangsmetazentren, das Einheitstrimmoment sowie die benetzte Schiffsoberfläche. Somit enthält das Formkurvenblatt wichtige Kennwerte der Anfangsschwimmlage eines Schiffs und bildet die Grundlage für Stabilitäts- und Beladungsrechnungen bereits beim Entwurf des Schiffs [9]. Beispielsweise sind der vertikale Formschwerpunkt sowie das

4 Einleitung Längen- und Breitenmetazentrum wichtig für die Schiffsstabilität. Das Einheitstrimmoment wird für Trimmrechnungen eines Schiffes benötigt [8]. Für die Hydrodynamik ist die benetzte Oberfläche interessant, um den Widerstand bei der Bewegung des Schiffs durch das Wasser abschätzen zu können [9]. Diese hydrostatischen Parameter werden durch numerische Integration - größtenteils über die Trapezregel - ermittelt. Hierfür ist zunächst eine Interpolation von Spant- und Wasserlinienkonturen nötig. Diese ähnelt in gewisser Weise dem o.g. Schnittalgorithmus, da in beiden Fällen die Schnittpunkte der STL-Fläche mit einer Ebene bestimmt werden. Die nötigen Grundlagen für den Entwurf dieser Algorithmen werden im folgenden Kapitel erläutert. Universität Rostock

Grundlagen 5 3 Grundlagen Zum Verständnis des Lösungswegs werden in diesem Kapitel zunächst die Ergebnisse des Literaturstudiums zur Beschreibung von tesselierten Oberflächen in STL- und VRML-Dateien dargelegt. Dabei wird auch auf die Anwendungsgebiete und die Verarbeitung dieser Datenformate im Entwurfsprozess eingegangen. Weiterhin werden die mathematischen Grundlagen erklärt, die bei der Lösung der Aufgabenstellung Anwendung finden. Dazu zählt zum einen das Schneiden von Dreieckssegmenten einer STL-Fläche, welches zur Manipulation der STL- Dateien vonnöten ist. Zum anderen wird die numerische Integration mittels der Trapezregel erläutert, wie sie bei der Ermittlung der Parameter des Formkurvenblatts angewendet wird. Abschließend erfolgt eine Beschreibung der Software, die beim Entwurf des Programms Anwendung findet. 3.1 Beschreibung von Oberflächen im STL-Datenformat STL-Dateien enthalten lediglich Geometriedaten eines Objektes. Die Dateiendung.stl ist vom Wort STereoLithography abgeleitet, welches den ersten kommerziellen Rapid-Prototyping- Prozess (Schichtfertigung eines Prototyps) bezeichnet, der Anfang der achtziger Jahre von der US-Firma 3D Systems entwickelt wurde. Ursprünglich waren STL-Dateien vor allem als Schnittstelle zwischen CAD- und Rapid-Prototyping-Systemen gedacht. Aufgrund seines einfachen Aufbaus und seiner Robustheit ist das STL-Format auch immer noch ein weit verbreiteter Industriestandard als Dateninput für alle Arten von RP-Systemen. Inzwischen sind für das Datenformat jedoch auch die allgemeineren Bezeichnungen Surface Tesselation Language oder Standard Triangulation Language gängig [1, 10, 11]. In einer STL-Datei wird die Oberfläche eines beliebigen Körpers durch ein Netz aus zahlreichen Dreiecken beschrieben. Dies stellt eine Approximation an die Originalgeometrie dar, bei der sämtliche gekrümmten Kanten und Flächen durch Geraden und ebene Flächen angenähert, also tesseliert, werden. Die Originalfläche stimmt somit nur an den Netzpunkten, den Eckpunkten der Dreiecke, mit der approximierten Fläche überein [12, 2]. Jede Dreiecksfacette ist durch ihre drei Eckpunkte und einen Einheits-Normalenvektor zur Dreiecksfläche definiert. Die Orientierung des Segments, also welche Seite ins Innere des Körpers und welche nach außen zeigt, ist durch zwei Angaben festgelegt, die sich nicht widersprechen dürfen. Zum einen zeigt die Normale des Dreiecks immer nach außen und zum anderen kann man durch die Reihenfolge der angegebenen Eckpunkte auf die Richtung der Normalen schließen. Betrachtet man das Objekt von außen, so müssen die Eckpunkte jedes Dreiecks entgegen dem Uhrzeigersinn angeordnet sein, sodass sich für jedes Segment eine nach außen gerichtete Normale ergibt. Es handelt sich bei der Angabe der Normalen also um eine redundante Information. Ebenso verhält es sich mit der Definition der Eckpunkte. Da jeder Eckpunkt in minimal zwei Segmenten enthalten ist, wird er auch mindestens zweimal definiert [12, 13, 14]. STL-Dateien können sowohl im Textformat (ASCII American Standard Code for Information Interchange) als auch im Binär-Format gespeichert werden. Binäre STL-Dateien sind zwar hinsichtlich ihrer Größe kompakter als ASCII-Dateien [1], jedoch wird im Rahmen dieser Arbeit speziell auf das Textformat eingegangen, da dieses vom zu erstellenden Programm weiter verarbeitet bzw. manipuliert werden soll. Das ASCII-Format einer STL-Datei besitzt immer die folgende Struktur:

6 Grundlagen solid Name facet normal n x n y n z outer loop vertex p x1 p y1 p z1 vertex p x2 p y2 p z2 vertex p x3 p y3 p z3 endloop endfacet facet normal outer loop... endloop endfacet... endsolid Name Durch solid wird zunächst ein Körper definiert, dessen Name unmittelbar anschließend angegeben ist. Nacheinander folgt eine ungeordnete Definition der einzelnen Dreieckssegmente durch den Befehl facet. Jede Dreiecksfläche wird zum einen durch die drei Koordinaten ihres nach außen gerichteten Normalenvektors beschrieben (facet normal). Zum anderen sind unter outer loop die Koordinaten der drei Eckpunkte (vertex) angegeben. Sämtliche Koordinaten sind als Gleitkommazahlen definiert, wobei ihre Einheiten beliebig sein können [1, 10, 3]. Der facet-befehl kann beliebig oft wiederholt werden, sodass man auch sehr feine, den Körper umspannende Dreiecksnetze erstellen kann. Jedoch können die STL-Dateien in diesem Fall aufgrund der redundanten Informationen sehr groß werden [1, 13]. 3.2 Beschreibung von Oberflächen im VRML-Datenformat Neben dem STL-Format beschreibt auch die VRML einen Körper durch eine tesselierte Oberfläche. VRML steht für Virtual Reality Modeling Language und ist ein Dateiformat für die Beschreibung von interaktiven 3D-Welten und -Objekten, die mit Eckpunkten und Polygonen als Basiselemente erschaffen werden. In Anlehnung daran wird auch die Dateiendung.wrl für world, also Welt, und die Endung.vrml verwendet [15, 16, 4]. Diverse CAD-Systeme besitzen eine VRML-Schnittstelle, um 3D-Modelle direkt als VRML- Datei zu speichern. Eine solche, exportierte VRML-Datei beinhaltet dann eine Aufzählung der gewünschten darzustellenden Objekte im ASCII-Format. Diese Objekte werden durch einen oder mehrere sogenannte Knoten (Nodes) beschrieben, die hierarchisch angeordnet sind und somit die Beziehung der Objekte untereinander festlegen. Es gibt Geometrie-Knoten, welche die Informationen über die Objekt-Geometrie beinhalten, und Attribut-Knoten, welche die Materialeigenschaften, wie z.b. die Farbe, beschreiben können [15, 17]. Komplexe Geometrien lassen sich mit VRML im Vergleich zu STL kapazitätssparender darstellen, da die Daten für die Eckpunkte und Normalen nicht redundant gespeichert werden. Die polygonbasierten Geometrie-Knoten, wie etwa der sogenannte IndexedFaceSet-Knoten, definieren zunächst eine Liste von Punkten im Raum durch die entsprechenden Koordinatentripel und anschließend wird eine Liste für die einzelnen Segmente erstellt. Jedes Flächensegment wird dabei durch den Verweis auf die Indizes der drei zugehörigen Eckpunkte eindeutig be- Universität Rostock

3.3 Mathematische Grundlagen 7 schrieben. Da jeder Eckpunkt nur einmal aufgelistet wird und nicht für jedes Segment, dessen Bestandteil er ist, von neuem, wird die Dateigröße gering gehalten [11, 17]. Neben der Oberflächen-Geometrie lässt sich durch die Attribut-Knoten in VRML auch die Beschaffenheit der Oberfläche des Objektes näher beschreiben. Dazu können u.a. Texturen eingebunden oder Knoten zur Beschreibung von Farbe, Lichtreflektion, Transparenz oder Material des Objektes enthalten sein [15]. Da solche Angaben für die Bearbeitung der Aufgabe in dieser Arbeit jedoch nicht vonnöten sind und der Aufbau einer VRML-Datei aufgrund ihrer hierarchischen Struktur vergleichsweise kompliziert ist, sind STL-Flächen zur Lösung des Problems besser geeignet. 3.3 Mathematische Grundlagen 3.3.1 Schneiden eines Dreieckssegments mit einer beliebigen Ebene Für die Manipulation der STL-Flächen ist die Entwicklung eines Schnittalgorithmus vonnöten, der diese Flächen bzw. die Dreieckssegmente, aus denen sie bestehen, bei einer beliebigen Ebene schneidet. Dieser Algorithmus wird in Anlehnung an [18] entworfen (vgl. auch [19]). Jedes Dreieckssegment in einer STL-Datei ist durch die Koordinaten seiner drei Eckpunkte und einen Einheitsnormalenvektor beschrieben. Auch die Schnittebene wird über ihre Normale definiert und darüber hinaus durch einen Punkt, der genau in dieser Ebene liegt. Die Schnittebene wird so erzeugt, dass die Schnittseite diejenige ist, welche den Normalenvektor enthält. Alle Dreiecke, die auf derselben Seite der Ebene wie deren Normale liegen, werden entfernt. Die Schnittebene wird durch folgende Ebenengleichung definiert: n x x + n y y + n z z + d = 0 (1) Dabei bilden die Koeffizienten n x, n y und n z den Normalenvektor n = (n x, n y, n z ). Zur Manipulation der STL-Fläche sollen speziell y-z-, x-z- sowie x-y-ebenen berücksichtigt werden. Deren Einheits-Normalenvektoren und die daraus resultierenden Ebenengleichungen sind im Folgenden aufgelistet. y-z-ebene: n yz = (1, 0, 0) 1x + d = 0 x-z-ebene: n xz = (0, 1, 0) 1y + d = 0 x-y-ebene: n xy = (0, 0, 1) 1z + d = 0 Der Wert für d wird durch Einsetzen des bekannten Punktes D = (D x, D y, D z ) in die Ebenengleichung bestimmt: d = (n x D x + n y D y + n z D z ) Bei der STL-Manipulation entspricht dieser bekannte Punkt dem wählbaren Grenzwert zum Schneiden der STL-Fläche in einer der drei Koordinatenrichtungen. Wird der Grenzwert in die entsprechende Ebenengleichung eingesetzt, so ergibt sich in jedem Fall ein d, welches gleich dem negativen Grenzwert ist. Um nun die Lage des Dreiecks zur Schnittebene zu bestimmen, ist die Berechnung des Abstands von jedem der drei Eckpunkte zur Ebene vonnöten. Dies geschieht ebenfalls durch Einsetzen des jeweiligen Eckpunktes P = (P x, P y, P z ) in die Gleichung für die Schnittebene: e(p) = n x P x + n y P y + n z P z + d

Grundlagen 8 Im Fall der drei speziellen Ebenen wird jeweils lediglich eine Koordinate des Eckpunktes zur Abstandsbestimmung beno tigt. Ist der Abstand positiv, so liegt der Eckpunkt auf derselben Seite wie die Normale und muss damit entfernt werden. Ist er negativ, liegt er auf der entgegengesetzten Seite und wird beibehalten. Hat der Eckpunkt den Abstand Null, liegt er genau in der Schnittebene und kann ebenfalls beibehalten werden. Unterschiedliche Kombinationen der Punktabsta nde eines Dreiecks ko nnen auftreten. Zum einen ko nnen alle drei Eckpunkte auf der Schnittseite liegen, sodass das komplette Dreieck gelo scht wird. Zum anderen besteht die Mo glichkeit, dass die Absta nde kleiner oder gleich Null sind und das Dreieck somit beibehalten wird. Haben die Absta nde unterschiedliche Vorzeichen, so durchdringt das Dreieck die Ebene und muss geschnitten werden, wie es beispielhaft in Abb. 1 dargestellt ist. Auch hier mu ssen noch zwei weitere Fa lle unterschieden werden. Liegen zwei Eckpunkte auf der Schnittseite, wie die Punkte P1 und P3 im linken Teil des Bildes, so werden diese durch die Schnittpunkte der beiden entsprechenden Dreieckskanten ersetzt (S1,2 und S2,3 ). Aus diesen und dem dritten Eckpunkt wird ein neues Dreieck gebildet, wobei die Normale des urspru nglichen Dreiecks beibehalten wird. Im zweiten Fall liegt nur ein Eckpunkt des Dreiecks auf der Schnittseite, im Beispiel P1 in der rechten Bildha lfte. Auch hier werden die Durchstoßpunkte zweier Dreieckskanten (S1,2 und S3,1 ) mit der Ebene berechnet. Jedoch bilden diese nun zusammen mit den beiden u brigen DreiecksEckpunkten ein Viereck. Da in einer STL-Datei aber lediglich Dreieckssegmente enthalten sein du rfen, muss das Viereck noch in zwei Dreiecke aufgeteilt werden. Abbildung 1: Dreieckssegment, Schnittebene und Schnittgerade Die jeweiligen Durchstoßpunkte berechnen sich durch Aufstellen der Gleichung fu r die Dreieckskante, welche zwei Punkte miteinander verbindet, die auf unterschiedlichen Seiten der Ebene liegen. Diese Kantengleichung lautet: P = P1 + u1,2 ( P2 P1 ) (2) mit den bekannten Eckpunkten P1 und P2. Die Differenz P2 P1 entspricht dem Richtungsvektor der Kante. Der Wert u1,2 ist ein Koeffizient zwischen 0 und 1 und ist das Maß fu r die Lage eines Punktes auf der Kante. Da auch der Durchstoßpunkt auf der Kante liegt, ergeben sich seine Koordinaten aus Gl. 2 zu: S = P1,x + u1,2 ( P2,x P1,x ), P1,y + u1,2 ( P2,y P1,y ), P1,z + u1,2 ( P2,z P1,z ) (3) Universita t Rostock

3.3 Mathematische Grundlagen 9 Die Punktkoordinaten werden in die Ebenengleichung (Gl. 1) eingesetzt, diese wird ausmultipliziert: n x P 1,x + n y P 1,y + n z P 1,z + d } {{ } =e(p 1 ) ( ) +u 1,2 nx (P 2,x P 1,x ) + n y (P 2,y P 1,y ) + n z (P 2,z P 1,z = 0 } {{ } =e(p 2 ) e(p 1 ) und nach u 1,2 aufgelöst: u 1,2 = e(p 1 ) e(p 2 ) e(p 1 ) (4) Der berechnete Koeffizient u 1,2 kann schließlich in die Kantengleichung eingesetzt werden, um den Durchstoßpunkt zu ermitteln (s. Gl. 3). S x = P 1,x + u 1,2 (P 2,x P 1,x ), S y = P 1,y + u 1,2 (P 2,y P 1,y ), S z = P 1,z + u 1,2 (P 2,z P 1,z ) Mittels der errechneten Durchstoßpunkte können schließlich neue Dreiecke gebildet und in eine STL-Datei geschrieben werden. 3.3.2 Numerische Integration mit der Trapezregel Zur Ermittlung von Flächen, Schwerpunkten und Volumina für das Formkurvenblatt eines Schiffes ist die Integration von Schiffskonturen, also insbesondere Spanten und Wasserlinien, nötig. Da diese Konturen im Allgemeinen nicht exakt einer mathematischen Funktion folgen, werden Näherungsformeln für die Integration angewendet. Dabei wird angenommen, dass die jeweilige Kontur annähernd durch eine mathematische Kurve beschrieben wird, die eine Reihe von Punkten mit der Kontur gemeinsam hat. Das Integral ist dann die Summe aus den Produkten der jeweiligen Funktionswerte mit dem Intervall zwischen den Werten und einem Faktor, der von der zugrunde liegenden Regel abhängt. Im Schiffbau finden u.a. die Simpson schen Regeln und die Trapezregel Anwendung. Bei ersteren wird die Kontur über ein Polynom zweiten oder dritten Grades angenähert, wobei die Intervalle zwischen Konturpunkten gleich sein müssen. Die Trapezregel hingegen nähert jedes Kurvenstück zwischen zwei Konturpunkten durch eine Gerade an, sodass unter dem Kurvenstück eine Trapezfläche entsteht. Diese Fläche lässt sich gemäß der nachfolgenden Gleichung berechnen, wenn x i und x i+1 die begrenzenden Werte des Kurvenstücks sind und f (x i ) und f (x i+1 ) die jeweils zugehörigen Funktionswerte. xi+1 x i f (x)dx = 1 2 ( f (x i) + f (x i+1 ))(x i+1 x i ) Bei einer konvexen Kontur ohne Wendepunkte ist jedoch die Summe der einzelnen Trapezflächen stets kleiner als die tatsächliche. Daher bilden Methoden, die eine Annäherung über Polynome zweiten oder höheren Grades verwenden, die tatsächliche Kontur genauer ab (vgl. [9, 20]).

10 Grundlagen Nichtsdestotrotz wird für die Berechnung des Formkurvenblatts einer STL-Fläche die Trapezregel angewendet. Da STL-Flächen aus ebenen Dreieckssegmenten bestehen, haben die interpolierten Spant- oder Wasserlinienkonturen die Form von Polygonzügen. Somit können die Flächen unter den Polygonzügen über die Trapezregel exakt ermittelt werden. Darüber hinaus ist die Berechnung einfach durchzuführen und die Intervalle zwischen den einzelnen Punkten eines Polygonzugs müssen nicht gleich sein. Eine Annäherung der Fläche durch Polynome zweiten oder höheren Grades ist hier also nicht notwendig. z z7 z6 z5 z4 z3 z0=z1 z2 y0 y1 y2 y3 y4 y5 y6 y7 y Abbildung 2: Interpolierter Spant einer STL-Fläche Abb. 2 zeigt beispielhaft einen interpolierten Spant einer STL-Fläche, welcher in einer y-z- Ebene liegt. Die Punkte des Polygonzugs entsprechen den Schnittpunkten einzelner Dreieckssegmente mit der Spantebene. Unter der Annahme, dass das Schiff symmetrisch ist, entspricht die schraffierte Fläche nur der halben Spantfläche und muss daher noch verdoppelt werden. Die Spantfläche berechnet sich dann folgendermaßen (vgl. [21, 20]): T A ST (T) = 2 y S (T)dz 0 Nach der Trapezregel würde diese Formel demnach lauten: n 1 1 A ST (T) = 2 2 (y i + y i+1 ) (z i+1 z i ) i=0 Für den Spant aus dem Beispiel ergibt sich also: z7 A ST = 2 f (z)dz = 2 1 z 0 2 (z 1 z 0 ) (y 1 + y 0 ) + 1 } {{ } 2 (z 2 z 1 ) (y 2 + y 1 ) +... + 1 2 (z 7 z 6 ) (y 7 + y 6 ) =0 = 6 (y i + y i+1 ) (z i+1 z i ) i=0 Für Wasserlinienflächen erfolgt diese Rechnung analog für eine x-y-ebene. Universität Rostock