Wenn ich ein QUAD an einer bestimmten Position habe, wie kann ich es so drehen, dass es normal auf einen bestimmten Punkt zeigt? Stellen Sie sich vor, die farbigen Blöcke sind nur rechteckige Quads, dann zeigt dieses Bild ein bisschen was ich meine. Die Quads sind alle so ausgerichtet, dass sie auf das Zentrum der Kugel zeigen.
alt text http://emrahgunduz.com/wp-content/uploads/2009 /01/material_id_gui-600x364.jpg
Vielleicht zeigt dieses zweite Bild ein bisschen mehr, was ich versuche zu tun: alt text http://img689.imageshack.us/img689/3130/screenshot20100708at555.png
Ich benutze openGL / C ++ (und die Eigen-lib). Und ich habe diesen Code, um ein einfaches Quad zu zeichnen:
%Vor%Update 17-07 Lieber Leser,
Nur ein bisschen weiter mit dem Drehen der Quads. Ich positioniere ein paar Quads nach dem Zufallsprinzip und dann rotiere ich sie zu einem look_at
vector3f mit diesem Code anhand der Beschreibungen aus den Antworten:
Das Ergebnis sieht folgendermaßen aus: alt text http://img688.imageshack.us/img688/711/3drotatedquads.png
Wie Sie sehen können, bin ich fast da, obwohl die Rotation der Quads noch ein bisschen "seltsam" ist. Ich sehe das Bild unten mit den farbigen Quads, Sie sehen deutlich den Unterschied in der Rotation. Wie kann ich das Quad so drehen, dass ich das gleiche Ergebnis wie die darunter liegende farbige Kugel bekomme?
Rotationsachse = normalisieren (Kreuzprodukt (aktuellNormal, gewünschtNormal))
Rotationswinkel = acos (dotproduct (normalize (currentNormal), normalize (sinedNormal)).
Sie können entweder Rotationsmatrix oder Quaternion aus Achse und Winkel erstellen. Exakte Formel kann in jeder Ressource über Quaternionen gefunden werden.
Möglicherweise müssen Sie den Winkel oder die Achse spiegeln, je nachdem, ob Sie sich normal um die Basis oder um die Spitze herum drehen.
Auch DIESE Ressource scheint im Allgemeinen genug Informationen über Quaternionen, Rotationen und 3D-Raum zu haben.
Sie haben das vielleicht bereits gefunden - Ссылка - aber ich fand es nützlich, als ich das letzte Mal nachgesehen habe dieses Thema.
Wenn "an einer bestimmten Position" bedeutet, dass Sie Ihre aktuelle Norm kennen, dann ist hier die Sache:
Tags und Links c++ opengl rotation quaternions quad