Топологические поверхности отрисовали пером в стиле книги 1987 года
Сайт e-infinity.space/picture-book показывает набор классических топологических поверхностей, поверхность Боя (вложение вещественной проективной плоскости в трёхмерное пространство), поверхность Морена и другие, в виде интерактивной 3D-модели, отрисованной не растровыми пикселями, а линиями, как в книге «A Topological Picture Book» математика Джорджа Фрэнсиса (G. K. Francis), изданной Springer в 1987 году: контурный рисунок с точками возврата (каспами), двойными кривыми, скрытыми линиями и скупой штриховкой. Управление: перетаскивание вращает модель (с зажатым shift, вращение по крену), колесо прокрутки приближает; на сенсорном экране один палец вращает, два пальца сводят для приближения и поворачивают для вращения по крену.
Рисунок построен из штрихов, а не из пикселей. Силуэты, это множество точек, где скалярное произведение нормали и направления взгляда (n·v) на сетке модели равно нулю, вычисленное по интерполированным нормалям так, чтобы линии складывались в гладкие кривые; границы и двойные кривые погружения поверхности добавлены как отдельные цепочки линий. Все линии отрисованы как сужающиеся к концам ленты по модели широкого пера: толщина линии растёт в тени и по направлению к зрителю, добавлено согласованное «дрожание руки». Видимость линий считается на GPU (видеокарте): проход скрытых линий рисует закрытые участки пунктиром, а односторонний бумажный ореол под каждым ближним контуром обрезает линии позади него. Штриховка, это набор линий тока поля направлений главной кривизны поверхности, построенных заранее, при сборке страницы, в трёх вложенных плотностях (вторая, вдоль другого главного направления, для перекрёстной штриховки); тон определяет, какое семейство линий используется и где каждый штрих сходит на нет. Светлые участки остаются чистой «бумагой» без штрихов. Главные направления кривизны упорядочены по знаку кривизны, а не по её модулю, это нужно, чтобы оба семейства линий оставались непрерывными в точках, где кривизны в двух главных направлениях равны по модулю и противоположны по знаку (κ₁ = −κ₂). Контурные цепочки линий слегка сглаживаются перед отрисовкой; штрихи чуть выходят за свои концы, как в скетчевом рисовании. Скопления туши в начале штриха и неровное растекание по «зерну бумаги», собственный, вручную настроенный эффект именно этой страницы (расширенная лента с краем, заданным волокноподобным шумом), а не приём, взятый из какой-либо статьи. Подписи выполнены «от руки», привязаны линией-выноской к точкам поверхности и гаснут, когда точка скрыта.
Для поверхности Боя использована параметризация Брайанта, Куснера, её источник статья математика Р. Куснера (R. Kusner) 1987 года; страница численно проверяет, что склейка антиподальных точек границы и трёхкратная симметрия выполняются с точностью до машинной точности. В общей формуле Куснера для произвольного параметра p используется знаменатель w^(2p) + κ_p·w^p − 1, где κ_p = 2√(2p−1)/(p−1), с множителем p/(p−1); константа подобрана численной проверкой того, что поверхность до инверсии минимальна (вариант с p = 2 и √3 вместо 2√3 минимальной не является). Ещё один источник, картезианское семейство поверхностей математика Ф. Апери (F. Apéry) из книги «Models of the Real Projective Plane» (Vieweg, 1987): оно даёт пресет поверхности Морена, а при параметре n = 3, вторую модель поверхности Боя.
Страница принимает пользовательские формулы поверхностей как выражения на JavaScript (синус, косинус, тангенс, экспонента, логарифм, корень и другие функции, знак ^, для возведения в степень); диапазоны параметров тоже можно задавать выражениями, например 2*pi. Есть и готовые встроенные функции: boy(u,v), погружение вещественной проективной плоскости по Брайанту, Куснеру; torusknot(u,v,p,q,R,r,a), трубка заданного радиуса вокруг тороидального узла типа (p,q); apery(u,v,n,k), картезианское семейство Апери (при n=2, k=1 получается поверхность Морена, при n=3, k=1, поверхность Боя); kusner(u,v,p,d), семейство Куснера, Брайанта (при p=2 покрывает всю сферу и даёт поверхность Морена, при нечётном p, например p=3, один раз покрывает вещественную проективную плоскость и даёт поверхность Боя).
В основе рендеринга, комбинация приёмов из полутора десятков опубликованных работ по компьютерной графике за 1979, 2019 годы: силуэты по интерполированным нормалям, штриховка по линиям главной кривизны, «гало»-эффект для скрытых линий, скетчевая отрисовка штрихов, полигонизация неявных поверхностей методом марширующих кубов и его тетраэдрического варианта и другие, страница явно перечисляет все использованные источники. Кто создал страницу и когда именно она опубликована, в тексте не указано; конкретные технологии рендеринга тоже не названы (упоминаются только «GPU» и «выражения на JavaScript»), и никаких показателей производительности не приведено.
Ключевые факты
- Сайт e-infinity.space/picture-book рисует поверхность Боя, поверхность Морена и другие топологические фигуры как интерактивные 3D-модели со штриховкой пером, а не растровой заливкой.
- Стиль, прямая отсылка к книге математика Джорджа Фрэнсиса «A Topological Picture Book» (Springer, 1987): контуры с каспами, двойные кривые, скрытые линии, скупая штриховка.
- Штриховка строится по линиям главной кривизны поверхности в трёх вложенных плотностях, видимость линий считается на GPU, добавлены «дрожание руки» и другие эффекты ручного рисунка.
- Поверхность Боя построена по параметризации Брайанта, Куснера (по статье Р. Куснера, 1987) и проверена численно; используется также картезианское семейство поверхностей Ф. Апери (1987).
- Пользователь может вводить собственные формулы поверхностей на JavaScript и вращать/приближать модель мышью, тачпадом или на сенсорном экране.
Почему это важно
Страница совмещает две вещи, которые редко встречаются вместе: строгую математику, явные параметризации классических неориентируемых поверхностей, поверхности Боя и поверхности Морена, и подробно задокументированный конвейер нефотореалистичного рендеринга, собранный из полутора десятков академических работ по компьютерной графике за 1979, 2019 годы. Автор не просто построил вращаемую 3D-модель, а воспроизвёл узнаваемый рисовальный стиль конкретной бумажной книги 1987 года средствами реального времени: силуэты, штриховку по кривизне, ручное дрожание линии и «гало»-эффект для скрытых рёбер. Это пример того, как современные графические техники можно направить не на фотореализм, а на точную имитацию иллюстративной, «нарисованной от руки» графики.
Кому это важно
Прежде всего, математикам и преподавателям топологии, которым нужна наглядная, вращаемая модель неориентируемых поверхностей вроде поверхности Боя и поверхности Морена. Также, разработчикам компьютерной графики и авторам нефотореалистичного рендеринга: страница показывает работающую связку силуэтного контура, штриховки по главной кривизне и скетчевой стилизации линий в одном интерактивном движке. Заинтересует и тех, кто следит за научной визуализацией и историей «A Topological Picture Book» Джорджа Фрэнсиса как жанра математической иллюстрации.
Как это применить
Страница открывается прямо в браузере без установки: модель вращается перетаскиванием (с зажатым shift, вращение по крену), приближается колесом мыши или жестами на сенсорном экране. Продвинутые пользователи могут вписывать собственные поверхности как формулы на JavaScript с тригонометрическими и другими функциями либо использовать готовые встроенные семейства, boy(), torusknot(), apery(), kusner(), с параметрами, задающими конкретный вариант поверхности.
Можно ли доверять
Страница подробно и прозрачно документирует собственный метод: перечисляет более десятка научных источников для каждого приёма рендеринга, силуэтов, штриховки, гало-эффекта, скетчевой отрисовки, и явно указывает, какие визуальные эффекты (растекание туши, зернистость бумаги) добавлены самим автором страницы, а не заимствованы из какой-либо статьи. Математическая часть тоже проверяется явно: склейка антиподальных точек границы и симметрия параметризации Боя проверены численно с точностью до машинного округления, а неминимальность альтернативного варианта константы, тоже установлена расчётом, а не предположена на глаз. При этом в тексте не указаны ни автор или создатель страницы, ни дата публикации, ни конкретные технологии рендеринга (названы только «GPU» и «JavaScript»), ни какие-либо показатели производительности.
Риски и подводные камни
Материал сугубо нишевый, рассчитан на аудиторию, уже знакомую с топологией неориентируемых поверхностей и техниками компьютерной графики; без понимания терминов вроде «главная кривизна» или «погружение поверхности» интерактив останется красивой, но малопонятной картинкой. Сама область, рендеринг силуэтами и штриховкой, хорошо изученная, без технологического прорыва: ценность страницы в тщательности исполнения и явной привязке к конкретным опубликованным методам, а не в новизне алгоритмов.