Leggere in inglese

Condividi tramite


Traduzione

Alcune applicazioni traducono (o spostano) oggetti disegnati nell'area client. chiamando la funzione SetWorldTransform per impostare lo spazio globale appropriato sulla trasformazione dello spazio a pagina. La funzione SetWorldTransform riceve un puntatore a una struttura XFORM contenente i valori appropriati. I membri eDx eDy di XFORM specificano rispettivamente i componenti di traduzione orizzontale e verticale.

Quando si verifica la traduzione , ogni punto in un oggetto viene spostato verticalmente, orizzontalmente o entrambi, in base a una quantità specificata. La figura seguente mostra un rettangolo di 20 unità che è stato tradotto a destra da 10 unità quando è stato copiato dallo spazio delle coordinate mondiali allo spazio delle coordinate della pagina.

figura che mostra un rettangolo in una posizione nello spazio del mondo e in una posizione diversa nello spazio della pagina

Nella figura precedente, la coordinata x di ogni punto del rettangolo è maggiore di 10 unità rispetto alla coordinata x originale.

La traduzione orizzontale può essere rappresentata dall'algoritmo seguente.

x' = x + Dx 

Dove x' è la nuova coordinata x, x è la coordinata x originale e Dx è la distanza orizzontale spostata.

La traduzione verticale può essere rappresentata dall'algoritmo seguente.

y' = y + Dy 

Dove y' è la nuova coordinata y, y è la coordinata y originale e Dy è la distanza verticale spostata.

Le trasformazioni di traduzione orizzontale e verticale possono essere combinate in una singola operazione usando una matrice da 3 a 3.

                      |1   0   0| 
|x' y' 1| = |x y 1| * |0   1   0| 
                      |Dx  Dy  1| 

(Le regole della moltiplicazione matrice stato che il numero di righe in una matrice deve essere uguale al numero di colonne nell'altro. Numero intero 1 nella matrice |x y 1| è un segnaposto aggiunto per soddisfare questo requisito.

La matrice 3 by-3 che ha prodotto la trasformazione di traduzione illustrata contiene i valori seguenti.

|1  0  0| 
|0  1  0| 
|10 0  1|