![]() |
#1
|
||||
|
||||
![]()
In den letzten Tagen habe ich endlich eine Straklatte "programmiert", eine Excel-Mappe mit VBA-Code.
Ich hatte das Thema ja schon vor knapp zwei Jahren in Arbeit. https://www.boote-forum.de/showthrea...4&#post3743064 https://www.boote-forum.de/showthrea...0&#post3751040 Damals lernte ich die Beschränkungen kennen, die sich ergeben, wenn man die strakenden Linien eines Bootsrumpfes über viele Stützpunkte (Offsets) mit einer Polynom-Näherung (nach Newton) nachbilden will. Mit 4 oder 5 Stützpunkten klappt das sehr gut, wenn man sich aber in die Richtung 10 oder 15 Stützpunkte begibt, was für Offset-Tabellen von Booten typisch ist, neigt diese Art der Näherung dazu, an den Rändern Schlenker zu machen oder "Löckchen" zu bilden.
__________________
Gruß, Günter
|
#2
|
||||
|
||||
![]()
Ich habe das damals so gelöst, dass ich z. B. eine Sheerline durch mehrfaches Aneinanderstückeln von Polynomen über jeweils 5 Stützstellen (mit Überlappung) gebildet habe. Das hat gut geklappt.
Ich hatte damals gelesen, dass das in CAD-Programmen (oder auch sonst in grafischer Software) mit sogenannten "Splines" gemacht werde. Es gab auch viele Artikel über Splines, die aber wenig Anreiz boten, sich ein Tool, welches Splines erzeugt, selbst zu schreiben. Die Rechnerei beinhaltet das Arbeiten mit Matrizen, um Systeme linearer Gleichungen zu lösen. Das musste ich zwar vor 40 Jahren im Studium auch mal machen, es wurde aber nicht gerade mein Hobby und geblieben ist davon nichts. Nun wollte ich es aber doch selber lösen und habe mich daran gemacht, im Netz verwertbare Unterlagen zu suchen. Letztlich wares es mehrere Hochschulskripten, die weiter halfen. Das Skript, welches ich dann hauptsächlich benutzte, enthielt auch noch eine Reihe von Fehlern, die mir erhebliche Mehrarbeit verschafften. (Wenn ich von einer Sache noch keine Ahnung habe, suche ich einen auftretenden Fehler natürlich erstmal bei mir, bzw. meiner Arbeit und erst, wenn ich da keinen Fehler finden kann, gehe ich der Frage nach, ob der Fehler schon im Skript steckt.)
__________________
Gruß, Günter
|
#3
|
||||
|
||||
![]()
Interessant war noch die Tatsache, dass fast überall zu lesen war, das die realen Splines aus dem Schiffsbau bzw. Bootsbau kommen: die Straklatte und auch das Kurvenlineal heißen auf Englisch "spline".
Dann habe ich noch gemerkt, dass mein Aneinanderstückeln von Polynomen niedrigeren Grades im Prinzip genau das ist, was auch eine Splinefunktion macht. Die Tatsache, dass meine Ergebnisse damals gut waren, geht aber darauf zurück, dass eine Wasserlinie im Bootsbau sich meist ziemlich "brav" krümmt. Wenn man solche Stückelei von Hand an etwas heikleren Kurven durchführt, wird das Ergebnis nicht mehr straken.
__________________
Gruß, Günter
|
#4
|
||||
|
||||
![]()
Interessantes Thema...
![]() Kann man da auch Spanten ausstraken? Auf dem Papier hab ich da ja meinen Hamburgersatz für. Trotzdem würde ich die Sache gerne mal auf dem PC in Angriff nehmen... ...was vermutlich allerdings längeres Schulbankdrücken hieße, in meinem Fall. Jedenfalls Danke für deine Themen im Bereich des theoretischen und praktischen Bootsbaus. 👍👍👍 Lg, Alex Geändert von Takelhemd (29.12.2016 um 11:54 Uhr)
|
#5
|
||||
|
||||
![]()
Moin Alex,
ich werde die Mappe hier zum Testen einstellen (wie frühere "Produkte" auch). Ich muss aber noch ein paar Punkte überarbeiten, damit sie nicht nur für mich handhabbar ist. Und der Funktion ist es egal, was man damit ausstrakt, es geht nur darum, "glatte" Kurven zu erzeugen, das heißt, ohne Knicke und mit den unter den gegebenen Umständen (Wertepaare) geringstmöglichen Gesamtkrümmung.
__________________
Gruß, Günter
|
#6
|
||||
|
||||
![]()
So, jetzt kommt die Excel-Mappe, zum Testen und ohne Haftung.
Nötig ist Excel 2010 und die Makros müssen freigegeben werden, damit es läuft. Vorn ist ein Blatt mit Erklärungen. Die Eingabeseite ist so beschaffen, dass man auch Wertetabellen aus anderen Excel-Dateien hineinkopieren kann. Wenn die Eingabe erledigt ist (Schlussmarkierung "e" nicht vergessen), kann das Makro gestartet werden. Es wird eine Tabelle und ein Diagramm erzeugt. Im Graphen wird die Splinekurve angezeigt. Hervorgehoben sind die Punkte der Eingabewerte. Auf der Ausgabeseite ist auch ein Bereich, in dem man ausgesuchte x-Werte eingeben kann (vorhandene Werte einfach überschreiben), wenn das Makro gelaufen ist und der jeweilige y-Wert wird angezeigt. Fragen dazu sind willkommen. ***** Edit: Download entfernt, aktuellere Version des Downloads siehe weiter unten (8x) **********
__________________
Gruß, Günter Geändert von Heimfried (30.12.2016 um 20:07 Uhr)
|
#7
|
||||
|
||||
![]()
Auf der Eingabeseite der Mappe steht ein Beispiel, welches eine Wasserlinie darstellen soll. Ich habe absichtlich in der Mitte zwei Wertepaare ausgelassen, weil es ja auch vorkommt, dass Offset-Tabellen fehlerhaft sind, oder man manche Werte darin nicht (mehr) lesen kann.
Nach dem Lauf des Makros sieht man, dass die Splinefunktion unbeeindruckt von der großen Lücke eine strakende Kurve auswirft. Die dünne rote Linie oben zeigt die Verbindung der beiden Lückenränder durch eine Gerade.
__________________
Gruß, Günter
|
#8
|
||||
|
||||
![]()
Hier kommt schon eine ergänzte Version der Mappe.
Da man ja - jedenfalls anfänglich - sicherlich viel mit verschiedenen Werten spielt, um zu sehen, wie sich der Spline verändert, habe ich jetzt auf der Eingabeseite oben links ein Feld "berechnen" zum Anklicken eingebaut, der das Makro startet, das spart ein paar Klicks. Noch eine Anmerkung: die roten Linien im Diagramm, die die Punkte der eingegebenen Werte mit Geradenstücken verbinden, bilden auch eine Splinefunktion, nämlich eine "lineare". Das hilft zwar im Bootsbau wenig, aber es ist vielleicht gut zu wissen, dass der mathematische Begriff Splinefunktion einiges mehr umfasst, als den hier vorgestellten kubischen natürlichen Spline. (Im Gegensatz zu üblichen Benennungs-Gepflogenheiten bei der Softwareentwicklung rede ich einfach von einer neuen Version, auch wenn die Mappe nur sehr geringfügige Änderungen enthält.)
__________________
Gruß, Günter
|
#9
|
||||
|
||||
![]()
Da ich selbst in den meisten Bereichen der jeweils neuesten Version von Software um etwa 10 Jahre absichtlich hinterherhinke, stelle ich hier auch noch eine Version der Mappe aus Excel 2002 ein. Vielleicht kann ja mancher Interessent mit dem neueren 2010er gar nicht arbeiten.
Soweit ich das verstehe, muss diese 2002er Mappe für die Excel-Versionen ab 97 zu verarbeiten sein. (Da ich selbst erst vor Kurzem auf Excel 2010 umgestiegen bin, habe ich noch damit zu tun, mich an das (für mich) neue Excel zu gewöhnen. Um die Umgewöhnung nicht zu erschweren, kann ich mich nicht mehr allzusehr in Excel 2002 vertiefen, deshalb muss ich die 2002er Mappenversion ein bisschen stiefmütterlich behandeln.)
__________________
Gruß, Günter
|
#10
|
||||
|
||||
![]()
Eine kubische Splinefunktion hat die "Aufgabe" aus gegebenen Punkten (Wertepaare) eine "glatte" Kurve zu machen. So etwas wie ein "Knick" in dieser Kurve ist "streng verboten".
Wenn man nun den Spantriss eines Knickspanters bearbeitet, will die Software auch den Kimmknick, der dort sein muss, glatt machen. Das kann zu keinem vernünftigen Ergebnis führen. Man darf in solchen Fällen nur die Bereiche zwischen den Knicken eingeben (das sind ja nicht immer nur Geraden). Zur Illustration habe ich eine Wasserlinie herausgesucht, deren Offsets die Regel nicht einhalten (siehe "Gebrauchsanleitung", erstes Blatt der Mappe), dass die x-Werte von Wertepaar zu Wertepaar anwachsen müssen (Bild 1 unten). Dementsprechend verläuft die errechnete Spline-Funktion (blau) erst ab etwa x = 3 Metern vernüftig. Was davor liegt, ist offensichtlich Quatsch. (Bild 2. Die roten Punkte und Linien zeigen die eingegebenen Wertepaare.) Wenn man dann bemerkt, das "KNUCKLE" der Knick ist und nur die Werte von dort an eingibt, erhält man eine schön strakende Kurve (Bild 3).
__________________
Gruß, Günter
|
#11
|
||||
|
||||
![]()
Hier zwei Diagramme, die die Arbeitsweise dieser Spline-Funktion erkennen lassen.
Das erste Diagramm zeigt die Spline-Funktion: die Funktionskurve in blau, die Punkte aus den eingegebenen Wertepaaren in rot. Im zweiten Diagramm sind die 4 Funktionen dargestellt, aus denen der Spline zusammengesetzt wird. Es beginnt links am Punkt 0;2 mit der blauen Kurve (Datenreihe 1), am Punkt 2;4 übernimmt die rostrote Kurve (Datenreihe 2) die Führung bis zum Punkt 3;1, dann kommt die grüne Kurve (Datenreihe 3) bis 4;3, von da an ist die violette Kurve (Datenreihe 4) bis zum Ende dran 6;4. Ich habe extra eine etwas wilde Kurve gewählt, weil da sehr deutlich sichtbar wird, dass jede Teilfunktion nur in dem zu ihr gehörenden Teil-Intervall brauchbare Werte annimmt und außerhalb dieses Teilintervalles irgendwie "wegläuft".
__________________
Gruß, Günter
|
#12
|
||||
|
||||
![]()
Das Gleiche nochmal für eine Wasserlinie; es ist die aus #10, ich habe aber die Anzahl der eingegebenen Wertepaare stark reduziert.
Wenn das auch, wie oben gesagt, weit weniger deutlich ist, weil hier die Kurven dichter übereinanderliegen, sieht man das gleiche Prinzip. Für den Spline wird für jeden Teilabschnitt das passende Kurvenstück aus den 5 errechneten Kurven verwendet.
__________________
Gruß, Günter |
#13
|
||||
|
||||
![]()
Hallo Heimfried,
ich hatte, auch schon etwas länger her, mit etwas vergleichbarem angefangen. Kubische Spline in 3d aus Punkteschar. Allerdings nicht in excel, sondern als Script(Pascal) in meinem CAD-Programm. Nun habe ich mich wieder drangesetzt. Dein Macro produziert bei gleicher Geometrie des Stützpolygones ganz unterschiedliche Kurvern, abhängig von der Drehung. Das ist bei meinem Script genauso, wo ist der Fehler? Eine Straklatte wird immer die gleiche Kurve produzieren. Grüße wo Geändert von wol (03.01.2021 um 13:44 Uhr) Grund: Rechtschreibung
|
#14
|
||||
|
||||
![]()
Moin wo,
da gibt es keinen Fehler. Die Mathematik des kubischen Splines ist so beschaffen. Die Kurvenelemente werden aus Polynomen gebildet und die bilden jedes x eindeutig auf ein y ab. Es gibt also zu jedem x im Definitionsbereich genau ein zugeordnetes y. Wenn du den Graphen in deinem rechten Bild um 90° drehst, ist die abgebildete Funktion nicht mehr eindeutig, für x = 0 erhältst du z. B. drei verschiedene y. Das wäre also nicht mehr durch ein Polynom darstellbar. (Für den anderen Graphen gilt das auch, jedoch nur in zwei kleineren Intervallen.) Das ist halt die Beschränkung, die die Definition über Polynome mit sich bringt. Das spielt allerdings in der Bootsbaupraxis schwerlich eine Rolle und, dass eine körperliche Straklatte schlechthin besser sei, kann man auch nicht sagen, denn die von dir gezeigten Kurven können ja von einer solchen Straklatte auch nicht produziert werden.
__________________
Gruß, Günter
|
#15
|
|||||
|
|||||
![]() Zitat:
Grüße wo
|
#16
|
||||
|
||||
![]()
Jo, die Kurve, die die Straklatte beschreibt, nennt der Statiker, glaube ich, "Biegelinie eines homogenen Stabes". Und die hängt wiederum von vielen Faktoren ab und kann in der Regel mit einem Polynom ausreichend genau beschrieben werden, wird aber eben nicht deckungsgleich damit sein.
Zu deinem Foto: dort in der Mitte, wo du die beiden Teilstäbe aneinander geklebt hast, ist eine zusätzliche Randbedingung gegeben, die der natürliche kubische Spline nicht dort, sondern nur an den äußeren Rändern seines Intervalles kennt, nämlich eine Krümmung von Null. Wenn du die Klebestelle längs der Kurve verschiebst, strakt sie nicht mehr, weil die Fügestelle steifer ist, da fehlt dann die Homogenität des Stabes.
__________________
Gruß, Günter Geändert von Heimfried (03.01.2021 um 15:28 Uhr)
|
#17
|
||||
|
||||
![]()
Deshalb bestehen solche Straklatten in praxi auch aus 2 oder mehr Schichten, die immer an anderen Stellen (mit gleichem Abstand) gestoßen sind.
Dann ist das Gesamtverhalten zumindest annähernd identisch zur Biegung einer (z.B. 2-Schichtigen) ungestoßenen Latte.
|
![]() |
|
|