7 votos

Tranforming 2D contorno en el plano 3D

Estoy escribiendo un programa en el que me gustaría permitir al usuario dibujar 4 líneas de conexión, tales como:

enter image description here

Y convertir de esta forma en un plano 3D. Es esto posible? Hay un algoritmo existente para hacerlo? Si no, cualquier idea de los pasos que debo tomar?

Cosas que podemos asumir: la cámara está en el punto 0,0,0, frente a [0,0,-1]. El avión que cree estará centrada en 0 en el eje Z.

Idealmente me gustaría que el resultado sea en la forma de un conjunto de rotar, escalar, traducir los vectores de un rectángulo centrado en [0,0,0] de tamaño [1,1].

Por favor, hágamelo saber si usted necesita más información. Realmente no sé por dónde empezar en esto...

(No estoy seguro de si esta pregunta sería más adecuado para stackoverflow o gamedev. Si es así, por favor siéntase libre de moverlo. Sin embargo, la pregunta es principalmente de matemáticas relacionados con el así que voy a tratar aquí en primer lugar.)

7voto

yoliho Puntos 340

Como Shiyu menciona en los comentarios, este es un bien estudiado equipo de problema de visión. Un término clave para la búsqueda es homografía. E. g., aquí está el artículo de la Wikipedia. Este tema está cubierto en la mayoría de los libros de texto de la visión por ordenador. Aquí hay uno: Geométricos de Cálculo para la Máquina de Visión por Kenichi Kanatani. Véase, en particular, p.59, donde se proporciona un algoritmo para la "cámara de registro" (otra de las claves término de búsqueda), cuyo primer paso es: "Tomar una imagen de un rectángulo colocado en la escena". Que es exactamente su situación.

5voto

Anthony Shaw Puntos 858

En QuickDraw GX, el sistema de gráficos se $2D$, sino que se utiliza $3\times3$ perspectiva de las matrices de transformaciones.

Un $2D$ punto está incrustada en la $3D$: $$ [x,y]\mapsto[x,y,1] $$ y un $3D$ punto se proyecta a $2D$: $$ [x,y,z]\mapsto\left[\frac{x}{z},\frac{y}{z}\right] $$ Una perspectiva de asignación de imbeds un $2D$ punto en $3D$, realiza una $3\times3$ la multiplicación de la matriz, a continuación, los proyectos de la $3D$ resultado $2D$: $$ M:\left[\begin{array}{cc}x&y\end{array}\right]\mapsto\left[\begin{array}{ccc}x&y&1\end{array}\right]M=\left[\begin{array}{ccc}u&v&w\end{array}\right]\mapsto\left[\begin{array}{cc}\frac{u}{w}&\frac{v}{w}\end{array}\right] $$ Dado que este es un mapeo de perspectiva, se puede asignar cualquier $4$ puntos (no $3$ de los cuales son colineales) a cualquier $4$ puntos. Dado $4$$[x_n,y_n]_{n=1}^4$, calcular $$ \left[\begin{array}{ccc}d_1&d_2&d_3\end{array}\right]=\left[\begin{array}{ccc}x_4&y_4&1\end{array}\right]\left[\begin{array}{ccc}x_1&y_1&1\\x_2&y_2&1\\x_3&y_3&1\end{array}\right)^{-1} $$ y definir $$ M_{[x\;y]}=\left[\begin{array}{ccc}d_1x_1&d_1y_1&d_1\\d_2x_2&d_2y_2&d_2\\d_3x_3&d_3y_3&d_3\end{array}\right] $$ Entonces, para $4$ otros puntos de $[u_n,v_n]_{n=1}^4$, tenemos $$ M_{[x\;y]}^{-1}M_{[u\;v]}:\left[\begin{array}{cc}x_n&y_n\end{array}\right]\mapsto\left[\begin{array}{cc}u_n&v_n\end{array}\right] $$ Ahora para aplicar esto a su problema. Utilizando el rectángulo y el cuadrilátero se mencionó anteriormente, generar la $3\times3$ perspectiva de la asignación de tomar el rectángulo al cuadrilátero y tomar el producto cruzado de las dos primeras filas. Que será la perpendicular al plano de la cuadrilátero. Sin embargo, sin obtener más información sobre el posicionamiento en $3D$, no creo que usted puede conseguir mucho más.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X