Hallo Zusammen,
für mein Projekt brauche ich soviel Informationen über Splines von Achterbahnen wie möglich. Ich habe schon viele Besipiele und Rechnungen gefunden, jedoch Sind diese Splines leider unbrauchbar (Bezier Spline = nicht gut; B-Spline= nicht gut; Catmull Rom = naja).
Welchen Spline könnte ich für mein Achterbahn Simulation benutzen.
Ich währe euch dankbar, wenn ich etwas brauchbares von euch bekomme, natürlich werde ich auch selbst weiter suchen
Wir benutzen kubische Splinefunktionen, das heißt, das ist die dritte Potenz, das hat einen ganz bestimmten Grund: Die erste Ableitung der Strecke nach der Zeit, ergibt die Geschwindigkeit. Die zweite Ableitung nach der Zeit, ergibt die Beschleunigung. Die dritte Ableitung nach der Zeit, … [das wäre drei, eh g³s nach gt³] ergibt die Änderung der Beschleunigung, das was man unter Ruck versteht. Das heißt wir sind bestrebt, dass die dritte Ableitung noch stetig ist. Wir arbeiten aber auch mit Exponentialsplinefunktionen, die gehen natürlich viel höher. Das ist dann Automatismus, da kann eine Potenz hoch 8, hoch 9 vorkommen.
Kubische Splines ergeben meiner Meinung auch am meisten Sinn, da die Splines selbst bei der kubischen Variante immer durch die markierten Punkte laufen, was bei B-Splines sogut wie garnicht der Fall ist. Jedoch sind die kubischen Splines für eine Achterbahnsimulation etwas unpraktisch, da der Spline den Weg quasi selbst bestimmt und nur durch Änderung der Position der Wegpunkte veränderbar ist, es sei denn man kann für jeden Punkt eine eigene Funktion aufstellen, was viel Arbeit erfordert und meiner Meinung nach nicht im Sinne deiner Achterbahnsimulation steht.
Von daher würde ich ganz klar den Bezier-Spline bevorzugen, das ist am sinnvollsten, da die Wegpunktposition nicht der einzig entscheidende Faktor für das Aussehen des Splines ist, man hat noch einen gewissen Spielraum und kann die Form über Handles ändern.
Übrigens: Bei NoLimits werden auch Bezier-Kurven verwendet
Ich habe schon viele Besipiele und Rechnungen gefunden, jedoch Sind diese Splines leider unbrauchbar (Bezier Spline = nicht gut; B-Spline= nicht gut; Catmull Rom = naja).
Das kann so überhaupt nicht stimmen.
Die Beziers bzw. Splines an sich sind werder schlecht noch gut, die Frage ist vielmehr, was man mit diesen anstellt. Entsprechend ausreichende Auflösung, bzw. Rechengenauigkeit voraussgesetzt, lassen sich mit ganz ordinären kubischen Beziers praktisch alle gängigen Formen in Micrometer-Genauigkeit abbilden. Andere achterbahnrelevanten Geometrien, wie z.B. Ellipsen, Zykloiden, und vor allem Klothoiden, könnte man zwar direkt implementieren, diese lassen sich aber nach erfolgter (interner) Berechnung ebenfalls sehr gut mit Beziers "nach"-modellieren.
Insebesonders kubische Beziers habe ein paar schöne Eigenschaften, welche das schnelle und effektive Rendern einer Bildschirmdartellung massiv erleichtern. Praktisch alle Algorithmen dazu kann man quasi "selbstoptimierend" auslegen, sodass der Aufwand für's Rendering immer dem minimal möglichen, sprich dem maximal nötigem entspricht. Das gilt ebenso für diverse interne Umwandlungen von anderen Geometrien nach kubischen Beziers. Was bitte, soll daran nicht gut sein?
Fazit: Man sollte besser niemals von den eigenen Kenntnissen (oder vom
Mangel derselbem) auf die Tauglichkeit eines Verfahrens schliessen.
Und warum findest du sie nicht gut, wenn man fragen darf?
Stephan hat oben wohl mehr als ausführlich erklärt, warum kubische Bezier-Splines sehr angebracht sind
Hallo Zusammen,
jetzt stehe ich, meiner meinung nach, vor einer schwierigen Aufgabe. Querneigung!
Ich habe im moment echt keine Ideen wie ich "banking" realisiere. Benutzt wird für die Versuche, Kubische B Spline.
Ich habe mir folgendes für die Querneigung gedacht.
Wenn wir jetzt 2 Punkte haben X, Y, Z, BANKING = (0,0,0,10) (1,1,0,45), müssen wir den diferenz von Punkt 1 zu 2 rechnen. Es währe dan 35.
Also müsen wir 35 grad banken... Da wir aber eine bestimmte teilungs wert haben (z.B. alle 2 meter) müssen wir das ja beachten, also müssen wir zuerst einmal rechnen, wie lang Punkt 1 zu Punkt 2 ist.
Dieses ergebniss teilen wir durch 2 (alle 2 meter wird ja die schiene geteilt)... z.B. währe Punkt 1 bis Punkt 2, 10 meter lang, teilen wir dies durch 2, ergibt 5. Also von Punkt 1 bis Punkt 2 gibt es 5 unterteilungen/schritte. Jetzt haben wir ja zwichen Punkt1 und Punkt2, 35° neigung. Da bedeutet, 5/35°=7. Das heißt für jede 2 meter müssten 7° dazu gebankt werden.
Problem ist, eine rechnung zu finden, was diese 7° grad, zum Blending Funktion hinzufügt. Hat jemand ideen?
Um zu zeigen was ich meine, habe ich hier was vorbereitet:
/var/www/onride/onride.de/includes/functions.php on line 635: in_array() expects parameter 2 to be array, null given /var/www/onride/onride.de/includes/functions.php on line 635: in_array() expects parameter 2 to be array, null given /var/www/onride/onride.de/includes/functions.php on line 635: in_array() expects parameter 2 to be array, null given /var/www/onride/onride.de/includes/functions.php on line 635: in_array() expects parameter 2 to be array, null given /var/www/onride/onride.de/includes/functions.php on line 635: in_array() expects parameter 2 to be array, null given /var/www/onride/onride.de/includes/functions.php on line 635: in_array() expects parameter 2 to be array, null given /var/www/onride/onride.de/includes/functions.php on line 635: in_array() expects parameter 2 to be array, null given /var/www/onride/onride.de/includes/functions.php on line 635: in_array() expects parameter 2 to be array, null given /var/www/onride/onride.de/includes/functions.php on line 635: in_array() expects parameter 2 to be array, null given