Quiero hacer un dibujo en 2D y, por lo tanto, quiero implementar algunas transformaciones de matriz. Con mis conocimientos de matemáticas claras, intento comprender cómo hacerlo en C# (cualquier otro lenguaje de oops lo haría obviamente).¿Por qué las transformaciones 2D necesitan matrices 3x3?
Todo lo que leí es que debemos trabajar con matrices 3x3 para poder hacer frente a las traducciones. Porque no puedes hacer traducciones con multiplicaciones. Pero esto es con las multiplicaciones de las matrices que creamos nuestras transformaciones. Así que trabajamos con algo como:
{ x1, x2, tx }
{ y1, y2, ty }
{ 0, 0, 1 }
Entiendo el significado 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é pero que las 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# (ya que las matrices dentadas funcionan igual o mejor).
Por ejemplo, para una traducción de rotación + I tienen una matriz como ésta
{ cos(rot)*x1, (-sin(rot))*x2, tx }
{ sin(rot)*y1, cos(rot)*y2, ty }
{ 0, 0, 1 }
No hay necesidad de la última fila.
Comience su lectura en http://en.wikipedia.org/wiki/Translation_(geometry), luego siga uno de los enlaces a http://en.wikipedia.org/wiki/Homogeneous_coordinates –
@HighPerformanceMark Estoy aquí tratando de explicar qué punto de estos conceptos no entiendo. Sí, estos son los 2 primeros documentos con los que comencé a leer. –