Ho un problema di matematica 3D che non riesco a risolvere.Proiezione 3D (triangolo) inversa
Ho dati di 3 punti. Il dato è una (2D) coordinata su un piano, che galleggia da qualche parte nello spazio 3D. Conosco anche la coordinata (2D) della proiezione. Che risulta nella seguente matrice di dati:
[[[x1,y1], [px1,py1],
[[x2,y2], [px2,py2],
[[x3,y3], [px3,py3]]
Dove normale (x1 ecc) coordina rappresentano le coordinate nel piano e l'altro (px1 etc.) per le coordinate proiettate.
Quello che mi piacerebbe fare è proiettare un nuovo Coordinata 2D ([x4, y4]).
.
Quello che ho provato finora:
Naturalmente è necessario un occhio per la proiezione, in modo che ho impostato a [xe, ye, -1]. Il xe e voi siete conosciuti. (Si tratta di foto di riferimento, quindi ho appena posizionato l'occhio al centro della foto.)
Sotto l'occhio ho posizionato la superficie di proiezione (z = 0). Che dà le seguenti coordinate di proiezione:
[[[x1,y1], [px1,py1,0],
[[x2,y2], [px2,py2,0],
[[x3,y3], [px3,py3,0]]
non posso fare lo stesso per le coordinate sul piano, dal momento che non so nulla di quel piano.
Ho anche pensato che potevo fare una formula parametrizzata delle linee che correvano dall'occhio attraverso le coordinate di proiezione. Per linea1 che sarebbe:
line1x = xe+(px1-xe)*t1
line1y = ye+(py1-ye)*t1
line1z = -1+t1 // = -1+(0--1)*t1
Conosco anche la distanza tra i punti in 3D. È lo stesso del 2D. Ciò significa che la distanza tra point1 e point2 sarebbe sqrt ((x1-x2)^2 + (y1-y2)^2).
Conosco anche la distanza tra le linee (riga1 e linea2) in qualsiasi momento. Questo è sqrt ((line1x-line2x)^2 + (line1y-line2y)^2 + (line1z-line2z)^2).
Tuttavia, non so davvero come andare da qui ... O anche se questa è la strada giusta da percorrere.
.
Spero che tu capisca cosa voglio essere in grado di fare e che tu possa aiutarmi.
Grazie in anticipo!
Stai dicendo che ti sono dati tre punti (xn, yn) che vengono proiettati su un piano in punti (pxn, pyn) - e vuoi capire come mappare un nuovo punto (x4, y4) sul aereo? –
Sì, buongiorno, questo è quello che sto dicendo. Tuttavia, quando uso il termine "piano" nella mia domanda, intendo il piano su cui si trovano i punti (xn, yn) (che ritengo sia significativo quando cerco di mappare il quarto punto). Dispiace per la confusione. –
Hai tre punti su un piano (xn, yn) proiettati sul piano di proiezione (pxn, pyn). Questa è anche una proiezione centrale (prospettica), quindi tutti i punti sono proiettati attraverso i raggi da un singolo punto. Vuoi sapere come invertire la proiezione: cioè, se ti viene dato un punto proiettato (px4, py4) come ottenere (x4, y4)?Quello che non capisco è che i tuoi punti originali non hanno alcuna coordinata z di sorta. Perché sono solo x/y - conosci la coordinata z o queste coordinate x/y all'interno del sistema di coordinate del piano ...? –