ich stehe vor einem kleinen Problem. Ich habe das schon mal im IRC angesprochen, aber die Lösung hat da nicht funktioniert, oder ich habe sie nicht verstanden.
Es geht um einen "Tunnelflug". Ich nmöchte durch einen Tunnel fliegen, der seine Richtung (samt Biegungen und so) entlang einer Spline ständig ändert.
Einen Tunnel generiere ich ja aus zB 2 Kreisen deren Vertices ich dann verbinde.
Wie ich vorgehen möchte:
Ich berechne die KreisVertices auf einer Ebene (zB eine Ebene die zwischen der Y- und X-Achse aufgespannt wird) und jage dann diese Vertices durch eine Matrix, die eine Translation und Rotation im 3D-Raum beschreibt
Es geht mir also vlt eher darum, wie ich eine Matrix generiere, die ich durch eine Fläche im Raum beschreibe.
Wie gesagt, ich möchte Punkte entlang einer Spline (3D) berechnen (wie das geht weiß ich).
Und an jedem dieser Punkte wird eine Fläche aufgespannt. Anhand dieser Fläche generiere ich eine Matrix (transformation + rotation).
Dann berechne ich Kreisvertices, die ich eben mit dieser Matrix multipliziere, damit die neuen Kreisvertices auf der Ebene landen.
Ich hoffe ich konnte mein Problem verständlich darlegen.
Wie würdet ihr dabei vorgehen?
Achso... ich benutze ja OpenSceneGraph. Dort kann ich Matrizen sehr leicht durch Rotation bzw Translation bzw Scalierung generieren.
bspw:
Code: Alles auswählen
osg::Matrix matrix = osg::Matrix::identity();
matrix = matrix * osg::Matrix::rotate(osg::Quat(osg::DegreesToRadians(90.0), osg::Vec3(0, 0, 1))) * osg::Matrix::translate(x,y,z);
Also den Rotationswinkel, die Achse um die rotiert werden soll, und den translationsVektor (wobei der ja eher einfach zu ermitteln ist).
Gruß