Wie bestimme ich die notwendige Drehung eines Objekts, damit ein anderes abhängiges Objekt dorthin verschoben wird, wo ich es brauche?

Ich habe zwei Vektoren, "V" und "W", die aneinander hängen. Wenn sich "V" dreht, wird "W" winkelförmig um "V" verschoben. "W" hat eine feste Drehung, die ich auf 45º eingestellt habe.

Ich habe dies in MS Paint grob dargestellt, wie Sie hier sehen können:Grobe Vektordarstellung

Nun, mein Endziel ist es, "W" auf einen bestimmten Punkt zielen zu lassen, der überall in einem 2D-Raum sein kann, aber nur durch Drehen von "V". Bitte beachten Sie, dass ich nur "V" drehen kann, "W" hat eine feste Drehung und die Größe des Vektors zwischen ihnen ist immer konstant.

Also, wenn ich möchte, dass "W" zum Beispiel auf "A" zeigt, welche Drehung sollte ich auf "V" anwenden und / oder welche Endposition möchte ich für "W", um dies zu erreichen?

Für den optionalen Kontext: „V“ und „W“ sind Spielobjekte in Unity. "W" ist ein Kind von "V" und hat eine feste relative Position dazu. Ich kann nur die Drehung von "V" manipulieren, wodurch sich "W" entsprechend verschiebt. „W“ sollte in der Lage sein, einen Raycast zu einem der Zielpunkte („A“, „B“, „C“ oder „D“) zu senden und effektiv einen Treffer zurückzugeben.

Ich habe nach ähnlichen Themen gesucht, aber sie scheinen dieses spezielle Problem nicht anzusprechen (wenn sie dies tun, entziehen sie sich meinem Verständnis).

Bitte klären Sie ein paar Dinge. Wollen Sie damit sagen, dass V und W am Heck angebracht sind? Wollen Sie damit sagen, dass W einen konstanten Winkel zu V hat? Interessieren Sie sich nur für die Richtung dieser Vektoren oder ist die Größe von Bedeutung? Sie sagen "die Größe des Vektors zwischen ihnen ist immer konstant", meinen Sie "Vektor" oder meinen Sie, der Winkel ist konstant? Dies ist keine reine Physikfrage, aber ich sehe, dass Sie nach der zugrunde liegenden Mathematik suchen, und wenn Sie klarstellen können, was Sie zu tun versuchen, helfe ich Ihnen gerne.
Übrigens, streich das mal, ich glaube ich verstehe dein Problem jetzt. Lassen Sie mich eine Antwort schreiben ...
Streich das nochmal. Sie sagten "W hat eine feste Rotation". Befestigt in Bezug auf was? in Bezug auf V? In Bezug auf die Achsen? Oder in Bezug auf den Vektor, der V und W verbindet? Das sind alles sehr unterschiedliche Fragen.
@JeneralJames, danke für deine Antworten. Vielleicht habe ich mich falsch ausgedrückt und dafür entschuldige ich mich. Um dieses Problem besser zu veranschaulichen, stellen Sie sich einen Turm vor, der rechts (und etwas weiter vorne) ein einzelnes Geschütz hat. Höhenunterschied ist nicht vorhanden, daher werden nur 2 Dimensionen berücksichtigt. Ich kann nur die Basis des Turms drehen, aber ich möchte, dass das Geschütz auf ein bestimmtes Ziel zielen kann, denn wenn der Turm auf das Ziel gerichtet ist, würde das Geschütz verfehlen. Das Geschütz ist am Turm befestigt und kann sich nicht selbst drehen (es zeigt immer in die gleiche relative Richtung vom Turm).
@EnzoFerber Ja, genau. Die "globale" Position der Waffe ändert sich, wenn sich der Turm dreht (ähnlich wie eine verkettete Kugel verschoben würde, wenn sich das Objekt, an das sie verkettet ist, dreht), aber das war's.

Antworten (1)

Diese Frage sollte besser in http://gamedev.stackexchange.com gepostet werden, da Sie anscheinend keine Frage zur Physik stellen, sondern eher, wie Sie etwas in einer Spiele-Engine erreichen können.

Angenommen, Sie kennen den Winkelversatz von W relativ zu V und haben eine Möglichkeit, den Versatz von V aus einem Strahl zu bestimmen, der zwischen seinem Ursprung und dem beabsichtigten Punkt geworfen wird. An diesem Punkt können Sie nun den Versatz von W relativ zum Strahl bestimmen, der vom Ursprung von V nach A geworfen wird, sodass Sie den Betrag finden können, um den Sie V drehen müssen, um W bei A zu zeigen.

  Ö w , A = Ö v , A ± Ö w , v
Wobei O den Winkel zwischen dem Vektor V und einem Vektor darstellt, der zwischen dem Punkt V und dem Zielpunkt geworfen wird.

Ethan, danke für diesen Vorschlag. Es stimmt zwar, dass ich dies in einer Spiel-Engine erreichen möchte, aber mir fehlt die zugrunde liegende Mathematik, die nichts mit einer Engine oder Codesprache zu tun hat. Ich habe versucht, abstrakte Konzepte zu verwenden, um dieses Problem darzustellen, aber den Kontext für alle Fälle hinzugefügt. Bearbeiten: Ich habe vergessen zu erwähnen, dass ich dieselbe Frage dort gemäß Ihrem Vorschlag posten werde.
In Ordnung, ich werde meine Antwort so bearbeiten, dass sie etwas enthält, obwohl das wahrscheinlich eher für math.stackexchange.com geeignet wäre, da Sie ein theoretisches Objekt manipulieren möchten, anstatt wissen zu wollen, wie die Physik des Systems funktioniert.
Danke für diese Antwort. Um festzustellen, ob ich das richtig verstanden habe, werde ich einige Zahlen als Beispiel verwenden. "V" ist bei (0,0) ohne Drehung (0º), während "W" bei (1,1) um 45º gedreht ist. Der Winkelversatz beträgt dann 45º, richtig? Nehmen wir nun an, ich möchte, dass "W" auf ein Ziel A bei (0,2) zielt. Ist der Versatz zwischen „V“ und „A“ gleich (0,2)? Und zwischen "W" und "A" von (-1, 1)? Wäre in Ihrer Gleichung O (v, a) 0 und O (w, v) 45, also sollte ich "W" um 45º drehen? Entschuldigung, wenn ich mich nicht richtig ausdrücke, und danke für Ihre Geduld.
Sie können den Offset direkt aus W berechnen, wenn Sie jedoch alle Operationen auf V ausführen möchten, die später Fehler verursachen könnten. Und ja, in diesem Fall beträgt der Versatz zwischen W und A 45 Grad gegen den Uhrzeigersinn, also würden Sie V um 45 Grad gegen den Uhrzeigersinn drehen wollen.
Ich denke, das könnte über das hinausgehen, was ich fassen kann. Ich habe versucht, das zu tun, was Sie vorgeschlagen haben (um 45 Grad gegen den Uhrzeigersinn drehen), bin aber zu etwas in der Art gekommen - ich denke, ich lasse das vorerst so. Sie haben mit einer genauen Gleichung geantwortet, also werde ich sie als Antwort markieren. Vielen Dank für Ihre Zeit und Geduld!
In diesem Fall liegt das Problem darin, woran Sie Vektor W angebunden haben, was definitiv eine Frage für Gamedev ist, und ich hoffe, jemand dort drüben kann Ihnen bei der Behebung dieses Problems helfen.