Matrices can be your friends (2002)
Матрицы — это мощный инструмент, а не просто набор чисел. Первые девять элементов матрицы представляют поворот объекта. Например, первые три элемента первой колонки (m[0], m[1], m[2]) — это направление оси X после преобразования. Аналогично, следующие три (m[4], m[5], m[6]) — это новая ось Y, и так далее.
Вместо того чтобы выполнять множество отдельных операций (вращение, масштабирование, перемещение), можно просто применить одну матрицу, которая объединяет все эти преобразования. Это эффективно: один вызов к glMultMatrixf() заменяет множество вызовов других функций.
Например, чтобы повернуть объект на 45 градусов вокруг оси Z и переместить его на 10 единиц по X и Y, можно использовать матрицу, где первые три элемента первых двух столбцов — это косинусы и синусы угла, а последние элементы первого и второго столбца — это координаты перемещения. Это не только проще мысленно, но и эффективнее для процессора.
Таким образом, матрицы — это не просто математическая абстракция, а практический инструмент для эффективного и интуитивного управления преобразованиями в 3D-графике.
Комментарии (87)
- Обсуждение развернулось вокруг того, как именно представлять и обсуждать матрицы: какие обозначения и соглашения используются, как они влияют на понимание и как они связаны с тем, как мы привыкли думать о линейных преобразованиях.
- Участники обсуждали, что в разных областях (математика, компьютерная графика, машинное обучение) используются разные соглашения, что может вызывать путаницу.
- Обсуждались различия между подходами "row-major" и "column-major", а также то, как разные ПО и языки программирования (например, C vs. FORTRAN) влияют на то, как мы представляем и обсуждаем матрицы.
- Также обсудили, что важно различать матрицы как сетку чисел и как линейное преобразование, и как это влияет на то, как мы думаем о таких понятиях как повороты и масштабирование.
Markov chains are the original language models 🔥 Горячее 💬 Длинная дискуссия
Цепочки Маркова — это классические вероятностные модели, предшественники современных языковых ИИ. Они описывают последовательности событий, где каждое следующее состояние зависит только от текущего, без учёта всей истории. Например, перемещения Алисы между магазином и планетарием с заданными вероятностями перехода можно представить в виде матрицы и вектора состояния, а прогноз на несколько шагов вперёд вычисляется через умножение матриц.
В контексте генерации текста цепочки Маркова применяются для предсказания следующего слова на основе предыдущих. Автор, разочаровавшись в сложности и «магии» современных языковых моделей, обратился к этой прозрачной и фундаментальной технике, реализовав автодополнение на Rust и WebAssembly. Это подчёркивает ценность понимания базовых принципов вместо слепого использования сложных систем.
Комментарии (154)
- Обсуждаются ограничения и природа марковских цепей: их линейность, неспособность учитывать контекст за пределами текущего состояния и проблемы с обработкой двумерных данных.
- Упоминаются исторические и юмористические примеры использования марковских цепей для генерации текста: Mark V. Shaney, KingJamesProgramming, спам-сайты и чат-боты в IRC/Slack.
- Проводятся паралле