xyz una traslacion transformacion rotacion robotica multiplicacion matriz matrices inversa ejes matrix 2d homogenous-transformation

matrix - una - multiplicacion de matrices



¿Por qué las transformaciones 2D necesitan matrices 3x3? (2)

Quiero hacer algunos dibujos en 2D y, por lo tanto, quiero implementar algunas transformaciones matriciales. Con mi experiencia en matemáticas ligeras, estoy tratando de entender cómo hacerlo en C # (cualquier otro lenguaje oop lo haría obviamente).

Todo lo que leo es explicar que necesitamos trabajar con matrices 3x3 para poder hacer frente a las traducciones. Porque no puedes hacer la traducción con multiplicaciones. Pero esto es con las multiplicaciones de las matrices que creamos nuestras transformaciones. Entonces trabajamos con algo como:

{ x1, x2, tx } { y1, y2, ty } { 0, 0, 1 }

Entiendo la media de la tercera columna, pero ¿por qué necesitamos la tercera fila? En una matriz de identidad, así como en una rotación, escala o rotación, la última fila es la misma. ¿Hay operaciones que no alcancé todavía que lo necesitarán? ¿Es porque algunos lenguajes (Java) funcionan mejor con matrices de "dimensiones cuadradas"? Si es así, puedo usar 3 columnas y 2 filas en C # (dado que los arreglos irregulares también funcionan o mejor).

Por ejemplo, para una rotación + traducción tengo una matriz como esta

{ cos(rot)*x1, (-sin(rot))*x2, tx } { sin(rot)*y1, cos(rot)*y2, ty } { 0, 0, 1 }

No hay necesidad de la última fila.


Esto es con las multiplicaciones de las matrices que creamos nuestras transformaciones.

Por eso queremos matrices cuadradas.

Supongamos que hicimos lo que usted propuso, y usamos matrices 2x3 para nuestras transformaciones.

Entonces una rotación sería

( x1, x2, 0 ) ( y1, y2, 0 )

y una traduccion seria

( 1, 0, tx ) ( 0, 1, ty )

y podríamos realizar rotaciones o traducciones multiplicando nuestra matriz por un vector de columna que representa el punto:

( x ) M ( y ) ( 0 )

para obtener respuestas correctas.

Sin embargo , ¿cómo haríamos para componer transformaciones? De hecho, para su ejemplo de "para una rotación + traducción tengo una matriz como esta", ¿cómo llegó a esa matriz? Claro, en este caso, simplemente puede escribirlo, pero en general? Bueno, ya sabes la respuesta:

Esto es con las multiplicaciones de las matrices que creamos nuestras transformaciones.

Por lo tanto, debe ser posible multiplicar dos matrices de transformación para dar otra matriz de transformación . Y las reglas de la multiplicación de matrices muestran que esto:

( . . . ) ( . . . ) ( . . . ) ( . . . ) = ???

No es una multiplicación matricial válida. Necesitamos matrices que puedan multiplicarse para que nuestras transformaciones sean compuestas. Así que tenemos esa fila extra.

Ahora, la forma en que lo he expresado aquí es, de hecho, completamente atrasada de la presentación matemática estándar, en la que las transformaciones familiares de rotación y traslación son solo casos especiales de la potencia total de las transformaciones de coordenadas homogéneas en el plano proyectivo, pero creo que servirá para mostrarle por qué necesitamos esa fila adicional: para hacer la matriz cuadrada, y así poder multiplicarla con matrices similares.


La respuesta es coordenadas homogéneas. Para combinar la rotación y la traducción en una operación, se necesita una dimensión adicional de la que requiere el modelo. Para cosas planas esto es 3 componentes y para cosas espaciales esto es 4 componentes. Los operadores toman 3 componentes y devuelven 3 componentes que requieren matrices 3x3.