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

Lex Fridman 8,9 млн 1 мин 4 мин 06.07.2020
Главное

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

💬 Цитаты

«Я трачу как минимум час каждый день на обучение и исследования за пределами моей основной работы.»

Лекс Фридман 01:18

«Мне показалось, что было бы здорово начать делать короткие видео о вещах, которые я нахожу прекрасными.»

Лекс Фридман 01:18
👥 Спикер
📖 Термины
ASCII-графика
Форма цифрового искусства, в которой изображения создаются с помощью текстовых символов таблицы ASCII.
Тор
Геометрическое тело, имеющее форму бублика или спасательного круга, образуемое вращением окружности вокруг оси.
Матрица поворота
Математический инструмент в линейной алгебре, используемый для вычисления новых координат точек при вращении объекта в пространстве.
Вектор нормали
Вектор, перпендикулярный к поверхности в данной точке, используемый в графике для расчёта угла падения света и освещённости.
📊 Цифры
Технологии и IT Лекс Фридман Andy Sloan язык C ASCII графика матрица поворота