Аффинное преобразование - это преобразование вида x ⟼ Ax + b, где x и b - векторы, а A - квадратная матрица. Геометрически аффинные преобразования отображают параллелограммы в параллелограммы и сохраняют относительные расстояния вдоль линий.
Чтобы решить такую проблему, сначала отметим, что для начала координат мы имеем 0 ⟼ A0 + b = b. Поскольку задача говорит нам, что [0,0] ⟼ [0,1], мы знаем, что b = [0,1].
Далее мы напомним из линейной алгебры, что умножение матрицы на стандартные базисные векторы [0,1] и [1,0] просто извлекает первый и второй столбцы матрицы соответственно:
[a b] [1] = [a], [a b] [0] = [b].
[c d] [0] [c] [c d] [1] [d]
Нам даны, что [1,0] ⟼ [1,1] и [0,1] ⟼ [1,2]. Отсюда получаем
[1,1] = A[1,0] + b = [a,c] + [0,1] ⟹ [a,c] = [1,0],
[1,2] = A[0,1] + b = [b,d] + [0,1] ⟹ [b,d] = [1,1].
Это дает нам наше аффинное преобразование
Ax + b = [1 1] x + [0].
[0 1] [1]
Однородные координаты - это уловка, которая позволяет нам записывать аффинные преобразования в виде матриц, просто с одной дополнительной координатой, которая всегда установлена в 1. Матричная формула равна
[A b] [x] = [Ax+b].
[0 1] [1] [ 1]
Здесь A на самом деле матрица 2 × 2, тогда как b и x 2-вектора, а 0 в нижнем левом углу действительно [0 0]. Итак, в целом мы имеем дело с матрицей 3 × 3 и 3 векторами.
Итак, наше решение
[1 1 0]
[0 1 1],
[0 0 1]
и для хорошей проверки мы проверяем, что он работает правильно для конечной точки:
[1 1 0] [1] [2]
[0 1 1] [1] = [2].
[0 0 1] [1] [1]