Tengo un problema matemático en 3D que parece que no puedo resolver.Proyección 3D inversa (triángulo)
Tengo datos de 3 puntos. Los datos son una coordenada (2D) en un plano, flotando en algún lugar del espacio tridimensional. También sé la coordenada (2D) de la proyección. Que resulta en la siguiente matriz de datos:
[[[x1,y1], [px1,py1],
[[x2,y2], [px2,py2],
[[x3,y3], [px3,py3]]
Cuando la normal (x1 etc.) coordina reposar durante las coordenadas en el plano y el otro (PX1 etc.) para las coordenadas proyectadas.
Lo que me gustaría hacer es proyectar una nueva coordenada 2D ([x4, y4]).
.
Lo he intentado hasta ahora:
Por supuesto, tiene un ojo para la proyección, por lo que me puse a [xe, ye, -1]. El xe y ye son conocidos. (Es una referencia de fotos, así que simplemente coloqué el ojo en el centro de la fotografía.)
Debajo del ojo coloqué la superficie de proyección (z = 0). Eso le da a la siguiente proyección de coordenadas:
[[[x1,y1], [px1,py1,0],
[[x2,y2], [px2,py2,0],
[[x3,y3], [px3,py3,0]]
no puede hacer lo mismo para las coordenadas en el avión, ya que no sabía nada de ese plano.
También pensé que podría hacer una fórmula parametrizada de las líneas que se ejecutan desde el ojo a través de las coordenadas de proyección. Para line1 que sería:
line1x = xe+(px1-xe)*t1
line1y = ye+(py1-ye)*t1
line1z = -1+t1 // = -1+(0--1)*t1
También sé la distancia entre los puntos en 3D. Eso es lo mismo que en 2D. Eso significa que la distancia entre el punto1 y el punto2 sería sqrt ((x1-x2)^2 + (y1-y2)^2).
También sé la distancia entre las líneas (línea 1 y línea 2) en cualquier momento. Eso es sqrt ((line1x-line2x)^2 + (line1y-line2y)^2 + (line1z-line2z)^2).
Sin embargo, realmente no sé cómo ir desde aquí ... O incluso si esta es la ruta correcta para tomar.
.
Espero que entiendas lo que quiero poder hacer y que me puedes ayudar.
¡Gracias de antemano!
¿Estás diciendo que tienes tres puntos (xn, yn) que se proyectan en un plano en puntos (pxn, pyn) y quieres calcular cómo mapear un nuevo punto (x4, y4) en el ¿avión? –
Sí, goodgai, eso es lo que estoy diciendo. Sin embargo, cuando uso el término "plano" en mi pregunta, me refiero al plano en el que se encuentran los puntos (xn, yn) (que creo que es significativo cuando intento mapear el cuarto punto). Perdón por la confusion. –
Tiene tres puntos en un plano (xn, yn) que se proyectan en el plano de proyección (pxn, pyn). Esta es también una proyección central (perspectiva), por lo que todos los puntos se proyectan a través de rayos desde un solo punto. Desea saber cómo invertir la proyección: es decir, si le dan un punto proyectado (px4, py4) cómo obtener (x4, y4)?Lo que no entiendo es que tus puntos originales no tienen ninguna coordenada Z en absoluto. ¿Por qué son x/y solo? ¿Conocen la coordenada z o son estas coordenadas x/y dentro del propio sistema de coordenadas del avión ...? –