Drehen Sie einen Punkt auf einem Kreis mit bekanntem Radius und bekannter Position

Kreis haben A ( X A , j A ) des Radius R und ein Punkt auf dem Kreis B ( X B , j B ) , wie können wir den Punkt mit einem bekannten Winkel drehen a (Radiant oder Grad, es spielt keine Rolle) auf dem Kreis, so dass wir einen neuen Punkt auf dem Kreis erhalten C ( X C , j C ) , wie im Bild unten?

Wie berechnet man die C Koordinaten?

Hier ist der Rotationswinkel 90 . In diesem Beispiel X B = X A , j B = R , a = 90 . Aus dem Bild sehen wir das X C = R Und j C = j A .

Ich möchte jedoch eine allgemeine Lösung für alle A , B , R Und a .

Kennen Sie Rotationsmatrix? Herkunftswechsel?
@Shailesh Ich habe etwas auf Wikipedia gesehen, aber die Dinge nicht wirklich verstanden. Ich glaube, ich weiß, was die Ursprungsänderung bedeutet.
Jedenfalls hat Brent eine vollständige Antwort gegeben. Ich habe versucht, Sie dorthin zu führen.

Antworten (2)

Schauen wir uns ein einfacheres Problem an. Angenommen, Sie haben die in der folgenden Abbildung dargestellte Situation:

Geben Sie hier die Bildbeschreibung ein

Dann wird der Winkel angegeben a , die Koordinaten des Punktes C Sind:

C X = R cos a Und C j = R Sünde a

Wo R ist der Radius des Kreises.

Schauen wir uns nun ein etwas komplizierteres Problem an, das unten abgebildet ist:

Geben Sie hier die Bildbeschreibung ein

Dies ist der obigen Situation sehr ähnlich. In der Tat,

C X ' = R cos ( a + β ) Und C j ' = R Sünde ( a + β )

Unter Verwendung der trigonometrischen Beziehungen Sünde ( a + β ) = Sünde a cos β + Sünde β cos a Und cos ( a + β ) = cos a cos β Sünde a Sünde β , können wir das obige wie folgt schreiben:

C X ' = R cos a cos β R Sünde a Sünde β Und C j ' = R Sünde a cos β + R Sünde β cos a

Aber warten Sie ... Indem Sie die vorherige Situation betrachten und ersetzen C mit B ' Und a mit β , wir sehen das

B X ' = R cos β Und B j ' = R Sünde β

Deshalb können wir schreiben

C X ' = B X ' cos a B j ' Sünde a Und C j ' = B X ' Sünde a + B j ' cos a

Aber was Sie wollen, ist stattdessen Folgendes:

Geben Sie hier die Bildbeschreibung ein

Nun, wir können einfach alles starr um den Vektor verschieben Ö A so dass A ist jetzt der Ursprung des Koordinatensystems und wir erhalten die Situation gerade darüber. Dies läuft auf eine Subtraktion hinaus A von beiden B Und C zu bekommen B ' Und C ' in der oben, und wir finden

C X A X = ( B X A X ) cos a ( B j A j ) Sünde a
C j A j = ( B X A X ) Sünde a + ( B j A j ) cos a

Dann endlich,

C X = A X + ( B X A X ) cos a ( B j A j ) Sünde a
C j = A j + ( B X A X ) Sünde a + ( B j A j ) cos a

Das ist auch hilfreich, aber ich verstehe da den Radius nicht R verschwand in der endgültigen Lösung. Sollte es nicht auch dabei sein?
Es ist! Es ist in den Koordinaten von versteckt A Und B . Zum Beispiel, B X A X = R cos β .
Hübsch! Ich habe dich hochgestimmt!
Danke. Schade, dass ich für die Bilder zu lange gebraucht habe. Ich hatte gehofft, dass meine Antwort angenommen würde, aber Brent kam mir zuvor. Lol
Oh, eine letzte Sache: mein Blickwinkel a ist das negative von dir da ich die standorte habe B Und C in Bezug auf Ihr Bild ausgetauscht.
Akzeptierte Ihre Antwort, da sie detaillierter ist. Schade, dass SE nicht erlaubt, mehrere Antworten zu akzeptieren. :)
Wirklich schade. Danke!
Was bringt es, das Beispiel zu α und β zu verkomplizieren und dann Formeln zu erfinden, anstatt bereits funktionierende zu verwenden R ( C Ö S a ) , R ( S ich N β ) ?

Dies wird als affine Transformation bezeichnet. Grundsätzlich besteht die Idee darin, unseren Kreis vorübergehend so zu verschieben, dass er um den Ursprung zentriert ist, eine Rotationsmatrix auf den Punkt anzuwenden, wie es in der linearen Algebra getan wird, und ihn dann zurück zu verschieben. Verwenden Sie die Notation, die Sie in Ihrem Problem haben, sowie das Hinzufügen

M = ( cos ( a ) Sünde ( a ) Sünde ( a ) cos ( a ) )
Zur Darstellung der Drehung gegen den Uhrzeigersinn durch einen Winkel a (Wenn Sie es im Uhrzeigersinn haben möchten, wie es auf Ihrem Bild erscheint, tauschen Sie einfach die Sünde ( a ) mit dem Sünde ( a ) ), ist diese Transformation gegeben durch:
C = M ( B A ) + A
Wo A , B , C sind die Vektoren, die ihre jeweiligen Punkte darstellen.

wobei A, B, C die Vektoren sind, die ihre jeweiligen Punkte darstellen. -- wie baut man diese Vektoren? Auch, wie man multipliziert M ( B A ) ?
Auf deinem Bild hast du zum Beispiel A als Punkt ( X A , j A ) , also wäre es der Vektor ( X A j A ) . Multiplizieren M ( B A ) erfolgt mit Matrixmultiplikation: en.wikipedia.org/wiki/…
Ach, hört sich gut an! Eigentlich multipliziert es zwei Matrix. Vielen Dank!