{"id":14567,"date":"2025-03-24T13:00:20","date_gmt":"2025-03-24T12:00:20","guid":{"rendered":"https:\/\/vielzutun.ch\/wordpress\/?p=14567"},"modified":"2025-03-26T10:16:17","modified_gmt":"2025-03-26T09:16:17","slug":"hinter-den-kulissen-der-rollenketten-animation","status":"publish","type":"post","link":"https:\/\/vielzutun.ch\/wordpress\/?p=14567","title":{"rendered":"Hinter den Kulissen der Rollenketten Animation"},"content":{"rendered":"\n<p>OK, inzwischen ist die bisherige Version meiner <a href=\"https:\/\/vielzutun.ch\/wordpress\/?p=14476\" data-type=\"link\" data-id=\"https:\/\/vielzutun.ch\/wordpress\/?p=14476\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Rollenketten Animation<\/a> ver\u00f6ffentlicht und ich hatte Zeit, mir die einmal aus der Distanz anzusehen. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Kettenlinie-gesamt.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"328\" src=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Kettenlinie-gesamt-1024x328.png\" alt=\"\" class=\"wp-image-14547\" srcset=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Kettenlinie-gesamt-1024x328.png 1024w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Kettenlinie-gesamt-300x96.png 300w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Kettenlinie-gesamt-768x246.png 768w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Kettenlinie-gesamt-1536x492.png 1536w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Kettenlinie-gesamt-2048x657.png 2048w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Kettenlinie-gesamt-1200x385.png 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a><figcaption class=\"wp-element-caption\">Bahnkurve der Kettenglenke w\u00e4hrend eines kompletten Umlaufs (Anklicken f\u00fcr Vergr\u00f6sserung)<\/figcaption><\/figure>\n\n\n\n<p>Es gibt ersichtliche M\u00e4ngel, W\u00fcnsche, die offen geblieben sind sowie Pl\u00e4ne, wie man das verbessern k\u00f6nnte. Darum soll es hier gehen.<\/p>\n\n\n\n<p>Zun\u00e4chst zu den M\u00e4ngeln. Dazu muss ich ein wenig ausholen und beschreiben, wie (und mit welchem Ziel!) ich diese Animation einer Rollenkette aufgebaut habe.<\/p>\n\n\n\n<p>Der Kettenumlauf, d.h. die Bahnkurve, auf der sich alle Kettengelenke bewegen, und zwar in exakt gleichbleibendem Abstand zueinander, gliedert sich in vier <strong>Segmente<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kreisbogenf\u00f6rmige Umschlingung Antriebsritzel<\/li>\n\n\n\n<li><a href=\"https:\/\/de.wikipedia.org\/wiki\/Kettenlinie_(Mathematik)\" data-type=\"link\" data-id=\"https:\/\/de.wikipedia.org\/wiki\/Kettenlinie_(Mathematik)\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Kettenlinie<\/a> (Katenoide) unteres Trum<\/li>\n\n\n\n<li>Kreisbogenf\u00f6rmige Umschlingung (grosses) Kettenrad<\/li>\n\n\n\n<li>Geradlinige Kettenlinie oberes Trum<\/li>\n<\/ul>\n\n\n\n<p>Jedes Segment ist softwareseitig daf\u00fcr verantwortlich, alle Rollen zu zeichnen, deren Zylinderl\u00e4ngsachse in seinem Bereich sichtbar sein sollen. Dabei findet keine Z\u00e4hlung oder Buchf\u00fchrung statt. Das heisst, Rollen buchen sich weder in ein Segment ein, noch buchen sie sich aus, noch findet eine Z\u00e4hlung statt. Insbesondere findet keinerlei \u00dcbergabe einer Rolle von einem Segment ans n\u00e4chste statt. Auch ist die Anzahl von Rollen in jedem Segment ist nicht konstant, sondern kann je nach Winkelstellung des Antriebsritzels geringf\u00fcgig schwanken. F\u00fcr das (kleine) Antriebsritzel bei der vorliegenden Geometrie\/Z\u00e4hnezahl z.B. zwischen [6 .. 7] Rollen.<\/p>\n\n\n\n<p>Damit diese Unabh\u00e4ngigkeit trotzdem zu einer geschlossenen und kontinuierlichen Animation f\u00fchrt, m\u00fcssen alle Segmente nahtlos, d.h. ohne L\u00fccken und\/oder \u00dcberlappung an ihre jeweiligen Nachbarn anschliessen. Zudem sollen alle Segment\u00fcberg\u00e4nge &#171;tangential&#187; erfolgen, also ohne erkennbare Richtungs\u00e4nderung in der Bahnkurve der Rollen. F\u00fcr echte Perfektion m\u00fcsste(!) man an s\u00e4mtlichen Segmentgrenzen ber\u00fccksichtigen, dass Ritzel\/Kettenr\u00e4der keine Kreiskonturen aufweisen, sondern Polygone sind, siehe auch &#171;<a href=\"https:\/\/de.wikipedia.org\/wiki\/Polygoneffekt\" data-type=\"link\" data-id=\"https:\/\/de.wikipedia.org\/wiki\/Polygoneffekt\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Polygoneffekt<\/a>&#171;. D.h., eine unvermeidliche Richtungs\u00e4nderung zwischen dem letzten, vollst\u00e4ndig auf dem Ritzel aufliegenden Kettenglied und dem ersten &#171;frei in der Luft&#187; verlaufenden Kettenglied muss zumindest &#171;minimal&#187; sein.<\/p>\n\n\n\n<p>Damit die Rollenketten Animation &#171;nat\u00fcrlich&#187; aussieht, sollte sie im unteren Trum einen kleinen Durchhang aufweisen. In einem realen Rollenkettenantrieb stellt sich dieser Durchhang als Saldo von der Gesamtl\u00e4nge der Kette (Teilung&nbsp;*&nbsp;Anzahl Kettenglieder), Z\u00e4hnezahl der beteiligten Ritzel bzw. Kettenr\u00e4der sowie Achsabstand nat\u00fcrlicherweise passend ein. Die Nachahmung dieses Wegs war mir in meiner Animation leider versperrt, da die mathematische Behandlung einer Katenoide, insbesondere unter Ber\u00fccksichtigung des Polygoneffekts, mathematisches Wissen erfordert, \u00fcber welches ich leider nicht verf\u00fcge. So war ich auf N\u00e4herungen angewiesen welche erwartungsgem\u00e4ss den nahtlosen und \u00fcberlappungsfreien \u00dcbergang an Segmentgrenzen st\u00f6ren. \ud83e\udd72<\/p>\n\n\n\n<p>Den Ber\u00fchrpunkt zwischen Katenoide und einem Kreis(!) mit Polygonradius des Antriebsritzels habe ich hilfsweise grafisch ermittelt, auf der Basis der folgenden \u00dcberlegung:<\/p>\n\n\n\n<p>Ausgehend von der Gleichung einer generischen Katenoiden<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"64\" src=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Katenoid_formula-300x64.png\" alt=\"\" class=\"wp-image-14585\" srcset=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Katenoid_formula-300x64.png 300w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Katenoid_formula-1024x220.png 1024w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Katenoid_formula-768x165.png 768w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Katenoid_formula.png 1062w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/><\/figure>\n\n\n\n<p>habe ich mir zun\u00e4chst eine kleine Excel-Tabelle pr\u00e4pariert (Am Ende dieses Artikels zum Download angeh\u00e4ngt), um mich mit der ungewohnten hyperbolischen trigonometrischen Funktion ein wenig vertraut zu machen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Katenoid_Excel.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"499\" src=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Katenoid_Excel-1024x499.png\" alt=\"\" class=\"wp-image-14589\" srcset=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Katenoid_Excel-1024x499.png 1024w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Katenoid_Excel-300x146.png 300w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Katenoid_Excel-768x374.png 768w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Katenoid_Excel-1536x749.png 1536w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Katenoid_Excel-2048x998.png 2048w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Katenoid_Excel-1200x585.png 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a><figcaption class=\"wp-element-caption\">Katenoid Playground &#8211; klick to enlarge<\/figcaption><\/figure>\n\n\n\n<p>Schnell war klar, dass die beiden Parameter x<sub>0<\/sub> und y<sub>0<\/sub> eine Verschiebung des Scheitelpunkts (tiefster Punkt mit horizontaler Tangente) der Katenoide bewirken. <\/p>\n\n\n\n<p>Da ich eine horizontale Tangente im \u00dcbergang zum unteren Eintritt ins grosse Kettenrad im Sinn hatte, waren die n\u00f6tigen Werte f\u00fcr x<sub>0<\/sub> und y<sub>o<\/sub> f\u00fcr eine Verschiebung des Scheitelpunkts in diesen Punkt per trial&amp;error schnell gefunden, und zwar schlussendlich exakt. Hinweis an dieser Stelle: der Parameter y<sub>0<\/sub> weist eine Abh\u00e4ngigkeit von den Z\u00e4hnezahlen der beiden beteiligten Ritzel\/Kettenr\u00e4der und dem noch zu bestimmenden &#171;Vergr\u00f6sserungsfaktor&#187; alpha auf.<\/p>\n\n\n\n<p>Blieb die Ermittlung des &#171;tangentialen&#187; \u00dcbergangs der Kettenlinie in den Kreis mit Polygonradius des Antriebsritzels. Durch Variation des Wertes &#171;alpha&#187; in meiner o.a. Excel-Tabelle konnte ich dessen Wert m\u00e4ssig exakt in den Bereich zwischen 950 und 1050 eingrenzen. Da mir dieser interaktive Weg zu l\u00e4stig wurde und auch nicht die gew\u00fcnschte Exaktheit versprach, habe ich den Rechner f\u00fcr mich arbeiten lassen und in einem durch x-Koordinaten und alpha-Werten definierten Zielbereich f\u00fcr 41 * 41 Rasterpunkte mit variierenden x- und alpha-Werten den Abstand zum echten Tangentenpunkt zwischen Katenoide und Kreisbahn mit Polygonradius ermitteln lassen.<\/p>\n\n\n\n<p>Und zwar so:<\/p>\n\n\n\n<p>F\u00fcr eine <em>Ann\u00e4herung<\/em> an den tats\u00e4chlichen Tangentenpunkt verwende ich eine Kombination aus <em>ungef\u00e4hrem<\/em> x-Wert und <em>ungef\u00e4hrem<\/em> Alpha-Wert. Damit berechne ich den resultierenden Punkt der durch alpha definierten Katenoiden. (x<sub>0<\/sub> und y<sub>0<\/sub> hatte ich bereits vorher bestimmt &#8211; diese \u00e4ndern sich durch Variation von alpha nicht!)<\/p>\n\n\n\n<p>Da ich den echten Tangentenpunkt nicht kenne, kann ich zun\u00e4chst auch nicht wissen, einen wie grossen Fehler ich durch die <em>Annahme<\/em> eines x- und alpha-Werts mache.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Aber!<\/strong><\/p>\n\n\n\n<p>Ich weiss, dass im echten Tangentenpunkt die Katenoide echt tangential an den Kreis mit Polygonradius anliegt. Die Steigung der Tangente l\u00e4sst sich auch durch einen Ingenieur \ud83d\ude0f leicht berechnen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"73\" src=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-14.51.27-300x73.png\" alt=\"\" class=\"wp-image-14596\" srcset=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-14.51.27-300x73.png 300w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-14.51.27-768x187.png 768w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-14.51.27.png 912w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/><\/figure>\n\n\n\n<p>Der Endpunkt einer <strong>Normalen<\/strong> im wahren Tangentenpunkt mit L\u00e4nge &#171;Polygonradius&#187; muss <strong>exakt<\/strong> im Drehpunkt des Ritzels liegen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"991\" src=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Normale_Zielscheibe-1024x991.png\" alt=\"\" class=\"wp-image-14635\" srcset=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Normale_Zielscheibe-1024x991.png 1024w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Normale_Zielscheibe-300x290.png 300w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Normale_Zielscheibe-768x743.png 768w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Normale_Zielscheibe-1200x1161.png 1200w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Normale_Zielscheibe.png 1422w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption class=\"wp-element-caption\">Normale ab wahrem Tangentenpunkt mit L\u00e4nge = Polygonradius (gr\u00fcn) hat ihren Endpunkt exakt im Zentrum der Zielscheibe<\/figcaption><\/figure>\n\n\n\n<p>Den vorherigen Satz bitte einmal sacken lassen und verstehen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Daher gibt der Abstand des Endpunkts einer Normalen an die Tangente eines <em>gesch\u00e4tzten N\u00e4herungspunkts<\/em> an den Tangentenpunkt mit der L\u00e4nge Ritzelradius zum Koordinatenursprung ein exaktes Mass f\u00fcr den Abstandsfehler der N\u00e4herung. Klingt kompliziert, ist aber im Grunde sehr anschaulich. Formelm\u00e4ssig sieht das so aus:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"922\" src=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.13.46-1024x922.png\" alt=\"\" class=\"wp-image-14600\" srcset=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.13.46-1024x922.png 1024w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.13.46-300x270.png 300w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.13.46-768x691.png 768w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.13.46-1200x1080.png 1200w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.13.46.png 1484w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>Die letzte der obigen Formeln beschreibt den Abstand (&#171;d&#187; wie distance) in Abh\u00e4ngigkeit der x-Koordinate und des Vergr\u00f6sserungsfaktors &#171;alpha&#187;, den eine Katenoide vom wahren Tangentenpunkt aufweist. Dabei stelle ich die Gr\u00f6sse des Fehlers als <strong>H\u00f6he<\/strong> (z-Koordinate) eines Punkts auf der Fehlerfl\u00e4che dar.<\/p>\n\n\n\n<p>Programm-technisch habe ich das so implementiert:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.47.08.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"732\" src=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.47.08-1024x732.png\" alt=\"\" class=\"wp-image-14604\" srcset=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.47.08-1024x732.png 1024w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.47.08-300x214.png 300w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.47.08-768x549.png 768w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.47.08-1536x1097.png 1536w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.47.08-1200x857.png 1200w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.47.08.png 1968w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a><\/figure>\n\n\n\n<p>Im graphisch-visuellen Endergebnis sieht das dann wie folgt aus, wenn ich die Anzeige der Rollen ausgeblendet und hilfsweise eine gr\u00fcne Kreisscheibe mit Radius Polygonradius eingeblendet habe:<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.58.52.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"680\" data-id=\"14608\" src=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.58.52-1024x680.png\" alt=\"\" class=\"wp-image-14608\" srcset=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.58.52-1024x680.png 1024w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.58.52-300x199.png 300w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.58.52-768x510.png 768w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.58.52-1536x1020.png 1536w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.58.52-1200x797.png 1200w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.58.52.png 1994w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a><figcaption class=\"wp-element-caption\">Der betrachtete Zielbereich (rotes Gitternetz) von oben<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.59.35.png\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"706\" data-id=\"14609\" src=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.59.35-1024x706.png\" alt=\"\" class=\"wp-image-14609\" srcset=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.59.35-1024x706.png 1024w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.59.35-300x207.png 300w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.59.35-768x530.png 768w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.59.35-1536x1060.png 1536w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.59.35-1200x828.png 1200w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-23-um-15.59.35.png 1548w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a><figcaption class=\"wp-element-caption\">Der Zielbereich in perspektivischer Ansicht<\/figcaption><\/figure>\n<figcaption class=\"blocks-gallery-caption wp-element-caption\">Die H\u00f6he zeigt den Abstand des jeweiligen Punkts vom wahren Tangentenpunkt an<\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Die Abstands- oder &#171;Fehlerfl\u00e4che&#187; erweist sich wenig \u00fcberraschend als invertierte Kegeloberfl\u00e4che, mit ihrer nach unten weisenden Spitze exakt(!) auf dem wahren Tangentenpunkt zwischen Katenoide und Kreis mit Polygonradius sitzend. Das ist eine sch\u00f6ne Best\u00e4tigung der formelm\u00e4ssigen Zusammenh\u00e4nge zwischen Eingabe von x und alpha und dem resultierenden Abstand&nbsp;&#171;d&#187;&nbsp;=&nbsp;Fehler. Immerhin!<\/p>\n\n\n\n<p>Aber eigentlich interessiert mich die <em>Vorhersage<\/em>, bzw. die <em>Berechnung<\/em> von alpha und x f\u00fcr den wahren Tangentenpunkt. Die schrittweise Herleitung der Formel der Fehlerfl\u00e4che d<sub>(alpha, x)<\/sub> (s.o.) sieht zwar sch\u00f6n &#171;clean&#187; und \u00fcbersichtlich aus, verdeckt aber die dahinter liegende Komplexit\u00e4t.<\/p>\n\n\n\n<p>Das Minimum einer Funktion von zwei Variablen (einer Fl\u00e4che) \u00fcber einem betrachteten Intervall kann man sich anschaulich als horizontal tangierende Ebene an die untersuchte Fl\u00e4che vorstellen. Mathematisch erfordert dies die Aufstellung der beiden partiellen Ableitungen<\/p>\n\n\n\n<p>\u2202 d<sub>(alpha, x)<\/sub>\/ \u2202alpha     und   \u2202 d<sub>(alpha, x)<\/sub>\/ \u2202x<\/p>\n\n\n\n<p>und Ermitteln der Nullstellen dieser partiellen Ableitungen.<\/p>\n\n\n\n<p>Als ich aber die obige &#171;cleane&#187; Darstellung der Gleichung f\u00fcr d<sub>(alpha, x)<\/sub> durch wiederholtes Einsetzen der Zwischenschritte ausgeschrieben vor mir sah:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"98\" src=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-24-um-09.41.30-1024x98.png\" alt=\"\" class=\"wp-image-14622\" srcset=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-24-um-09.41.30-1024x98.png 1024w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-24-um-09.41.30-300x29.png 300w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-24-um-09.41.30-768x74.png 768w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-24-um-09.41.30-1536x147.png 1536w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-24-um-09.41.30-2048x196.png 2048w, https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Bildschirmfoto-2025-03-24-um-09.41.30-1200x115.png 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>habe ich dann doch kapituliert \ud83d\ude29<\/p>\n\n\n\n<p>Ich hoffe, man legt mir das nicht als Faulheit aus &#8230;<\/p>\n\n\n\n<p>Hilfsweise habe ich dann auf mein oben skizziertes grafisches Verfahren zur\u00fcckgegriffen und durch wiederholtes, symmetrisches Verkleinern der Wertebereiche f\u00fcr alpha und x, bei gleichzeitiger Verringerung der Schrittweite des Rasters, den Suchbereich soweit verengt, bis ich die Werte f\u00fcr alpha und x mit &#8211; wie ich annahm &#8211; hinreichender Genauigkeit von jeweils 5 signifikanten Stellen ermittelt hatte.<\/p>\n\n\n\n<p><strong>Aber nochmals<\/strong>: die so ermittelten Werte f\u00fcr alpha und x gelten in der genannten Genauigkeit nur f\u00fcr den <em>angenommenen<\/em> Tangenten<em><strong>punkt<\/strong><\/em> zwischen Katenoide und einem <strong>Kreis<\/strong> mit Polygonradius, w\u00e4hrend <em>tats\u00e4chlich<\/em> aufgrund des Polygoneffekts der Kontakt der Katenoiden mit einem <em>wandernden<\/em> Punkt des sich drehenden Polygons erfolgt.<\/p>\n\n\n\n<p>Als Folge der so eingef\u00fchrten Ungenauigkeiten kommt es zu sichtbaren Darstellungsfehlern w\u00e4hrend der Animation, welche ich als &#171;Dark Flash&#187; und &#171;Bright Flash&#187; bezeichne. Was hat es damit auf sich?<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Dark Flash und Bright Flash<\/strong><\/p>\n\n\n\n<p>Bei der Darstellung einer animierten Rollenkette folgt das Auge in der Regel nicht einer einzelnen Rolle, sondern nimmt, integrierend, den Kettenumlauf als Ganzes wahr. Wenn irgendwann eine Rolle in dem erwarteten regelm\u00e4ssigen Bild fehlt, wird diese L\u00fccke in der regelm\u00e4ssigen Abfolge der Rollen sofort als Fehler wahrgenommen, egal an welcher Stelle sie vorliegt. Das w\u00e4re dann ein Dark Flash. &#171;Flash&#187; deshalb, weil bei 120 fps (wie auf meinem MacBook&nbsp;Pro&nbsp;M4&nbsp;Max) dieser Fehler nur 1 frame lang, also etwa 8 Millisekunden lang andauert.<\/p>\n\n\n\n<p>Umgekehrt wird das Erscheinen einer (hellen) Rolle ausserhalb des regelm\u00e4ssigen Kettenumlaufs gerade vor einem dunklen Hintergrund besonders auff\u00e4llig als Bright Flash wahrgenommen.<\/p>\n\n\n\n<p>Hintergrund der Entstehung von Dark Flash und Bright Flash ist die Verwendung von <a href=\"https:\/\/threejs.org\/docs\/index.html?q=Instanced#api\/en\/objects\/InstancedMesh\" data-type=\"link\" data-id=\"https:\/\/threejs.org\/docs\/index.html?q=Instanced#api\/en\/objects\/InstancedMesh\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">InstancedMeshes<\/a> der Three.js Programmierumgebung. Man nutzt diese InstancedMeshes zur Performance Optimierung, wenn mehrere Objekte gleicher Geometrie und gleichen Materials mit unterschiedlichen Welt Transformationen (Position, Orientierung, Skalierung) gezeigt werden sollen.<\/p>\n\n\n\n<p>Zu Beginn der Nutzung von InstancedMeshes alloziert man vorab \u00fcber den dritten Parameter &#171;count&#187; die gew\u00fcnschte Anzahl von Instanzen, die man zuk\u00fcnftig zu nutzen gedenkt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mesh = new THREE.InstancedMesh( geometry, material, count );<\/code><\/pre>\n\n\n\n<p>Von diesem Moment an \u00fcbernimmt der Entwickler die Verantwortung daf\u00fcr, f\u00fcr ausnahmslos alle allozierten Instanzen <strong>vor<\/strong> deren Nutzung eine g\u00fcltige Welt Transformationsmatrix bereitzustellen.<\/p>\n\n\n\n<p>Zur\u00fcck zu dem Segmenten der Rollenketten Animation:<\/p>\n\n\n\n<p>Wegen der beschriebenen Ungenauigkeiten an den Segmentgrenzen k\u00f6nnen zwei Arten von Fehlern auftreten:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Beide<\/strong> benachbarten Segemente f\u00fchlen sich f\u00fcr eine &#171;im Grenzbereich&#187; liegende Rolle verantwortlich. In der Folge bedienen sich <strong>beide<\/strong> Segmente aus dem Pool der anf\u00e4nglich allozierten und genau abgez\u00e4hlten Instanzen. Mit der Folge, dass f\u00fcr die letzte Rolle keine Instanz mehr \u00fcbrig ist &#8211; es kommt zum Dark Flash.<\/li>\n\n\n\n<li><strong>Keins<\/strong> der benachbarten Segmente f\u00fchlt sich f\u00fcr eine &#171;im Grenzbereich&#187; liegende Rolle verantwortlich. In der Folge bedient sich <strong>keins<\/strong> der beiden Segmente aus dem Pool der anf\u00e4nglich allozierten und genau abgez\u00e4hlten Instanzen. Dies hat zwei Folgen: An einer Stelle, an der eigentlich eine Rolle h\u00e4tte gezeichnet werden m\u00fcssen, bleibt eine L\u00fccke &#8211; ein Dark Flash. Weitere Folge ist, dass der Pool allozierter Instanzen nicht vollst\u00e4ndig verbraucht wurde. F\u00fcr die letzte, ungenutzte Instanz wurde keine Transformationsmatrix bereitgestellt. Also erscheint diese letzte Rolle per default im Koordinatenursprung, im Zentrum des Antriebsritzels &#8211; als Bright Flash.<\/li>\n<\/ol>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Ausblick<\/strong><\/p>\n\n\n\n<p>Es gibt also Verbesserungspotenzial. <\/p>\n\n\n\n<p>Falls ich einen neuen Versuch einer Rollenketten Animation unternehmen w\u00fcrde, sollte er neben der Vermeidung der oben geschilderten Fehler als zus\u00e4tzliches feature einen <strong>variablen Achsabstand<\/strong>, und resultierend einen variablen Kettendurchhang entlang einer passenden Katenoiden aufweisen. Als geheimes Fernziel w\u00fcrde ich im Endausbau gerne eine belastbare (quantifizierbare) Antwort auf die Frage erhalten, wie sich der Durchhang der Motorrad-Kette bei Einfederung der Hinterradschwinge ver\u00e4ndert &#8230;<\/p>\n\n\n\n<p>Unsortierte Stoffsammlung:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>durchg\u00e4ngige Betrachtung von Ritzel und Kettenrad als Polygon<\/li>\n\n\n\n<li>Identifikation der Aufh\u00e4ngepunkte der Kettenlinie an der letzten\/ersten Rolle, die noch\/schon vollst\u00e4ndig in ihrer Tasche zwischen zwei benachbarten Z\u00e4hnen sitzt (d.h.: per frame variable Aufh\u00e4ngepunkte)<\/li>\n\n\n\n<li>Identifikation der (je nach Achsabstand ver\u00e4nderlichen) x-Position des tiefsten (Scheitel-) Punkts der Katenoiden. Wahrscheinliche Vereinfachung bei Symmetrie (gleiche Z\u00e4hnezahl beider Ritzel).<\/li>\n\n\n\n<li>Betrachtung der Katenoiden als zwei Halb-Katenoiden rechts und links des Scheitelpunkts (mit jeweils gleichen x<sub>0<\/sub>, y<sub>0<\/sub>, alpha)<\/li>\n\n\n\n<li>Gesamtl\u00e4nge der Kette konstant mit gerader Anzahl von Kettengliedern<\/li>\n\n\n\n<li>Aufteilung der Kettenl\u00e4nge in fixen Teil (Rollen vollst\u00e4ndig in Ritzel\/Kettenrad, sowie geradlinige Verbindung oben).<\/li>\n\n\n\n<li>Rest der Kettenl\u00e4nge entf\u00e4llt auf Katenoide.<\/li>\n\n\n\n<li>m\u00f6gliche Vereinfachung der Katenoide durch Verzicht auf hyperbolische trigonometrische Funktionen und Ersatz durch Taylor-Reihe aureichender Genauigkeit<\/li>\n<\/ul>\n\n\n\n<p>Resourcen, unsortiert:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/de.wikibooks.org\/wiki\/Stereostatik:_Seile_und_Ketten\">https:\/\/de.wikibooks.org\/wiki\/Stereostatik:_Seile_und_Ketten<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/download.uni-mainz.de\/mathematik\/Algebraische%20Geometrie\/Lehre\/Sem-Ausgewaehlte-hoehere-Kurven-WS2016-17\/Hajiabadi%20Maikel_Die%20Kettenlinie_090217.pdf\">https:\/\/download.uni-mainz.de\/mathematik\/Algebraische%20Geometrie\/Lehre\/Sem-Ausgewaehlte-hoehere-Kurven-WS2016-17\/Hajiabadi%20Maikel_Die%20Kettenlinie_090217.pdf<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.frassek.org\/2d-mathe\/kettenlinie\">https:\/\/www.frassek.org\/2d-mathe\/kettenlinie<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.mathe-gut-erklaert.de\/pdfs\/000_Kettenlinie.pdf\">https:\/\/www.mathe-gut-erklaert.de\/pdfs\/000_Kettenlinie.pdf<\/a><\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-801e8d41-7c05-4b79-8c90-0be9b82ead26\" href=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Kettenlinie.xlsx\">Kettenlinie<\/a><a href=\"https:\/\/vielzutun.ch\/wordpress\/wp-content\/uploads\/2025\/03\/Kettenlinie.xlsx\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-801e8d41-7c05-4b79-8c90-0be9b82ead26\">Herunterladen<\/a><\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>OK, inzwischen ist die bisherige Version meiner Rollenketten Animation ver\u00f6ffentlicht und ich hatte Zeit, mir die einmal aus der Distanz anzusehen. Es gibt ersichtliche M\u00e4ngel, W\u00fcnsche, die offen geblieben sind sowie Pl\u00e4ne, wie man das verbessern k\u00f6nnte. Darum soll es hier gehen. Zun\u00e4chst zu den M\u00e4ngeln. Dazu muss ich ein wenig ausholen und beschreiben, wie &hellip; <a href=\"https:\/\/vielzutun.ch\/wordpress\/?p=14567\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;Hinter den Kulissen der Rollenketten Animation&#8221; <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_stc_notifier_status":"sent","_stc_notifier_sent_time":"2025-03-24 14:25:26","_stc_notifier_request":false,"_stc_notifier_prevent":false,"_stc_subscriber_keywords":"","_stc_subscriber_search_areas":"","footnotes":""},"categories":[184,211],"tags":[150,326,63,327,324,323],"class_list":["post-14567","post","type-post","status-publish","format-standard","hentry","category-computergrafik","category-engineering","tag-animation","tag-katenoide","tag-kettenantrieb","tag-kettenlinie","tag-polygoneffekt","tag-rollenkette"],"_links":{"self":[{"href":"https:\/\/vielzutun.ch\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/14567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vielzutun.ch\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vielzutun.ch\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vielzutun.ch\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/vielzutun.ch\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=14567"}],"version-history":[{"count":88,"href":"https:\/\/vielzutun.ch\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/14567\/revisions"}],"predecessor-version":[{"id":14667,"href":"https:\/\/vielzutun.ch\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/14567\/revisions\/14667"}],"wp:attachment":[{"href":"https:\/\/vielzutun.ch\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vielzutun.ch\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vielzutun.ch\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}