Я хочу сделать 2D-чертеж и, следовательно, хочу реализовать некоторые преобразования матриц. С моей световой базой математики я пытаюсь понять, как это сделать на С# (любой другой язык oop сделал бы это явно).
Все, что я прочитал, объясняет, что нам нужно работать с матрицами 3x3, чтобы иметь возможность справиться с переводами. Потому что вы не можете делать перевод с умножениями. Но это с умножением матриц, которые мы создаем нашими преобразованиями. Поэтому мы работаем с чем-то вроде:
{ x1, x2, tx }
{ y1, y2, ty }
{ 0, 0, 1 }
Я понимаю среднее значение третьего столбца, но зачем нам третья строка? В единичной матрице, а также при повороте, масштабировании или повороте последняя строка одинакова. Есть ли еще какие-то операции, которые мне еще не нужны? Это потому, что некоторые языки (Java) лучше работают с массивами "квадратов измерений"? Если это так, я могу использовать 3 столбца и 2 строки в С# (поскольку зубчатые массивы работают или лучше).
Например, для вращения + перевода у меня есть такая матрица
{ cos(rot)*x1, (-sin(rot))*x2, tx }
{ sin(rot)*y1, cos(rot)*y2, ty }
{ 0, 0, 1 }
Нет необходимости в последней строке.