Come posso proiettare un piano arbitrario identificato da 4 punti su un piano 2D?
-
26-09-2019 - |
Domanda
Il problema che stiamo cercando di risolvere il problema di individuare un punto in due diverse rappresentazioni di un aereo. Il primo aereo abbiamo è ruotato per creare prospettiva; la seconda è una vista 2d dello stesso piano. Abbiamo 4 punti su ciascuno dei progetti che sappiamo essere equivalenti. La domanda è se abbiamo un punto arbitrario nel piano 1, come si fa a trovare il punto corrispondente nel piano 2?
E 'meglio probabilmente per illustrare il caso d'uso al fine di meglio chiarire la questione. Abbiamo un'immagine illustrato a sinistra.
2D schema del layout di spazio
Così i dati di fatto che abbiamo sono i quadrati rossi di entrambe le immagini. Si noti che, se possibile, mi piacerebbe che fosse possibile che lo spazio 2D non è necessariamente un quadrato. Questi sono a nostra disposizione prima del tempo e conosciuto. Ho anche punti verdi disposti sul piano nella prima immagine. Mi piacerebbe essere in grado di fare una proiezione del punto nell'immagine 1 sullo spazio in immagine 2.
Si noti anche per l'immagine 1 non ho una finestra definita o posizione degli occhi. So solo che il quadrato rosso da un'immagine 1 è una trasformata dell'immagine rosso forma quadrata 2 e che l'immagine 2 è nello spazio 2D.
Soluzione
Questo è un caso particolare di trovare mappature tra i quadrilateri che conservano linee rette. Questi sono generalmente chiamati trasforma omografiche. Qui, uno dei quad è un quadrato, quindi questo è un caso speciale popolare. Si può google questi termini ( "quad a quad", ecc) per trovare spiegazioni e il codice, ma qui ci sono alcuni per voi.
una discussione di gioco forum
estrazione di un'immagine quadrilatero ad un rettangolo
ProjectiveMappings per ImageWarping da Paul Heckbert.
La matematica non è particolarmente piacevole, ma non è così difficile sia. È inoltre possibile trovare qualche codice da uno dei link sopra.