Freigeben über


Drehung

Viele CAD-Anwendungen bieten Features, mit denen im Clientbereich gezeichnete Objekte gedreht werden. Anwendungen, die Drehungsfunktionen enthalten, verwenden die SetWorldTransform-Funktion , um den entsprechenden Weltbereich auf seitenbereichstransformation festzulegen. Diese Funktion empfängt einen Zeiger auf eine XFORM-Struktur , die die entsprechenden Werte enthält. Die Elemente eM11, eM12, eM21 und eM22 von XFORM geben jeweils den Kosinus, den Sinus, den negativen Sinus und den Kosinus des Drehwinkels an.

Wenn eine Drehung auftritt, werden die Punkte, die ein Objekt bilden, in Bezug auf den Koordinatenraumursprung gedreht. Die folgende Abbildung zeigt ein Rechteck von 20 mal 20 Einheiten, das um 30 Grad gedreht wird, wenn es vom Weltkoordinatenraum in den Seitenkoordinatenbereich kopiert wird.

Abbildung mit zwei Koordinatenräumen; jedes hat ein Rechteck an einem anderen Ort und mit einer anderen Drehung.

In der obigen Abbildung wurde jeder Punkt im Rechteck im Hinblick auf den Koordinatenraumursprung um 30 Grad gedreht.

Der folgende Algorithmus berechnet die neue x-Koordinate (x ') für einen Punkt (x,y), der in Bezug auf den Koordinatenraumursprung um Winkel A gedreht wird.

x' = (x * cos A) - (y * sin A) 

Der folgende Algorithmus berechnet die y-Koordinate (y ') für einen Punkt (x,y), der vom Winkel A in Bezug auf den Ursprung gedreht wird.

y' = (x * sin A) + (y * cos A) 

Die beiden Drehungstransformationen können wie folgt in einer 2-mal-2-Matrix kombiniert werden.

|x' y'| == |x y| * | cos A   sin A| 
                   |-sin A   cos A| 

Die 2-mal-2-Matrix, die die Drehung erzeugt hat, enthält die folgenden Werte.

| .8660    .5000| 
|-.5000    .8660| 

Rotationsalgorithmusableitung

Rotationsalgorithmen basieren auf dem Additionssatz der Trigonometrie, der besagt, dass die trigonometrische Funktion einer Summe aus zwei Winkeln (A1 und A2 ) in Bezug auf die trigonometrischen Funktionen der beiden Winkel ausgedrückt werden kann.

sin(A1 + A2) = (sin A1 * cos A2) + (cos A1 * sin A2) 
cos(A1 + A2) = (cos A1 * cos A2) - (sin A1 * sin A2) 

Die folgende Abbildung zeigt einen Punkt p, der gegen den Uhrzeigersinn zu einer neuen Position p' gedreht wurde. Darüber hinaus werden zwei Dreiecke angezeigt, die von einer Linie gebildet werden, die vom Koordinatenraumursprung bis zu jedem Punkt gezeichnet wird, und eine Linie, die von jedem Punkt durch die x-Achse gezeichnet wird.

Diagramm mit dem Ursprung, p und p' und zwei Dreiecken

Mithilfe der Trigonometrie kann die x-Koordinate des Punkts p durch Multiplikation der Länge der Hypotenuse h mit dem Kosinus von A1 erreicht werden.

x = h * cos A1 

Die y-Koordinate von Punkt p kann durch Multiplikation der Länge der Hypotenuse h mit dem Sinus von A1 erreicht werden.

y = h * sin A1 

Ebenso kann die x-Koordinate des Punkts p' durch Multiplikation der Länge der Hypotenuse h mit dem Kosinus von (A1 +A2 ) erhalten werden.

x' = h * cos (A1 + A2) 

Schließlich kann die y-Koordinate des Punkts p' durch Multiplikation der Länge der Hypotenuse h mit dem Sinus von (A1 +A2 ) erreicht werden.

y' = h * sin (A1 + A2) 

Mithilfe des Additionssatzs werden die obigen Algorithmen wie folgt dargestellt:

x' = (h * cos A1 * cos A2) - (h * sin A1 * sin A2) 
y' = (h * cos A1 * sin A2) + (h * sin A1 * cos A2) 

Die Drehungsalgorithmen für einen bestimmten Punkt, der um Winkel A2 gedreht wird, können durch Ersetzen von x für jedes Vorkommen von (h * cos A1 ) und durch ersetzen y für jedes Vorkommen von (h * sin A1 ).

x' = (x * cos A2) - (y * sin A2) 
y' = (x * sin A2) + (y * cos A2)