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

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. Así que 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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta