Im Zusammenhang mit der schwimmenden Anlegebrücke habe ich mich ernsthaft mit hängenden Ketten herumgeschlagen.
Damit das nicht nur für diesen Einzelfall nützlich ist, möchte ich hier die wichtigsten Sachen und Codeschnipsel
aufschreiben. Ob es jemanden interessiert, weiß ich nicht, aber nun ist es da.
Es wird leider etwas mathematisch; ich versuche zwar, auf mildem Abiturniveau zu bleiben, aber leider sind ein
paar Sachen unumgänglich, die ich im Abitur nicht gehabt habe. Ich bitte um Geduld und notfalls einen Blick
in die Wikipedia. Verbesserungsvorschläge nehme ich gerne entgegen, rechnet aber bitte damit, daß ich sie als
Anregung nehme und nicht 1:1 umsetze. Ich hänge noch ein PDF an, in dem man sich so richtig mathematisch die
Kante geben kann (bzw. Mathematiker und Physiker sollen das auf der linken Gesäßhälfte absitzen, wahrscheinlich
auch ein paar andere).
Eine Kette hängt im wesentlichen in einer Ebene, weshalb ich die Koordinaten x und y benutze. Um das Ergebnis
richtig in den Raum zu stellen, hilft einem das bekannte transf, oder man baut sich zwei geeignete Basisvektoren.
Zunächst ist wichtig, daß eine hängende Kette oder ein hängendes Seil keine Parabel (y(x) = a (x - x0)2 + y0) beschreibt
sondern die nicht ganz ohne Witz so genannten Kettenlinie:
y(x) = a*cosh ((x-x0)/a) + y0
x0 ist die Position des tiefsten Punktes der Kette, a der Krümmungsradius im tiefsten Punkt, und der tiefste
Punkt selbst ist auf der Höhe y0+a. Der Krümmungsradius einer Kurve in einem Punkt ist der Radius desjenigen
Kreises, der sich am besten an die Kurve schmiegt. cosh ist ein Verwandter der Kosinusfunktion und nennt sich
mit vollem Namen Kosinus hyperbolicus. Er läßt sich mit Hilfe der Exponentialfunktion berechnen:
cosh(x) = 1/2*(exp(x) + exp(-x))
Eine Parabel ist für eine wenig durchhängende Kette eine brauchbare Näherung. Eine Kettenlinie sieht allerdings
im Scheitel etwas "kreisförmiger" aus. Auch hier möchte ich einfach auf die im Netz verbreiteten Bilder hinweisen.
Wer eine Kettenlinie in einer Mod verwenden will, interessiert sich meistens nicht so sehr für die Lage des tiefsten
Punktes, sondern vor allem die der Aufhängepunkte. Für diese müßten die Koordinaten, (x1, y1) und (x2, y2), bekannt sein.
Diese können allerdings nur zwei der drei Parameter x0, y0 und a liefern. Der dritte ist frei. Das ist auch verständlich,
denn wenn ich unterschiedlich lange Ketten an den gleichen Punkten aufhänge, liegen sie auch unterschiedlich. Wer
nicht masochistisch veranlagt ist, legt nun die Befestigungspunkte auf die gleiche Höhe (y1=y2) und setzt den Krümmungsradius
a fest. Je größer a, desto weniger tief hängt die Kette durch. Dann ist
x0 = (x1+x2)/2 , also in der Mitte, und
y0 = y1 - a*cosh((x1-x0)/a)
Wer ein wenig masochistisch veranlagt ist oder aus einem anderen Grund die Befestigungspunkte nicht auf gleicher Höhe haben will,
muß für x0 deutlich mehr rechnen: Zunächst einige Zwischenwerte
d = sqrt ((y1-y2/2)2 - (exp(-x1/a)-exp(-x2/a))*(exp(x1/a)-exp(x2/a)) )
e = ( (y1-y2)/a pm d) / (exp(-x1/a)-exp(-x2/a))
pm ist hierbei ein Vorzeichen(1 oder -1), das so gewählt wird, daß e positiv ist, denn:
x0 = a*ln(e)
und ein Logarithmus aus einer negativen Zahl geht nicht (geht schon, aber nicht für Abiturienten, und nicht so, daß es
hier hilfreich wäre). Wer nachrechnen will, kann sich überzeugen, daß d > (y1-y2)/a, denn der Subtrahend unter der Wurzel
ist negativ. Danach berechnet sich y0 wie oben und alles ist in Butter.
So, und jetzt kommt es hart: Normalerweise wird man entlang der x-Achse gleichmäßig unterteilen wollen und
sich dazu dann die y-Werte ausrechnen. Dann werden die einzelnen Segmente unterschiedlich lang. Das kann man
mit einer Skalierung (transf ...) ausgleichen. Das wird auch für Stahlseile oder sehr gespannte Ketten ordentlich
aussehen. Bei einer stark durchhängenden Kette sieht es dilettantisch aus, wenn die Kettenglieder unterschiedlich lang sind.
Oder wenn sie nicht richtig ineinander hängen. Der Trick ist die Parametrisierung nach der Bogenlänge. Die Parametrisierung
einer Kurve ist eine etwas andere, und vor allem flexiblere, Art, eine Kurve im Raum zu beschreiben. Man berechnet nicht
zu einer vorgegebenen x-Koordinate die y-Koordinate, sondern hat einen Parameter t und zwei Funktionen, die die Koordinaten
im Raum angeben: x(t) und y(t). Man kann sich diesen Parameter t als Zeit vorstellen: x(t) und y(t) nennen jeweils die Koordinaten,
an denen man auf einer Fahrt zum Zeitpunkt t ist1). Die Parametrisierung nach der Bogenlänge bedeutet einfach, daß die Geschwindigkeit
der Reise konstant ist - oder: daß man die Kurve mit einem flexiblen, nicht dehnbaren Maßband ausmißt. Wenn ich diese Parametrisierung
gefunden habe, kann ich Kettenelemente gleicher Länge in regelmäßigen Abständen setzen und habe keine Lücken oder Überschneidungen.
Es gibt noch eine Besonderheit: Als freien Parameter neben der Start- und Endposition habe ich nicht den Krümmungsradius a, sondern
die Länge L der Kette gewählt - das macht die Rechnung nur unwesentlich komplizierter, aber ich kann die Länge sauber als
ganzzahliges Vielfaches der Kettengliedabstände angeben. Natürlich muß die Kettenlänge größer als der Abstand der Befestigungspunkte
sein, sonst sprengt man Mathematik und Kettenglieder:
L > sqrt((x2-x1)2 + (y2-y1)2)
An dieser Stelle möchte ich wieder auf das angehängte PDF verweisen. Es sind dort auch Code-Schnipsel angegeben,
die gerne verwendet werden dürfen. Der Aufwand lohnt sich allerdings nur - dann aber richtig - wenn die Kette oder das Seil
in Längsrichtung strukturiert ist. Also z. B. bei einer Kette oder wenn in einem Seil die verdrillten Teilstränge sichtbar
sein sollen. Und je tiefer der Durchhang, desto mehr.
Prosit - es möge nützen
Rutel
1) Wenn man bei einer parametrisierten Kurve x(t) = t wählt, kommt man praktisch wieder auf die normale Darstellung eines Graphen
mit den Koordinaten (t, y(t)). Und wie bei einem normalen Graphen geht das nur, wenn es zu einer x-Koordinate nur eine
mögliche y-Koordinate gibt.
Comments 4
Newly created comments need to be manually approved before publication, other users cannot see this comment until it has been approved.
Newly created comments need to be manually approved before publication, other users cannot see this comment until it has been approved.
MaikC
Ich mach sowas immer pi mal daumen mal Fensterkreuz. Wenn der Durchhhang in Blender einigermaßen realistisch ausschaut wird das schon keiner nachrechnen
Rutel
Es gibt Situationen, in denen das sicher hinhaut, oder der Betrachter so abgelenkt wird, daß er keinen Blick für den Kurvenverlauf hat.
Bei mir kam das aber nicht in Frage, weil ich mehrere Modelle und mehrere Spannweiten der Ketten habe. Dann hätte ich also nicht eine, sondern im Extremfall 42 Ketten von Hand modellieren müssen - oder Symmetrien und Gleichheiten einführen müssen, die ich eigentlich vermeiden will, weil es sonst zu gleichförmig wird. Da macht mir die Mathematik doch wirklich mehr Spaß.
MaikC
Ja ich wollte das auch nicht negativ bewerten jedem das seine. Ich habe zwar auch mal studiert aber da müsste ich schon schauen um das noch so hinzukriegen.
Wir haben damals zwar keine Ketten aber den Seildurchhang für Freileitungen berechnen müssen. Abhängig vom Wetter, fürs aufhängen. Das machen die nämlich nicht Pi x Daumen.
Alpenheuler
Respekt!