TwiddleLab / Математика / Векторы и матрицы
Проект: преобразователь пиксель-арта
Что ты узнаешь
- Каждое перемещение спрайта это матрица 2 на 2: читай её столбцы, чтобы её построить.
- Цепочка перемещений это одна матрица-произведение, и порядок важен.
- Определитель предупреждает, когда спрайт сплющится; обратная возвращает его домой.
Как идёт урок
Заставь спрайт крутиться, сплющиваться и отражаться, всего по четыре числа на перемещение.
Нажимай на каждую карточку перемещения, чтобы увидеть его.
Нарисуй свой спрайт.
Выбери цвета и закрась хотя бы шесть пикселей. Он будет главным героем во всех следующих шагах.
Построй поворот: четверть оборота влево.
Заполни матрицу так, чтобы спрайт попал в пунктирный контур.
Столбец 1 это то, куда идёт (1, 0), (0, 1). Столбец 2 это то, куда идёт (0, 1), (-1, 0).
Построй сплющивание: вдвое шире, вдвое ниже.
Тяни два конца стрелок, пока спрайт не заполнит пунктирный контур.
Растяжение по горизонтали удваивает i с крышкой; сплющивание по вертикали вдвое уменьшает j с крышкой.
Построй отражение: зеркало слева направо.
Отражение слева направо отправляет (1, 0) в (-1, 0) и сохраняет (0, 1).
Сцепи три перемещения в пунктирную позу.
Нажимай на перемещения, чтобы добавить их на шкалу времени, нажми «Пуск», потом «Проверить».
Произведение читается справа налево: сначала поворот, потом сплющивание, потом отражение. Поворот должен идти первым, потому что сплющивание, потом отражение это не то же самое, что отражение после поворота.
Чему равен определитель твоего сплющивания [[2, 0], [0, 0.5]]?
det = ad - bc = 2 × 0,5 - 0 = 1, значит, площадь сохраняется.
Насколько плоским может стать спрайт, прежде чем исчезнет?
Опускай k. Остановись на самом плоском спрайте, у которого det всё ещё не меньше 0,25.
det [[1, 1], [0, k]] = k, поэтому самое плоское допустимое k = 0,25.
Испытание: верни спрайт домой.
Поворот, отражение и перекос перемешали его. Заполни одну матрицу, которая отменит всю цепочку.
В коде картинка это список пикселей, и один цикл двигает их все.
Пройди цикл по шагам с матрицей поворота.
Какой спрайт даёт [[1, 0], [0, -1]]?
[[1, 0], [0, -1]] сохраняет (1, 0) и отправляет (0, 1) в (0, -1): отражение вверх ногами.
Твой преобразователь пиксель-арта.
Твой спрайт исполняет твои три перемещения по кругу.
Предыдущий урок: Отменяем матрицу · Часть курса: Векторы и матрицы
Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.