# Лекс Фридман объяснил математику создания 3D-пончика на языке C

Источник: https://www.youtube.com/watch?v=DEqXNfs_HhY
Канал: Lex Fridman
Опубликовано: 06.07.2020

---

В этом коротком, но глубоком размышлении известный популяризатор науки и исследователь Лекс Фридман (Lex Fridman) делится восхищением перед удивительным примером программирования — кодом на языке C, который написан в форме пончика и генерирует вращающийся трёхмерный ASCII-тор. Автор разбирает математические основы этой визуализации, созданной разработчиком Энди Слоуном (Andy Sloan), и размышляет о важности ежедневного интеллектуального поиска за пределами своей основной профессии. Это видео открывает цикл мини-лекций, посвящённых вечной красоте науки, математики и программирования.

## 🍩 Поэзия кода: Трёхмерный тор из символов ASCII
[[JUMP:0:00]]

Программирование часто воспринимается как сугубо утилитарный инструмент, однако истинное мастерство граничит с чистым искусством, где форма и содержание сливаются воедино. Лекс Фридман демонстрирует уникальный пример такого синтеза: исходный код на языке C, физически отформатированный в виде тора (пончика), который при компиляции и запуске создаёт на экране анимированное изображение вращающегося трёхмерного ASCII-пончика. Этот шедевр обфускации и математической элегантности был создан разработчиком Энди Слоуном.

Подобные артефакты цифровой культуры напоминают нам о временах ранней компьютерной графики и хакерской эстетики, когда ограничения вычислительной мощности компенсировались исключительной глубиной инженерной мысли. По мнению Лекса Фридмана, созерцание синтаксически подсвеченного кода, повторяющего форму создаваемого им объекта, вызывает особое эстетическое удовольствие, сравнимое с чтением классической поэзии или изучением изящных архитектурных чертежей прошлого. Это своеобразный мост между абстрактной логикой компилятора и осязаемой красотой геометрии.

## 📐 Пошаговый алгоритм: Математика за пределами плоского экрана
[[JUMP:0:12]]

За внешней простотой вращающихся символов скрывается строгий математический аппарат классической трёхмерной графики, развёрнутый в текстовом терминале. Для глубокого понимания механики процесса Лекс Фридман рекомендует обратиться к оригинальному блогу Энди Слоуна, где подробно описаны формулы, стоящие за «летающим и вращающимся тором». Всю процедуру создания трёхмерного объекта можно разделить на несколько последовательных шагов, каждый из которых опирается на фундаментальные принципы аналитической геометрии:

* **Создание окружности:** На первом этапе в двумерном пространстве задаются координаты базовой окружности.
* **Формирование тора:** Полученная окружность вращается вокруг оси Y в трёхмерном пространстве, образуя классическую фигуру тора.
* **Вращение в пространстве:** С помощью матриц поворота (rotation matrices) вычисляется динамическое смещение координат, заставляющее пончик непрерывно вращаться вокруг осей X и Z.
* **Проекция на плоскость:** Трёхмерные координаты виртуального тора проецируются на двумерный (2D) экран пользователя.
* **Расчёт освещения:** Для придания объекту объёма выбирается воображаемый источник света, после чего вычисляется вектор нормали к поверхности тора в каждой точке.

Особое изящество алгоритма заключается в том, как именно реализуется полутоновая графика в мире ASCII. Поскольку в распоряжении программиста есть только текстовые символы, разные уровни яркости (люминофорного свечения или освещённости) сопоставляются с различными символами. Символы с разной плотностью заполнения пикселями (например, точки, двоеточия, знаки доллара или решётки) создают иллюзию глубины, теней и бликов на вращающемся теле тора.

## 💻 Модификация, компиляция и управление параметрами
[[JUMP:0:51]]

Чтобы детально изучить работу программы, Лекс Фридман использует деобфусцированную версию исходного кода. В оригинале код Энди Слоуна представляет собой плотный массив символов в форме пончика, читать который человеку практически невозможно. Фридман возвращает коду читаемую структуру, чтобы добавить в него функцию приостановки потока на несколько микросекунд (microsecond sleep function). Это необходимо для контроля скорости анимации, чтобы современные сверхбыстрые процессоры не превращали плавное вращение в хаотичное мерцание.

После компиляции и запуска модифицированного кода на языке C в терминале разворачивается плавная и завораживающая симуляция. Программа обладает удивительной гибкостью, позволяя разработчику управлять целым рядом параметров трёхмерной сцены:

* **Поле зрения (Field of View / FOV):** Изменение угла обзора виртуальной камеры, влияющее на перспективные искажения объекта.
* **Дистанция до наблюдателя:** Регулировка расстояния между виртуальным пончиком и глазами зрителя, что позволяет приближать или удалять объект в кадре.

Такой уровень контроля над графическим движком, написанным вручную в несколько строк кода без использования сторонних тяжеловесных библиотек, наглядно демонстрирует мощь и лаконичность языка C.

## 🧘‍♂️ Философия непрерывного поиска: Порядок за рамками профессии
[[JUMP:1:18]]

Демонстрация ASCII-пончика служит для Лекса Фридмана лишь отправной точкой для более масштабного философского вывода о природе человеческого познания. Ведущий признаётся, что ежедневно посвящает не менее одного часа изучению тем, которые полностью лежат за пределами его основной профессиональной деятельности. Этот ритуал позволяет сохранять остроту ума и детское любопытство по отношению к устройству Вселенной.

По мнению Фридмана, в мире существует бесчисленное множество вещей, обладающих внутренней, чистой красотой, вне зависимости от того, являются они базовыми концептами или передовыми научными достижениями. Фридман формулирует своеобразный манифест междисциплинарного исследователя, заявляя о намерении регулярно выпускать небольшие видеоролики, подсвечивающие эстетическую сторону самых разных дисциплин:

* Машинное обучение и программирование.
* Математика и компьютерные науки.
* Психология и биология.
* Физика, история и классическая философия.

Этот подход перекликается с идеалами мыслителей эпохи Возрождения, которые не разделяли искусство и точные науки, видя в них лишь разные грани единого стремления человека к истине. Лекс Фридман выражает надежду, что подобные интеллектуальные экскурсы принесут радость его аудитории и вдохновят зрителей на собственные ежедневные открытия.