Ketten aufhängen

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Es wird vorgestellt, wie man die Koordinaten für natürlich hängende Ketten oder Seile berechnet.

    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.

Teilen

Kommentare 4

  • Ich mach sowas immer pi mal daumen mal Fensterkreuz. Wenn der Durchhhang in Blender einigermaßen realistisch ausschaut wird das schon keiner nachrechnen :-D

    • 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ß.

    • 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.

  • Respekt!