Диференціальна геометрія поверхонь — гаусова кривина пояснена
Чому плаский шматок піци скручується, коли ви його згинаєте, чому будь-яка мапа світу неминуче бреше про щось, і як єдине число — гаусова кривина — керує шейдингом мешів, розгортанням UV та оболонковими конструкціями.
1. Від кривих до поверхонь: головні кривини
Для плоскої кривої кривина — це одне число в кожній точці: наскільки швидко обертається напрямок дотичної при русі вздовж кривої. Для поверхні у 3D кривина складніша, бо поверхня може вигинатися по-різному залежно від того, у якому напрямку ви рухаєтеся по ній. Станьте на точку сідлоподібної картопляної чипси: рухаючись вздовж «довгої» осі, поверхня вигинається донизу; рухаючись вздовж «короткої» осі — догори. Одне число кривини цього не передасть.
Рішення, знайдене Ейлером, — розрізати поверхню площинами, що містять нормаль поверхні в точці, отримуючи криву в кожному напрямку, і виміряти кривину цієї кривої. Коли напрямок розрізу обертається на 360°, значення кривини коливається між максимумом і мінімумом. Ці два крайні значення — головні кривини k₁ і k₂, а напрямки, у яких вони досягаються, завжди перпендикулярні один одному — головні напрямки.
Ця пара чисел (k₁, k₂) у кожній точці поверхні — це сировина диференціальної геометрії: з неї будується кожна інша локальна величина кривини.
2. Гаусова і середня кривина
Карл Фрідріх Гаус об'єднав дві головні кривини в один скаляр — гаусову кривину K, визначену просто як їхній добуток. Друга, незалежна комбінація — їхнє середнє — дає середню кривину H:
Знак K класифікує локальну форму будь-якої гладкої поверхні рівно на три типи:
K > 0 (еліптична)
Куполоподібна. Обидві головні кривини мають однаковий знак — поверхня вигинається геть від своєї дотичної площини з усіх боків, як сфера чи яйце.
K = 0 (параболічна)
Розгортна. Принаймні одна головна кривина дорівнює нулю — циліндри, конуси й площини можна розгорнути пласко без розтягування.
K < 0 (гіперболічна)
Сідлоподібна. Головні кривини мають протилежні знаки — чипси, сідла й поверхні деяких мінімальних оболонкових конструкцій.
Середня кривина H, натомість, керує мінімальними поверхнями — мильні плівки, як відомо, мінімізують площу поверхні за фіксованої межі, і умова Ейлера–Лагранжа для цієї мінімізації — саме H = 0 всюди. Тому мильні плівки між дротяними каркасами утворюють гладкі, сідлоподібні форми: вони фізично розв'язують рівняння потоку середньої кривини в реальному часі.
// Дискретна гаусова кривина у вершині меша через дефект кута (Гаус-Бонне)
function angleDefectCurvature(vertex, oneRingTriangles) {
let angleSum = 0;
for (const tri of oneRingTriangles) {
angleSum += interiorAngleAtVertex(tri, vertex);
}
// Пласка околиця дає суму рівно 2π; будь-яка нестача — це кривина
const areaMixed = voronoiAreaAroundVertex(vertex, oneRingTriangles);
return (2 * Math.PI - angleSum) / areaMixed; // дискретна K
}
3. Theorema Egregium: кривина внутрішня
У 1827 р. Гаус довів результат, який сам вважав настільки дивовижним, що назвав його Theorema Egregium — з латини «визначна теорема». Вона стверджує, що гаусова кривина K, попри те що визначається через вкладення поверхні у 3D-простір (через нормальний вектор і те, як він нахиляється при русі), насправді обчислювана виключно за вимірюваннями всередині самої поверхні — відстанями й кутами, які виміряла б гіпотетична 2D-істота, що живе на поверхні, не знаючи нічого про навколишній 3D-простір.
Наслідок — величезний: гаусова кривина є ізометричним інваріантом. Якщо ви згинаєте поверхню без розтягування, розриву чи стиснення — наприклад, скручуєте плаский аркуш паперу в циліндр — гаусова кривина в кожній точці лишається абсолютно незмінною. Плаский аркуш має K = 0 усюди; скрутіть його в циліндр чи конус, і K все ще 0 усюди, бо скручування паперу його не розтягує. Але сфера має K = 1/R² > 0 усюди, і жодне згинання ніколи не перетворить плаский аркуш паперу на частину сфери без розтягування чи розриву, бо саме лише згинання не може змінити K.
Та сама теорема пояснює, чому розгортання UV викривленої 3D-моделі персонажа для текстурування завжди вимагає розрізання швів і вносить деяке розтягування: будь-яка ділянка меша з ненульовою гаусовою кривиною (ніс, коліно, куполоподібна голова) не може бути розгорнута ізометрично на пласку текстурну площину. Алгоритми розгортання UV працюють, мінімізуючи це неминуче спотворення, розміщуючи шви стратегічно там, де кривина (а отже, й розтягування) найгірша, або де шви будуть найменш помітними.
4. Кривина у графіці та інженерії
Шейдинг і рендеринг. Шейдери, що враховують кривину, використовують напрямки головних кривин для правильної орієнтації анізотропних відблисків (шліфований метал, волосся, тканина) уздовж природної «зернистості» поверхні. Наближення оклюзії довкілля на основі середньої кривини затемнюють увігнуті (з високою додатною середньою кривиною) складки й розколини без жодного дорогого трасування променів.
Згладжування й вирівнювання мешів. Потік середньої кривини — переміщення кожної вершини меша в напрямку локальної нормалі середньої кривини — стандартна операція геометричної обробки для згладжування шумних сканованих мешів зі збереженням загальної форми, оскільки це саме дискретизована версія рівняння, якому підкоряються мильні плівки.
Оболонкові та архітектурні конструкції. Інженери використовують поверхні з K < 0 (гіперболічні, сідлоподібні) для тонких бетонних оболонкових дахів, бо такі антикластичні поверхні структурно жорсткі без важкого внутрішнього каркаса — знаменитими прикладами є гіперболічні параболоїдні дахи Фелікса Канделі й сідлоподібні структури стадіонних навісів у кількох містах. Розгортні (K=0) поверхні, натомість, цінуються в листовому металообробленні та суднобудуванні, бо їх можна виготовляти згинанням плаского матеріалу без розтягування.
Фізично обґрунтована деформація. Симуляція тканини й тонких оболонок в іграх і кіно спирається на члени енергії згину, отримані безпосередньо із середньої кривини, оскільки саме опір зміні кривини (а не зміні розтягу) робить тканину жорсткою чи текучою на дотик.
Досліджуй математичні симуляції
Візуалізуй поверхні, кривину та геометричні структури інтерактивно у браузері.