Wie drehe ich einen Scheitelpunkt um einen bestimmten Punkt?


Roger Travis:

Stellen Sie sich vor, Sie haben zwei Punkte im 2D-Raum und müssen einen dieser Punkte um X Grad drehen, wobei der andere Punkt als Mittelpunkt fungiert.

float distX = Math.abs( centerX -point2X );
float distY = Math.abs( centerY -point2Y );

float dist = FloatMath.sqrt( distX*distX + distY*distY );

Bisher habe ich nur den Abstand zwischen den beiden Punkten gefunden ... irgendwelche Ideen, wohin ich davon gehen soll?

Geben Sie hier die Bildbeschreibung ein

Ted Hopp:

Der einfachste Ansatz besteht darin, drei Transformationen zu erstellen:

  1. Eine Übersetzung, die Punkt 1 zum Ursprung bringt
  2. Drehung um den Ursprung um den gewünschten Winkel
  3. Eine Übersetzung, die Punkt 1 an seine ursprüngliche Position zurückbringt

Wenn Sie dies alles herausarbeiten, erhalten Sie die folgende Transformation (wobei xder gewünschte Drehwinkel im Bogenmaß ist):

newX = centerX + (point2x-centerX)*Math.cos(x) - (point2y-centerY)*Math.sin(x);

newY = centerY + (point2x-centerX)*Math.sin(x) + (point2y-centerY)*Math.cos(x);

Beachten Sie, dass dies die Annahme macht, dass der Winkel xfür die Drehung im Uhrzeigersinn negativ ist (die sogenannte Standard- oder Rechtsausrichtung für das Koordinatensystem). Wenn dies nicht der Fall ist, müssen Sie das Vorzeichen für die betreffenden Bedingungen umkehren sin(x).

Verwandte Artikel


Wie drehe ich einen Punkt um eine beliebige Achse?

vMysterion Ich möchte einen Punkt in OpenGL um eine beliebige Achse drehen. Ich möchte das nutzen, um eine Kugel zu drehen. Das habe ich bisher bekommen: float degreeBetweenTwoVec(glm::vec3 &a, glm::vec3 b) { float prod = b.x * a.x + b.y * a.y + b.z * a.z;

Wie drehe ich eine Bilderbox um einen Punkt?

Dario Mazhara Gelöst Ich versuche einen Planeten zu simulieren, der einen Stern dreht. Mir ist derzeit die Syntax zum Verschieben der Bildbox bekannt (ich habe diese in einem Timer, damit sie wiederholt wird). private void rotate_timer(object sender, EventArgs

Wie drehe ich einen Tensor in Keras um?

Dauerwelle. Questiin Zum Beispiel: Ich habe einen Tensor mit Form (5,10)und möchte einen Tensor mit Form zurück, (5,10)aber das erste Element sollte jetzt das letzte Element sein. so [1,2,3,4,5]wird [5,4,3,2,1]und [[1,2,3,4,5],[2,3,4,5,6]]wird [[2,3,4,5,6],[1,

Wie drehe ich einen Vektor?

joppiesaus Wenn ich es habe [1, 0]und es drehe 90 degrees = 1/2PI radians, sollte ich es bekommen [0, -1]. Wie erreiche ich das? Ich habe mir diese Seite angesehen und Folgendes implementiert: var rotateVector = function(vec, ang) { // not right! retur

Wie drehe ich einen SKShapeNode um seine eigene Achse?

Eric Ich möchte einen SKShapeNode um seine Achse drehen ( eine Aufgabe, von der ich angenommen habe, dass sie in einem Framework wie SpriteKit einfach zu erledigen ist ). Die Form dreht sich, aber um eine Achse, die außerhalb des Bildschirms zu sein scheint ..

Wie drehe ich den Boxschatten um einen Text?

Vladimir Markiev Ich studiere HTML / CSS und habe ein sehr interessantes Beispiel für rotierende Box-Schatten gefunden. Ich dachte, ich würde versuchen, es zu benutzen, aber ich kann meinen Kopf nicht dazu bringen, die Schatten um meinen Text zu drehen. Das Be