Rotazione

Molte applicazioni CAD offrono funzionalità che ruotano gli oggetti disegnati nell'area client. Le applicazioni che includono le funzionalità di rotazione usano la funzione SetWorldTransform per impostare lo spazio mondiale appropriato sulla trasformazione dello spazio a pagina. Questa funzione riceve un puntatore a una struttura XFORM contenente i valori appropriati. I membri eM11, eM12, eM21 eM22 di XFORM specificano rispettivamente il cosno, il sine negativo e la cosine dell'angolo di rotazione.

Quando si verifica la rotazione , i punti che costituiscono un oggetto vengono ruotati rispetto all'origine dello spazio di coordinate. La figura seguente mostra un rettangolo di 20 unità ruotato a 30 gradi quando viene copiato dallo spazio delle coordinate mondiali allo spazio delle coordinate della pagina.

illustrazione che mostra due spazi di coordinata; ogni ha una rectange in una posizione diversa e con una rotazione diversa

Nella figura precedente ogni punto del rettangolo è stato ruotato a 30 gradi rispetto all'origine dello spazio coordinata.

L'algoritmo seguente calcola la nuova coordinata x (x') per un punto (x,y ) ruotato per angolo A rispetto all'origine dello spazio delle coordinate.

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

L'algoritmo seguente calcola la coordinata y (y) per un punto (x,y ) ruotato dall'angolo A rispetto all'origine.

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

Le due trasformazioni di rotazione possono essere combinate in una matrice da 2 a 2, come indicato di seguito.

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

La matrice 2-by-2 che ha prodotto la rotazione contiene i valori seguenti.

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

Derivazione dell'algoritmo di rotazione

Gli algoritmi di rotazione si basano sull'aggiunta del teorema di trigonometria che indica che la funzione trigonometrica di una somma di due angoli (A1 e A2 ) può essere espressa in termini delle funzioni trigonometriche dei due angoli.

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

La figura seguente mostra un punto p ruotato in senso antiorario a una nuova posizione p'. Inoltre, mostra due triangoli formati da una linea disegnata dall'origine dello spazio delle coordinate a ogni punto e una linea disegnata da ogni punto attraverso l'asse x.

diagramma che mostra l'origine, p e p', e due triangoli

Usando trigonometria, la coordinata x del punto p può essere ottenuta moltiplicando la lunghezza dell'ipotenuse h dal cosno di A1.

x = h * cos A1 

La coordinata y del punto p può essere ottenuta moltiplicando la lunghezza dell'ipotenuse h dal sine di A1.

y = h * sin A1 

Analogamente, la coordinata x del punto p' può essere ottenuta moltiplicando la lunghezza dell'ipotenuse h dal cosno di (A1 +A2 ).

x' = h * cos (A1 + A2) 

Infine, la coordinata y del punto p' può essere ottenuta moltiplicando la lunghezza dell'ipotenuse h dal sine di (A1 +A2 ).

y' = h * sin (A1 + A2) 

Usando il teorema di aggiunta, gli algoritmi precedenti diventano i seguenti:

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

Gli algoritmi di rotazione per un determinato punto ruotato per angolo A2 possono essere ottenuti sostituendo x per ogni occorrenza di (h * cos A1 ) e sostituendo y per ogni occorrenza di (h * sin A1 ).

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