Suche nach 3D-Koordinaten von Punkt mit bekannten XYZ-Winkel, radius und Ursprung?
Ich gelesen habe, etwas über 300 Seiten auf dem internet, und ich habe nicht das Ergebnis bekommen, das ich wollte, oder es hat nicht funktioniert, so dass ich hoffe, dass die Leute mir helfen können aus über hier. Können Sie erklären, durch die Verwendung von pseudo-code und Mathematik. 🙂
So, wir haben den Punkt A (das ist der Ursprung). Punkt A hat einen radius, eine XYZ-position und XYZ-Drehung (ich weiß, es kann getan werden, mit 2 Winkeln, aber ich wirklich brauchen, es zu sein, mit 3 Winkeln).
Punkt B ist die position unbekannt ist.
Bewaffnet mit diesen Informationen, meine Frage ist: wie finde ich die position von Punkt B? (Alternativ, meine Frage könnte umformuliert werden als: "wie findet man einen 3D-Punkt auf einer Kugel?")
Ich es bereits getan habe, in 2D und da funktionierte es.
für 2D habe ich verwendet:
x=pointA.x+radius*cos(angle)
y=pointA.y+radius*sin(angle)
Ich nicht rein Matrizen aber will ich mit Cosinus und so. Mein Versuch (was nicht schlecht ist, ich habe wirklich keine Ahnung wie kombinieren XYZ-Rotation mit Cosinus) in pseudo-code:
newx=pointA.x+radius*cos(rotationY)*sin(rotationZ+toRadians(90))
newy=pointA.y+radius*cos(rotationZ-toRadians(90))*math.sin(rotationY)*math.cos(rotationX)
newz=pointA.z+radius*math.cos(rotationZ+toRadians(90))*sin(rotationX)
Ich würde schätzen es so sehr, wenn mir jemand helfen könnte. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angenommen, Sie haben einen Bereich zentriert am Ursprung mit radius bekannt, und die Azimut-und Elevationswinkel. Dann können Sie einfach finden kartesischen Koordinaten sphärisch zu Kartesisch-Konvertierung.
So nehmen Sie zuerst die relative B-Komponenten, mit dem radius und Ihre Winkel. Sie erhalten kartesischen Komponenten. Dann können Sie diese relativen Komponenten zu Einem kartesischen Komponenten, die RÜCKFÜHRUNG der absoluten B-Koordinaten. Nicht als der Rollwinkel, weil für einen Punkt ist es nutzlos.
x = cos(yaw) * cos(pitch)
y = sin(yaw) * cos(pitch)
z = sin(pitch)
Rolle nicht benötigt.
Dies ist nicht perfekt, ich glaube nicht, dass? Bogenmaß benötigt werden, und das könnte eine Fehlerquelle.
Ich glaube, Sie haben, um alle Quaternionen oder übernehmen Rollen, aber es kann ausreichend sein, für eine Zwischenlösung.
In einer aktuellen situation, die ich negiert cos pitch für x = cos(yaw) * -cos(pitch)
Danke für die Antworten. Ich weiß, dass es eine lange Zeit her, dass diese Frage beantwortet wurde, sondern wegen der Leute, die dies Lesen, möchte ich meine Umsetzung. Hier ist es also, in Lua; die PointOnSphere Funktion mit zwei input-Winkel (Azimut und Höhe sind die gleichen wie die rotation.x und der rotation.y) (in Grad):
Beachten Sie, dass diese Antwort ist relevant, wenn mithilfe eines Koordinatensystems, wobei die y-Achse nach oben zeigt.
Einen weiteren nützlichen link, ist dies eine, es ist die gleiche Frage mit ähnlichen Antworten: https://math.stackexchange.com/questions/264686/how-to-find-the-3d-coordinates-on-a-celestial-spheres-surface