Ich habe derzeit eine Bezier-Kurve, die durch Hinzufügen bestimmter Bezier-Kurven Grad 4 zusammen erzeugt wird. Ich benutze GL_LINES
. Ich muss an jedem der Bezier-Punkte eine Tangente, eine Normale und eine Binormale zeichnen.Zeichnen Tangenten und Normale zu jedem Punkt in Bezier-Kurve opengl
Soweit ich weiß, eine Tangente zu einem bestimmten Wert von t zu finden, ist die Gleichung
P'(t) = 4 * (1-t)^3 *(P1 - P0) + 12 *(1-t)^2*t*(P2-P1) + 12 * (1-t) * t^2 * (P3-P2) + 4 * t^3 * (P4-P3)
ich zur Zeit der obige Gleichung in der folgenden Art und Weise verwenden.
temp = 1-t;
tangentPoints[val].XYZW[j] = (4 * pow(temp, 3)*(V[k + 1].XYZW[j] - V[k].XYZW[j])) + (12 * pow(temp, 2)*t*(V[k + 2].XYZW[j] - V[k + 1].XYZW[j])) + (12 * (temp)*pow(t, 2)*(V[k + 3].XYZW[j] - V[k + 2].XYZW[j])) + (4 * pow(t, 3)*(V[k + 4].XYZW[j] - V[k + 3].XYZW[j]));
wobei j entspricht x, y, z-Werte und tangentPoints
ist eine Struktur, die von mir definiert für die Ecken. V ist eine Anordnung von Scheitelpunkten der Kontrollpunkte.
Ich zeichne einfach eine Linie zwischen dem Punkt auf der Bezier-Kurve (sagen x) für einen Wert t und den entsprechenden Tangens Wert (zB dx) Aber beim Zeichnen der Tangenten zwischen (x, dx), bekomme ich etwas so (Zeichnen einer Linie von (x, dx)).
Aber wenn ich Hinzufügen des Bezier Punkt zu jedem der entsprechenden Tangentenpunkte, ich bin das richtige Bild bekommen, das heißt, ich bin das richtige Ergebnis zu erzielen, indem eine Linie zwischen Zeichnung (x, x + dx)
Kann mir jemand sagen, warum das so ist und auch einen Einblick von bietet eine Tangente und normal zu einem gegebenen Bezier-Punkt zeichnen.
Also muss das auch zum Zeichnen normal gemacht werden dann richtig? Ich meine eine Linie zwischen P (t) und P (t) + normal (t) – sss999
@ sss999: Im Wesentlichen ja. Beachten Sie, dass Sie, anstatt den Tangens/normal/was auch immer proportional zu ihrer Geschwindigkeit/Krümmung/was auch immer zu machen, immer wählen können, sie von fester Größe zu zeichnen, indem Sie den Vektor normalisieren. Z.B. 'P (t) + P '(t)/| P' (t) |' für die Tangente. "normal" ist wahrscheinlich bereits normalisiert. – ybungalobill
Beachten Sie, dass für 3D die Dinge ein bisschen mehr Arbeit sind, weil Sie die Ebene der Reise für Punkte auf der Kurve zuerst finden müssen, aber es ist nicht * super * kompliziert und in http://stackoverflow.com/a/ abgedeckt 25458216/740553 –