Sistemi di coordinate (Direct3D 9)

In genere le applicazioni grafiche 3D usano due tipi di sistemi di coordinate cartesiani: sinistrorso e destrorso. In entrambi i sistemi di coordinate, l'asse x positivo punta a destra e l'asse y positivo punta verso l'alto. È possibile ricordare quale direzione punta l'asse z positivo puntando le dita della mano sinistra o destra nella direzione x positiva e curlingle nella direzione y positiva. La direzione in cui punta il pollice, verso o lontano da te, è la direzione in cui punta l'asse z positivo per il sistema di coordinate. La figura seguente mostra questi due sistemi di coordinate.

illustrazione dei sistemi di coordinate cartesiane sinistrorse e destrorse

Direct3D usa un sistema di coordinate sinistrorso. Se si esegue la conversione di un'applicazione basata su un sistema di coordinate destrorso, è necessario apportare due modifiche ai dati passati a Direct3D.

  • Capovolgere l'ordine dei vertici di triangolo in modo che il sistema li attraversa in senso orario dalla parte anteriore. In altre parole, se i vertici sono v0, v1, v2, passarli a Direct3D come v0, v2, v1.
  • Usare la matrice di visualizzazione per ridimensionare lo spazio globale di -1 nella direzione z. A tale scopo, capovolgere il segno del membro _31, _32, _33 e _34 della struttura D3DMATRIX usata per la matrice di visualizzazione.

Per ottenere gli importi di un mondo destrorso, usare le funzioni D3DXMatrixPerspectiveRH e D3DXMatrixOrthoRH per definire la trasformazione di proiezione. Tuttavia, prestare attenzione a usare la funzione D3DXMatrixLookAtRH corrispondente, invertire l'ordine backface-culling e disporre di conseguenza le mappe del cubo.

Anche se le coordinate sinistrorse e destrorse sono i sistemi più comuni, esiste una varietà di altri sistemi di coordinate usati nel software 3D. Ad esempio, non è insolito che le applicazioni di modellazione 3D usino un sistema di coordinate in cui l'asse y punta verso o lontano dal visualizzatore e l'asse z punta verso l'alto.

Formalmente, l'orientamento di un set di vettori di base (ad esempio, un sistema di coordinate) può essere trovato dal calcolo del determinante della matrice definita dal particolare set di vettori di base. Se il determinante è positivo, la base viene detta "positivamente" orientata (o destrorsa). Se il determinante è negativo, la base viene detta "negativamente" orientata (o sinistra). Per una spiegazione del determinante, vedere qualsiasi risorsa algebrica lineare.

In modo informale, è possibile utilizzare la "regola a destra/sinistra" per determinare se un determinato set di vettori di base formano un sistema di coordinate destro o sinistrorso.

Le operazioni essenziali eseguite su oggetti definiti in un sistema di coordinate 3D sono traslazione, rotazione e ridimensionamento. È possibile combinare queste trasformazioni di base per creare una matrice di trasformazione. Per informazioni dettagliate, vedere Trasformazioni (Direct3D 9).

Quando si combinano queste operazioni, i risultati non sono commutatori; l'ordine in cui si moltiplicano le matrici è importante.

Sistemi di coordinate e geometria