Zusammenfassung
Ich saß am Küchentisch und überlegte, wie ich eine Rutsche auf einem Spielplatz oder diese Wasserrutschen-Rohre modellieren könnte.
Dieses Ding fügt der OpenScad Surface Solids-Bibliothek Unterstützung für Hermite-Kurven/-Oberflächen hinzu.
Die grundlegende Hermite-Interpolationsberechnung lauerte eigentlich schon eine Weile, aber jetzt wird sie gut genutzt. Damit gibt es jetzt eine lerp (lineare Interpolation), berp (Bézier-Interpolation) und herp (Hermite-Interpolation) in der Bibliothek.
Eine Hermite-Kurve wird durch zwei Endpunkte und die Tangentenvektoren dieser Punkte definiert. Sie ist in gewisser Weise mit einer Bézier-Kurve verwandt. Tatsächlich verwende ich dieselben Bernstein-Basisfunktionen, um sie darzustellen. Manche Leute finden es vielleicht einfacher damit umzugehen, andere schwieriger, aber es ist einfach ein weiteres Werkzeug im Kasten, um Ihnen beim Erstellen von Oberflächen
In diesem speziellen Fall habe ich ein 'sweep_hermite()'-Modul zum Renderer hinzugefügt. Es ist wirklich einfach damit zu arbeiten. Du definierst eine Kurve als dein 'Profil', und du definierst eine andere Kurve als den Pfad, entlang dem du dieses Profil schwenken wirst. Das Modul wird sich um die Erstellung der entsprechenden Polyeder kümmern, um das Solid zu füllen. Du kannst eine Dicke angeben
Dies zeigt auch einen allgemeinen Mechanismus zum Durchführen von Sweeps mit Kurven. Um es vollständig zu verallgemeinern und die Menge an Code zu reduzieren, die zur Unterstützung verschiedener Kurven benötigt wird, werde ich die Matrixdarstellung von Kurven weiterentwickeln. Das wird im Wesentlichen dasselbe sein wie das Vorhandensein von Funktionszeigern für die Oberflächenerzeugung, falls du verstehst, was ich meine.
Ich habe einige visuelle Debugging-Unterstützung hinzugefügt. Wenn Sie sich entscheiden, den Steuerungsrahmen anzuzeigen, erhalten Sie eine schöne Darstellung der Profil- und Sweep-Kurven, komplett mit ihren Tangentenvektoren.
Die Verwendung von Tangentenvektoren ist interessant. Du musst beachten, dass ein Vektor eine Länge und Richtung hat. Die Länge beeinflusst die Zugkraft in einer bestimmten Richtung. Es ist am besten, wenn du sie als zentriert bei [0,0,0] betrachtest und sie in die Richtung zeigst, in die du sie gehen lassen willst. Du musst ein wenig herumspielen, um sie einzustellen, um den Sinn
Es fällt mir ein, dass dies ein gutes Werkzeug sein könnte, um etwas über verschiedene Arten von Kurven und Oberflächen zu lernen. Besonders mit dem visuellen Debugging und dem zusätzlichen Vorteil, dass man ein physisches Objekt ausdrucken kann, nachdem man all das harte Herumspielen getan hat.
Ich habe die Lizenz zur Public Domain gemacht, da dies ein weit verbreitetes Verfahren ist.
Sind Splines in Aussicht?
Jedenfalls...
Anweisungen
1) Laden Sie die .scad-Dateien herunter.
2) Spielen Sie mit test_hermite.scad herum, um hübsche Bilder zu machen.
3) Kompilieren und exportieren nach .stl
4) Freut euch!
In den meisten Fällen wird es eine solide Oberfläche erzeugen, die in eine .stl-Datei umgewandelt werden kann. Die wahrscheinlichste Verwendung hier ist die Erzeugung einzelner Teile, die mit anderen Teilen zusammengeklebt werden. Wie meine Wasserrutschenschächte.