3d-rotation um den Ursprung

Ich weiß es gibt viele Fragen über die 3d-Drehung, die bereits beantwortet wurden hier aber alle von Ihnen scheinen befassen sich mit Rotations-Matrizen und Quaternionen in OpenGL (und ich weiß nicht wirklich, wenn ich die gimbal-lock). Ich brauche, um die 3d-Koordinaten EX:(x,y,z) eines Punktes, werden müssen immer den gleichen Abstand, ich nenne es "d" für jetzt, die von der Herkunft. Die einzige information, die ich als Eingang ist der deltax und deltay der Maus über den Bildschirm. So weit hier ist, was ich versucht habe:

Erste:

thetaxz+=(omousex-mouseX)/( width ); 
thetaxy+=(omousey-mouseY)/( height);

(thetaxy ist der Winkel im Bogenmaß auf der x -, y-Achse und thetaxz auf der x -, z-Achse)
(Ich Grenze die beiden Winkel, so dass, wenn Sie weniger als oder gleich 0 ist Sie gleich 2*PI)

Zweite:

pointX=cos(thetaxz)*d;
pointY=sin(thetaxy)*d;

(pointX ist der Punkt die x-Koordinate und Spitze ist die y)

Dritte:

if(thetaxz)<PI){
 pointZ=sqrt(sq(d)-sq(eyeX/d)-sq(eyeY/d));
}else{
  pointZ=-sqrt(abs(sq(d)-sq(eyeX/d)-sq(eyeY/d)));
}

(sq() ist eine Funktion, die Quadrate und abs() ist eine absolute value-Funktion)
(pointZ sollte der Punkt z-Koordinate und es ist außer bei der Kreuzung zwischen der positiven z-Hemisphäre und negativen z-Hemisphäre. Wie es nähert sich dem Rand der Punkt wird weiter gedehnt, als die Distanz, die es angeblich immer auf der x-und y-und die scheinbar zufällig um 0.1-0.2 Bogenmaß von thetaxz die z-Koordinate wird NAN oder undefined)

Ich habe darüber nachgedacht für eine Weile, und ehrlich ich bin Schwierigkeiten haben, sich zu verziehen, meinen Kopf um das Konzept der Quaternionen-und Rotations-Matrizen jedoch, wenn Sie mir zeigen, wie man mit Ihnen erzeugen die tatsächlichen Koordinaten ich wäre froh, zu lernen. Ich würde trotzdem lieber, wenn ich könnte einfach einige Trigonometrie in wenigen Achse. Vielen Dank im Voraus für jede Hilfe, und wenn Sie mehr Informationen benötigen, bitte einfach Fragen.

Hinweis/last-minute-Idee: ich denke, dass es möglicherweise etwas zu tun mit der z-position Auswirkungen auf die x-und y-Positionen zurück, aber ich bin mir nicht sicher.

EDIT: ich zeichnete ein Diagramm:
3d-rotation um den Ursprung

  • Ich bin mir nicht 100% das ist genau das, was Sie wollen, aber ich denke, vielleicht möchten Sie sich in gluUnProject, um die Umwandlung von 2D Koordinaten in 3D-lieben basiert auf einer Kamera-Matrizen. Tun Sie dies für einen Punkt auf der in der Nähe von & Kamera der Gegenseite Sie Ebenen, und verwenden Sie dann einige trig zu finden, den Punkt auf die resultierende Linie, die den gewünschten Abstand vom Ursprung. Beachten Sie, dass es 0, 1 oder 2 Lösungen für dieses problem, obwohl, je nach Linie
  • Können Sie das ursprüngliche problem ein wenig klarer, vielleicht mit einem Bild?
  • Hinzugefügt habe ich ein Bild verlinken, da ich nur 1 rep, weil ich bin neu auf dieser Seite.
Schreibe einen Kommentar