robot de la enciclopedia para niños

Proyección tridimensional para niños

Enciclopedia para niños

[[Archivo:Picture plane projection.png|thumb|300px|Proyección de un objeto tridimensional sobre un pnormalmente un planoctuales para mostrar datoi9797292y1gddbwouvicw1vc68e1gceq68g s8q6s8qdqicos, estos métodos se basan en Sistema planar (gráde w1dw179f2g681egc861ev8 de pbits) bidime01726ales. El uso y extendido, especiid92en gráficos poiería y dibujo técnico.

Proyección ortográfica

Archivo:Zweitafelproj-kreuzriss
Planta, alzado y perfil de un objeto tridimensional (proyecciones ortográficas según tres ejes ortogonales)

[[Archivo:Haus-karo-axonometrie.svg|thumb|Representación axonométrica (proyección cilíndrica) del objeto anterior]]

Cuando el ojo humano mira una escena, los objetos lejanos parecen más pequeños que los objetos cercanos. La proyección ortográfica ignora este efecto para permitir la creación de dibujos a escala para la construcción y la ingeniería.

Las proyecciones ortogonales son un pequeño conjunto de transformaciones que a menudo se utilizan para mostrar el perfil, el detalle o las medidas precisas de un objeto tridimensional. Los nombres comunes para las proyecciones ortográficas incluyen la planta, las secciones transversales, los planos a vista de pájaro y los distintos sistemas de elevación del volumen.

Si la línea normal al plano de visión (la dirección a la que se dirige la cámara) es paralela a uno de los ejes principales de coordenadas (el eje x, y o z), la transformación matemática toma formas particularmente sencillas. Por ejemplo, para proyectar el punto 3D a_x, a_y, a_z en el punto 2D b_x, b_y usando una proyección ortográfica paralela al eje y (donde la "y" positiva representa la dirección hacia adelante en el sentido de la vista del perfil), se pueden usar las siguientes ecuaciones:

b_x = s_x a_x + c_x
b_y = s_z a_z + c_z

donde el vector s es un factor de escala arbitrario, y c es un desplazamiento arbitrario. Estas constantes son opcionales y se pueden usar para alinear correctamente la ventana gráfica. Usando multiplicación de matrices, las ecuaciones se convierten en:


 \begin{bmatrix}
   {b_x }  \\
   {b_y }  \\
\end{bmatrix} = \begin{bmatrix}
   {s_x } & 0 & 0 \\
   0 & 0 & {s_z }  \\
\end{bmatrix}\begin{bmatrix}
   {a_x }  \\
   {a_y }  \\
   {a_z }  \\
\end{bmatrix} + \begin{bmatrix}
   {c_x }  \\
   {c_z }  \\
\end{bmatrix}
.

Mientras que las imágenes proyectadas ortográficamente representan la naturaleza tridimensional del objeto proyectado, no representan el objeto tal como sería grabado fotográficamente o percibido por un espectador que lo observa directamente. En particular, las longitudes paralelas en todos los puntos de una imagen proyectada ortográficamente son de la misma escala, independientemente de si están muy lejos o cerca del espectador. Como resultado, las longitudes no se acortan como lo estarían en una proyección en perspectiva.

Proyección en perspectiva débil

Una proyección en perspectiva débil utiliza los mismos principios de una proyección ortográfica, pero requiere que se especifique el factor de escala, asegurando así que los objetos más cercanos parezcan más grandes en la proyección, y viceversa. Se puede ver como un híbrido entre una proyección ortográfica y una perspectiva, y se describe como una proyección en perspectiva con profundidades de puntos individuales Z_{i} reemplazada por una profundidad constante promedio Z_{med}, o simplemente como una proyección ortográfica más una escala.

Por lo tanto, el modelo de perspectiva débil aproxima la proyección de perspectiva al usar un modelo más simple, similar a la perspectiva ortográfica pura (sin escala).

Es una aproximación razonable cuando la profundidad del objeto en la línea de visión es pequeña en comparación con la distancia desde la cámara, y el campo de visión es pequeño. Con estas condiciones, se puede suponer que todos los puntos en un objeto 3D están a la misma distancia Z_{med} de la cámara sin errores significativos en la proyección (en comparación con el modelo de perspectiva completo).

Ecuación

\begin{array}{lcl}
P_x = \frac{X}{Z_{med}} \\
P_y = \frac{Y}{Z_{med}}
\end{array}

asumiendo longitud focal \mathit{f} = 1.

Proyección perspectiva

Cuando el ojo humano ve una escena, los objetos lejanos parecen más pequeños que los objetos cercanos. Esto se conoce como perspectiva. Si bien la proyección ortográfica ignora este efecto para permitir mediciones precisas, la proyección en perspectiva muestra los objetos distantes más pequeños para proporcionar realismo a las imágenes generadas.

La proyección en perspectiva requiere una definición más complicada en comparación con las proyecciones ortográficas. Una ayuda conceptual para entender la mecánica de esta proyección es imaginar la proyección en 2D como si los objeto se estuvieran viendo a través del visor de una cámara fotográfica. La posición, orientación y campo de visión de la cámara controlan el comportamiento de la transformación de proyección. Se definen las siguientes variables para describir esta transformación:

  • \mathbf{a}_{x,y,z}: la posición 3D de un punto A que debe proyectarse.
  • \mathbf{c}_{x,y,z}: la posición 3D de un punto C que representa la cámara.
  • \mathbf{\theta}_{x,y,z}: la orientación de la cámara (representada por los ángulos de Euler).
  • \mathbf{e}_{x,y,z}: la posición del plano de imagen respecto al diafragma de la cámara (situado como ha se ha dicho en C). La mayoría de los criterios de signos para las ecuaciones usan valores de z positivos (el plano está delante del diafragma), sin embargo, los valores de z negativos son físicamente más correctos, pero la imagen se invertirá tanto horizontal como verticalmente.

Esto se traduce en:

  • \mathbf{b}_{x,y}: la proyección 2D de \mathbf{a}.

Cuando \mathbf{c}_{x,y,z}=\langle 0,0,0\rangle, y \mathbf{\theta}_{x,y,z} = \langle 0,0,0\rangle, el vector 3D \langle 1,2,0 \rangle se proyecta en el vector 2D \langle 1,2 \rangle.

De otra manera, para calcular \mathbf{b}_{x,y} primero se define un vector \mathbf{d}_{x,y,z} como la posición del punto A con respecto a un sistema de coordenadas definido por la cámara, con origen en C y girado por \mathbf{\theta} con respecto al sistema de coordenadas inicial. Esto se logra con sustrayendo matricialmente el vector \mathbf{c} al vector \mathbf{a} y luego aplicando una rotación por -\mathbf{\theta} al resultado. Esta transformación a menudo se denomina transformación de cámara y se puede formular de la siguiente manera, expresando la rotación en términos de giros sobre los ejes x, y y z ( estos cálculos suponen que los ejes se ordenan como un sistema de ejes con giro a la izquierda):


\begin{bmatrix}
   \mathbf{d}_x \\
   \mathbf{d}_y \\
   \mathbf{d}_z \\
\end{bmatrix}=\begin{bmatrix}
   1 & 0 & 0  \\
   0 & {\cos ( \mathbf{ \theta}_x ) } & {  \sin ( \mathbf{ \theta}_x ) }  \\
   0 & {- \sin ( \mathbf{ \theta}_x ) } & { \cos ( \mathbf{ \theta}_x ) }  \\
\end{bmatrix}\begin{bmatrix}
   { \cos ( \mathbf{ \theta}_y ) } & 0 & {- \sin ( \mathbf{ \theta}_y ) }  \\
   0 & 1 & 0  \\
   { \sin ( \mathbf{ \theta}_y ) } & 0 & { \cos ( \mathbf{ \theta}_y ) }  \\
\end{bmatrix}\begin{bmatrix}
   { \cos ( \mathbf{ \theta}_z ) } & {  \sin ( \mathbf{ \theta}_z ) } & 0  \\
   { -\sin ( \mathbf{ \theta}_z ) } & { \cos ( \mathbf{ \theta}_z ) } & 0  \\
   0 & 0 & 1  \\
\end{bmatrix}\left( {\begin{bmatrix}
   \mathbf{a}_x  \\
   \mathbf{a}_y  \\
   \mathbf{a}_z  \\
\end{bmatrix} - \begin{bmatrix}
   \mathbf{c}_x  \\
   \mathbf{c}_y  \\
   \mathbf{c}_z  \\
\end{bmatrix}} \right)

Esta representación corresponde a girar según los tres ángulos de Euler, usando la convención xyz, que puede interpretarse como "girar sobre los ejes extrínsecos (ejes de la escena) en el orden z, y, x (lectura de derecha a izquierda), o rotar sobre los ejes intrínsecos (ejes de la cámara) en el orden x, y, z (lectura de izquierda a derecha). Téngase en cuenta que si la cámara no se gira (\mathbf{\theta}_{x,y,z} = \langle 0,0,0\rangle), entonces las matrices pasan a ser identidades, y esto se reduce a simplemente al cambio: \mathbf{d} = \mathbf{a} - \mathbf{c}.

Alternativamente, sin usar matrices (reemplazando (ax-cx) por x y análogamente las demás variables, y se abrevia cosθ a c y sinθ por s):


\begin{array}{lcl}
	\mathbf{d}_x = c_y (s_z \mathbf{y}+c_z \mathbf{x})-s_y \mathbf{z} \\
	\mathbf{d}_y = s_x (c_y \mathbf{z}+s_y (s_z \mathbf{y}+c_z \mathbf{x}))+c_x (c_z \mathbf{y}-s_z \mathbf{x}) \\
	\mathbf{d}_z = c_x (c_y \mathbf{z}+s_y (s_z \mathbf{y}+c_z \mathbf{x}))-s_x (c_z \mathbf{y}-s_z \mathbf{x}) \\
\end{array}

Este punto transformado puede luego proyectarse en el plano 2D usando la fórmula (aquí se usa como plano de proyección x/y, aunque algunos textos también pueden usar x/z):


\begin{array}{lcl}
 \mathbf{b}_x &= & \frac{\mathbf{e}_z}{\mathbf{d}_z} \mathbf{d}_x - \mathbf{e}_x \\
 \mathbf{b}_y &= & \frac{\mathbf{e}_z}{\mathbf{d}_z} \mathbf{d}_y - \mathbf{e}_y\\
\end{array}.

O, en forma de matriz, usando coordenadas homogéneas, el sistema


\begin{bmatrix}
   \mathbf{f}_x \\
   \mathbf{f}_y \\
   \mathbf{f}_z \\
   \mathbf{f}_w \\
\end{bmatrix}=\begin{bmatrix}
   1 & 0 & -\frac{\mathbf{e}_x}{\mathbf{e}_z} & 0 \\
   0 & 1 & -\frac{\mathbf{e}_y}{\mathbf{e}_z} & 0 \\
   0 & 0 & 1 & 0 \\
   0 & 0 & -\frac{1}{\mathbf{e}_z} & 1 \\
\end{bmatrix}\begin{bmatrix}
   \mathbf{d}_x  \\
   \mathbf{d}_y  \\
   \mathbf{d}_z  \\
   1 \\
\end{bmatrix}

junto con un argumento usando triángulos semejantes, lleva a la división por la coordenada homogénea, dando


\begin{array}{lcl}
 \mathbf{b}_x &= &\mathbf{f}_x / \mathbf{f}_w \\
 \mathbf{b}_y &= &\mathbf{f}_y / \mathbf{f}_w \\
\end{array}.

La distancia del visor desde la superficie de visualización, \mathbf{e}_z, se relaciona directamente con el campo de visión, donde \alpha=2 \cdot \arctan(1/\mathbf{e}_z) es el ángulo visto. (Nota: aquí se supone que se hacen corresponder los puntos (-1, -1) y (1,1) con las esquinas de su superficie de visión)

Las ecuaciones anteriores también pueden reescribirse como:


\begin{array}{lcl}
 \mathbf{b}_x= (\mathbf{d}_x \mathbf{s}_x ) / (\mathbf{d}_z \mathbf{r}_x) \mathbf{r}_z\\
 \mathbf{b}_y= (\mathbf{d}_y \mathbf{s}_y ) / (\mathbf{d}_z \mathbf{r}_y) \mathbf{r}_z\\
\end{array}.

en las que \mathbf{s}_{x,y} es el tamaño de visualización, \mathbf{r}_{x,y} es el tamaño de la superficie que toma la imagen (CCD o película), \mathbf{r}_z es la distancia desde la superficie de la película al diafragma (orificio del objetivo de la cámara) y \mathbf{d}_z es la distancia desde el punto 3D proyectado al citado diafragma.

Posteriores operaciones de recorte y escalado pueden ser necesarias para situar el plano 2D en cualquier medio de visualización determinado.

Diagrama

Archivo:Perspective transform diagram
Diagrama de una transformación perspectiva

Para determinar qué coordenada x corresponde en la pantalla a un punto A_x,A_z, se deben multiplicar las coordenadas del punto por:

B_x = A_x \frac{B_z}{A_z}

dónde

B_x es la coordenada x de la pantalla
A_x es la coordenada x del modelo
B_z es la distancia focal, la distancia axial entre centro de la cámara y el plano de imagen
A_z es la distancia (medida perpendicularmente al plano de imagen) entre el observador y el punto observado

Debido a que la cámara está en 3D, lo mismo funciona para la coordenada y de la pantalla, sustituyendo y por x en el diagrama y la ecuación de arriba.

Véase también

Kids robot.svg En inglés: 3D projection Facts for Kids

kids search engine
Proyección tridimensional para Niños. Enciclopedia Kiddle.