В этом коротком, но глубоком размышлении известный популяризатор науки и исследователь Лекс Фридман (Lex Fridman) делится восхищением перед удивительным примером программирования — кодом на языке C, который написан в форме пончика и генерирует вращающийся трёхмерный ASCII-тор. Автор разбирает математические основы этой визуализации, созданной разработчиком Энди Слоуном (Andy Sloan), и размышляет о важности ежедневного интеллектуального поиска за пределами своей основной профессии. Это видео открывает цикл мини-лекций, посвящённых вечной красоте науки, математики и программирования.
🍩 Поэзия кода: Трёхмерный тор из символов ASCII 0:00
Программирование часто воспринимается как сугубо утилитарный инструмент, однако истинное мастерство граничит с чистым искусством, где форма и содержание сливаются воедино. Лекс Фридман демонстрирует уникальный пример такого синтеза: исходный код на языке C, физически отформатированный в виде тора (пончика), который при компиляции и запуске создаёт на экране анимированное изображение вращающегося трёхмерного ASCII-пончика. Этот шедевр обфускации и математической элегантности был создан разработчиком Энди Слоуном.
Подобные артефакты цифровой культуры напоминают нам о временах ранней компьютерной графики и хакерской эстетики, когда ограничения вычислительной мощности компенсировались исключительной глубиной инженерной мысли. По мнению Лекса Фридмана, созерцание синтаксически подсвеченного кода, повторяющего форму создаваемого им объекта, вызывает особое эстетическое удовольствие, сравнимое с чтением классической поэзии или изучением изящных архитектурных чертежей прошлого. Это своеобразный мост между абстрактной логикой компилятора и осязаемой красотой геометрии.
📐 Пошаговый алгоритм: Математика за пределами плоского экрана 0:12
За внешней простотой вращающихся символов скрывается строгий математический аппарат классической трёхмерной графики, развёрнутый в текстовом терминале. Для глубокого понимания механики процесса Лекс Фридман рекомендует обратиться к оригинальному блогу Энди Слоуна, где подробно описаны формулы, стоящие за «летающим и вращающимся тором». Всю процедуру создания трёхмерного объекта можно разделить на несколько последовательных шагов, каждый из которых опирается на фундаментальные принципы аналитической геометрии:
- Создание окружности: На первом этапе в двумерном пространстве задаются координаты базовой окружности.
- Формирование тора: Полученная окружность вращается вокруг оси Y в трёхмерном пространстве, образуя классическую фигуру тора.
- Вращение в пространстве: С помощью матриц поворота (rotation matrices) вычисляется динамическое смещение координат, заставляющее пончик непрерывно вращаться вокруг осей X и Z.
- Проекция на плоскость: Трёхмерные координаты виртуального тора проецируются на двумерный (2D) экран пользователя.
- Расчёт освещения: Для придания объекту объёма выбирается воображаемый источник света, после чего вычисляется вектор нормали к поверхности тора в каждой точке.
Особое изящество алгоритма заключается в том, как именно реализуется полутоновая графика в мире ASCII. Поскольку в распоряжении программиста есть только текстовые символы, разные уровни яркости (люминофорного свечения или освещённости) сопоставляются с различными символами. Символы с разной плотностью заполнения пикселями (например, точки, двоеточия, знаки доллара или решётки) создают иллюзию глубины, теней и бликов на вращающемся теле тора.
💻 Модификация, компиляция и управление параметрами 0:51
Чтобы детально изучить работу программы, Лекс Фридман использует деобфусцированную версию исходного кода. В оригинале код Энди Слоуна представляет собой плотный массив символов в форме пончика, читать который человеку практически невозможно. Фридман возвращает коду читаемую структуру, чтобы добавить в него функцию приостановки потока на несколько микросекунд (microsecond sleep function). Это необходимо для контроля скорости анимации, чтобы современные сверхбыстрые процессоры не превращали плавное вращение в хаотичное мерцание.
После компиляции и запуска модифицированного кода на языке C в терминале разворачивается плавная и завораживающая симуляция. Программа обладает удивительной гибкостью, позволяя разработчику управлять целым рядом параметров трёхмерной сцены:
- Поле зрения (Field of View / FOV): Изменение угла обзора виртуальной камеры, влияющее на перспективные искажения объекта.
- Дистанция до наблюдателя: Регулировка расстояния между виртуальным пончиком и глазами зрителя, что позволяет приближать или удалять объект в кадре.
Такой уровень контроля над графическим движком, написанным вручную в несколько строк кода без использования сторонних тяжеловесных библиотек, наглядно демонстрирует мощь и лаконичность языка C.
🧘♂️ Философия непрерывного поиска: Порядок за рамками профессии 1:18
Демонстрация ASCII-пончика служит для Лекса Фридмана лишь отправной точкой для более масштабного философского вывода о природе человеческого познания. Ведущий признаётся, что ежедневно посвящает не менее одного часа изучению тем, которые полностью лежат за пределами его основной профессиональной деятельности. Этот ритуал позволяет сохранять остроту ума и детское любопытство по отношению к устройству Вселенной.
По мнению Фридмана, в мире существует бесчисленное множество вещей, обладающих внутренней, чистой красотой, вне зависимости от того, являются они базовыми концептами или передовыми научными достижениями. Фридман формулирует своеобразный манифест междисциплинарного исследователя, заявляя о намерении регулярно выпускать небольшие видеоролики, подсвечивающие эстетическую сторону самых разных дисциплин:
- Машинное обучение и программирование.
- Математика и компьютерные науки.
- Психология и биология.
- Физика, история и классическая философия.
Этот подход перекликается с идеалами мыслителей эпохи Возрождения, которые не разделяли искусство и точные науки, видя в них лишь разные грани единого стремления человека к истине. Лекс Фридман выражает надежду, что подобные интеллектуальные экскурсы принесут радость его аудитории и вдохновят зрителей на собственные ежедневные открытия.