2010-04-23 13 views
9

¿Alguien puede recomendar algunos buenos puntos de partida para comprender las matrices de transformación para tontos como yo con pocas habilidades matemáticas?¿Alguien puede recomendar algunos tutoriales de Matriz de Transformación para principiantes?

Estoy dispuesto a aprender las matemáticas, y no soy un completo idiota (espero) pero los ejemplos que encuentro parecen requerir un gran salto de lo que sé, a lo que necesito saber.

+0

¿Con la perspectiva de la aplicación? ¿Estás construyendo alguna aplicación? – Guru

+0

Estoy tratando de familiarizarme con las transformaciones matrix3d ​​de CSS3 y webkits. http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariCSSRef/Articles/Functions.html – gargantuan

Respuesta

18

Escribí un programa web que se puede usar para jugar con las matrices de transformación. Permite tipos preestablecidos y personalizados.

screenshot of transformation matrix program

Play with it online o grab the source.

Debe ser fácil jugar con los números y ver al instante cómo afecta el dibujo de la casa. Mire el código disponible en línea para determinar qué está haciendo, y usted debería ser capaz de entender qué está pasando.

Si tiene problemas, tenga en cuenta que la matriz 3 × 3 simplemente se multiplica por cada vértice (X & Coordenada Y) en la forma de la casa. La multiplicación de matrices con el vértice (que ahora vamos a referir a ella como un vector) y una transformación de matriz parece tan ...

1 0 0 1 
0 1 0 * 2 
0 0 1 0 

de la izquierda es un (una matriz idempotente identity matrix que no afecta el vector) y un vector de 1, 2, 0 (suponga que se asigna a las posiciones X1 e Y2 en el gráfico del programa mencionado anteriormente e ignore el 0 final).

Matrix multiplication pueden ser visualizados como tal ...

a b c x a * x + b * y + c * z 
d e f + y = d * x + e * y + f * z 
g h i z g * x + h * y + i * z 

Así, en nuestro ejemplo, eso sería ...

1 0 0 1 1 * 1 + 0 * 2 + 0 * 0 
0 1 0 * 2 = 0 * 1 + 1 * 2 + 0 * 0 
0 0 1 0 0 * 1 + 0 * 2 + 1 * 0 

hacer eso matemáticas y obtenemos el vector final ..

1 
2 
0 

Como dijimos que nuestra matriz de identidad no debería modificar los valores, podemos ver más arriba que t es el caso, ya que el vector resultante coincide con el original.

Para explicarlo más, considere cuándo necesita traducir el vector. Digamos que queremos traducir la casa por 5 píxeles a lo largo del eje X. Queremos comenzar con la matriz de identidad, pero cambie el número superior derecho a 5 y haga la dimensión extra en el vector 1 (verá por qué brevemente).

1 0 5 1 1 * 1 + 0 * 2 + 5 * 1 
0 1 0 * 2 = 0 * 1 + 1 * 2 + 0 * 1 
0 0 1 1 0 * 1 + 0 * 2 + 1 * 1 

que hacemos los cálculos de nuevo ...

6 
2 
1 

Podemos ver que el primer número (X en nuestras coordenadas) se ha traducido a lo largo del eje X por 5. Pruébalo en el programa vinculado arriba.

La razón por la que hicimos el tercer valor 1 es así cuando se realizaron las operaciones matemáticas, se consideró la traducción. Si hubiera sido 0, se ignorará, ya que cualquier número multiplicado por 0 da como resultado 0.

Si aún tiene problemas, mire videos en línea (this one, por ejemplo) que pueden ayudar a explicarlo de una manera más visual.

Recuerde: prácticamente todo el mundo puede manejar un automóvil, y casi cualquiera puede aprenderlo, a pesar de cualquier conocimiento auto evaluado de las matemáticas. Solo mantenlo: la persistencia es la clave. Buena suerte.

+1

esto fue impresionante – Rasmus

+1

Esta respuesta se merece más votos teniendo en cuenta la cantidad de visitas que ha tenido esta pregunta. – gargantuan

6

Una transformación no es más que una matriz que multiplica un vector para producir el vector transformado, por lo que si no comprende la multiplicación y suma de la matriz no puede llegar muy lejos.

Comience con matricies y álgebra lineal. Hay muchos libros, pero ten en cuenta que, según lo que dije antes, no necesitas leer todo el libro. No necesitará valores propios o eliminación gaussiana o espacios vectoriales o cualquiera de las otras cosas que serán avanzadas y difíciles.

Solo necesita saber cómo ampliar lo que sabe acerca de multiplicar y agregar números a las matrículas.

Obtener las entradas en esa matriz de transformación es otra cosa. Necesitarás un buen libro sobre matemáticas y gráficos por computadora. No lo encontrará en un libro de texto de álgebra lineal.

8

Como duffymo ha señalado, Matrix Transformations no es más que (pre) multiplicar un vector (como un punto 3d) por una matriz. Sin embargo, eso es pura matemática y difícil de visualizar para algunas personas.

La mejor forma de comprender matrices de transformación (al menos para mí) es para obtener un código ejemplo, conseguir que se ejecuta y jugar con los números. Intenta ver si puedes colocar un objeto más lejos o girar 45 grados. Intente poner las transformaciones en orden diferente y vea cuáles son los resultados.

¿Funcionando? Bueno.

Una vez que tener una idea de ello, y si eres lo suficientemente valiente para hacer frente a las matemáticas, que podría tomar las siguientes medidas:

En primer lugar, entender cómo multiplicaciones de matrices trabajo. Algunos enlaces:

Una vez que se sienta cómodo con la multiplicación de una matriz a mano, obtendrá una idea de por qué las transformaciones se escriben de esa manera. A medida que los utilice, la comprensión de las matrices finalmente llegará a usted.

En segundo lugar, yo siempre recomiendo pasar una tarde tratando de poner en práctica su propia clase Matrix y definir algunas operaciones comunes como mul(Vector v), o incluso transpose()createTranslationMatrix(float x, float y, float z). Haga algunas pruebas y vea si los resultados son los mismos con lo que hizo a mano.

Si ha llegado tan lejos, intente implementar su propia Transformación de perspectiva. Es lo más sorprendente que nunca llegamos a apreciar. Una explicación útil aquí:

Usted será muy orgulloso de sí mismo una vez que haya logrado una de las más labourous, sin embargo, las tareas de implementación de un objeto de matriz subestimada. ¡Buena suerte!

Cuestiones relacionadas