7 votos

Problema de deducir la matriz de proyección en perspectiva

Entiendo que la manera tradicional(es similar a la del triángulo y hacer valor de profundidad lineal) para deducir la perspectiva de la matriz de proyección. Pero quiero intentarlo de otra forma después de leer este texto: Fundamentos de la Asignación de Texturas y de Deformación de Imagen.

En la página 17, se dice que un quad puede ser asignado a un cuadrado con proyectiva de transformación, que puede ser expresada como un racional lineal de asignación:

$$\mathit{x} = \frac{\mathit{un}\mathit{u} + \mathit{b}\mathit{v} + \mathit{c}} {\mathit{g}\mathit{u} + \mathit{h}\mathit{v} + \mathit{i}}\\ \mathit{y} = \frac{\mathit{d}\mathit{u} + \mathit{e}\mathit{v} + \mathit{f}} {\mathit{g}\mathit{u} + \mathit{h}\mathit{v} + \mathit{i}}$$

Después de que me sustituir cuatro vértices de la quad y de la plaza, puedo obtener un sistema lineal. Al resolver el sistema lineal puedo obtener la matriz de transformación proyectiva.

Del mismo modo, considero que un 3D proyectiva, la asignación puede ser denominado como un racional lineal de asignación así. Y este racional lineal asignación puede asignar una truncado a un NDC cubo.(tenga en cuenta que debido al uso homogéneo de coordenadas, el último elemento de la matriz(derecha inferior) puede ajustarse a 1)

$$ \mathit{x} = \frac{\mathit{un}\mathit{u} + \mathit{b}\mathit{v} + \mathit{c}\mathit{w} + \mathit{d}} {\mathit{m}\mathit{u} + \mathit{n}\mathit{v} + \mathit{o}\mathit{w} + 1}\\ \mathit{y} = \frac{\mathit{e}\mathit{u} + \mathit{f}\mathit{v} + \mathit{g}\mathit{w} + \mathit{h}} {\mathit{m}\mathit{u} + \mathit{n}\mathit{v} + \mathit{o}\mathit{w} + 1}\\ \mathit{z} = \frac{\mathit{i}\mathit{u} + \mathit{j}\mathit{v} + \mathit{k}\mathit{w} + \mathit{l}} {\mathit{m}\mathit{u} + \mathit{n}\mathit{v} + \mathit{o}\mathit{w} + 1} $$

Pero cuando trato de resolver este sistema, la matriz resultado no es el mismo que el de la API 3D(como OpenGL) especificación.

Mi pregunta es: ¿hay algún extra propiedades de una proyección en perspectiva de la matriz que racional, lineal asignación no?

EDIT: he encontrado que en la versión 2D contamos con 8 incógnitas(3*3, y un elemento de la matriz se establece a 1 excluido), lo que equivale exactamente el número de ecuaciones del sistema lineal(4 vértices en un quad, y 2 corrdinate componentes en cada uno de ellos). Sin embargo, en la versión en 3D, el número de incógnitas y el número de ecuaciones no coincide. Sospecho que me malinterpretan la racional lineal de asignación, y la razón por la que se puede aplicar a una versión en 2D es sólo una coincidencia. Voy a hacer aprender más sobre este tema.

4voto

Anthony Shaw Puntos 858

En $2D$, una perspectiva mapa puede asignar cualquier $4$ sin puntos colineales a cualquier $4$ otros puntos. Por lo tanto, una perspectiva mapa $8$ ($4\times2$) elementos independientes ($3\times3-1$).

En $3D$, una perspectiva mapa puede asignar cualquier $5$ no coplanares puntos a cualquier $5$ otros puntos. Por lo tanto, una perspectiva mapa $15$ ($5\times3$) elementos independientes ($4\times4-1$).

En esta respuesta, y desarrollar la $2D$ matriz para asignar cualquier $4$ sin puntos colineales a cualquier $4$ otros puntos. Este método puede ser extendido a $3D$.


Un $3D$ punto puede ser incrustada en $4D$: $$ [x,y,z]\mapsto[x,y,z,1] $$ y un $4D$ punto puede ser proyectado a $3D$: $$ [x,y,z,r]\mapsto\left[\frac{x}{r},\frac{y}{r},\frac{z}{r}\right] $$ Una perspectiva de asignación de imbeds un $3D$ punto en $4D$, realiza una $4\times4$ la multiplicación de la matriz, a continuación, los proyectos de la $4D$ resultado $3D$: $$ M:\left[\begin{array}{cc}x&y&z\end{array}\right]\mapsto\left[\begin{array}{ccc}x&y&z&1\end{array}\right]M=\left[\begin{array}{ccc}u&v&w&s\end{array}\right]\mapsto\left[\begin{array}{cc}\frac{u}{s}&\frac{v}{s}&\frac{w}{s}\end{array}\right] $$ Dado cualquier $5$ puntos en $\mathbb{R}^3$, $[x_n,y_n,z_n]_{n=1}^5$, no $4$ de los cuales son coplanares, calcular $$ \left[\begin{array}{ccc}d_1&d_2&d_3&d_4\end{array}\right]=\left[\begin{array}{ccc}x_5&y_5&z_5&1\end{array}\right]\left[\begin{array}{ccc}x_1&y_1&z_1&1\\x_2&y_2&z_2&1\\x_3&y_3&z_3&1\\x_4&y_4&z_4&1\end{array}\right)^{-1} $$ y definir $$ M_{[x\;y\;z]}=\left[\begin{array}{ccc}d_1x_1&d_1y_1&d_1z_1&d_1\\d_2x_2&d_2y_2&d_2z_2&d_2\\d_3x_3&d_3y_3&d_3z_3&d_3\\d_4x_4&d_4y_4&d_4z_4&d_4\end{array}\right] $$ A continuación, para $5$ otros puntos $\mathbb{R}^3$, $[u_n,v_n,w_n]_{n=1}^5$, tenemos $$ M_{[x\;y\;z]}^{-1}M_{[u\;v\w]}:\left[\begin{array}{cc}x_n&y_n&z_n\end{array}\right]\mapsto\left[\begin{array}{cc}u_n&v_n&w_n\end{array}\right] $$

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