Какие есть примеры того, что математика оказалась важной и функциональной для других наук, но при первом появлении казалась совершенно бесполезной?
Первый пример, который мне приходит на ум, - это кватернионы.
"Кватернионы появились у Гамильтона после того, как его действительно хорошая работа была закончена; и, хотя они прекрасно изобретательны, они стали несравненным злом для тех, кто хоть как-то к ним прикоснулся, включая Клерка Максвелла". - Лорд Кельвин
Мне очень нравится эта история. Она показывает, что математика - это не только то, какие факты известны; она также показывает, как изменение способа записи может изменить ситуацию, и как метод, от которого отказались математики и инженеры, может найти возрождение в маловероятных местах. Например, в видеоиграх.
Представьте себе объект в двухмерном мире, который движется. Абсолютное движение в 2D легко описывается векторами. Вектор <3,-2> описывает перемещение на три единицы на восток и на две единицы на юг. Если вы делаете два движения, одно за другим, вы просто складываете векторы вместе. Когда объект вращается, это тоже легко описать, поскольку существует только один способ вращения (ну, два, по часовой стрелке и против часовой стрелки, но они просто отрицательны друг к другу). Если вы поворачиваетесь на 30°, затем на 20°, то ваш общий поворот составляет 50°.
Теперь подумайте о движении в 3D. Абсолютное движение может быть описано тремя векторами. Но вращение... Вращение в 3D является сложной задачей.
Любое вращение в 3D происходит вокруг оси. Но эта ось может быть направлена в любую сторону, и комбинация двух вращений вокруг двух разных осей плохо складывается. Если повернуть объект на 30° вокруг оси x, затем на 20° вокруг оси y, то общий поворот составит 35,92°, причем вокруг оси, наклоненной ко всем трем направлениям x, y, z (а если совместить эти вращения в обратном порядке, то ось будет другой).
Таким образом, нам нужна новая форма математики для решения этой ситуации. Было бы здорово, если бы мы могли описывать вращения полезным для инженеров способом. Было бы здорово, если бы у нас был метод, позволяющий легко объединять вращения вместе. Было бы здорово, если бы мы могли посмотреть на вращение и сразу узнать его градус и ось.
Несколько идей были сведены воедино. Я собираюсь немного углубиться в математику того, почему и как они работают, поэтому, если вы хотите более легкого чтения, перейдите к следующему разделителю.
Один из них - углы Эйлера. Это идея о том, что любое вращение можно описать, разбив его на три последовательных вращения вокруг оси x, затем y, затем z. Например, (30°,20°,0°) - это вращение на 30° вокруг оси x, затем на 20° вокруг оси y. Это полезно для инженеров, потому что часто именно так работает их машина, будь то "Карданов подвес" на самолете:
или с помощью запястий робота:
Хотя эта система может быть более удобной для описания вращения машин, она не облегчает решение других задач. Например, вращение на 20° по оси y, затем на 30° по оси x, в таком порядке, должно быть записано (31.57°, 17.23°, 10.31°). Комбинирование вращений и определение угла/оси - все еще большая проблема.
Другой способ - использование матриц вращения. Я не буду слишком углубляться в механику их работы, основная идея заключается в том, что вы можете записать многие виды трехмерных преобразований, включая вращение, как условия в сетке 3 x 3. Наш предыдущий поворот (30°,20°,0°) будет выглядеть так:
Это может выглядеть некрасиво, но когда все ваши вращения представлены в такой форме, объединить их очень просто: перемножьте матрицы вместе. (Конечно, вам придется узнать, как это работает, но это не слишком сложно). Вы также можете легко найти угол поворота (сумма членов по главной диагонали равна 1+2cosθ) и ось вращения с помощью не слишком сложного метода.
Я думаю, что это все еще предпочтительный метод для разработки физики объектов в трех измерениях.
Другой путь лежит через кватернионы. Некоторые из вас могут быть знакомы с мнимыми числами, в которых есть новое число i, обладающее свойством i² = -1.
Зачем иметь только одну из них... когда можно иметь три?
Это может выглядеть ужасно, особенно та часть, где результат двух этих чисел зависит от порядка, где ij=-ji. Так зачем же их использовать? Как оказалось, эта связка почти идеально соответствует сложной структуре вращений в 3D. Вращение на θ вокруг осевого вектора ⟨vx,vy,vz⟩ можно записать так:
В принципе, реальная часть говорит вам о степени вращения, а члены i, j, k говорят о том, вокруг какой оси вращение происходит. Довольно удобно, если это то, чего вы добиваетесь! Кроме того, объединение двух вращений тоже работает хорошо - просто перемножьте кватернионы, используя правила умножения, приведенные выше.
К сожалению, кватернионам было трудно найти хорошую область для использования человеком. Инженеры, работающие с "Карданов подвес" и роботами, не хотели иметь с ними ничего общего. У физиков и математиков уже были хорошие возможности с матрицами, которые могли выполнять и другие преобразования, кроме вращений. После появления в 1843 году, примерно через полвека они стали более или менее безвестными.
Но потом, гораздо позже, на горизонте появилось нечто новое.
Внезапно возникла необходимость работать с математикой вращений в 3D, для чего потребовались следующие свойства:
- легкие, хранящие каждый оборот в как можно меньшем количестве чисел,
- легко составляется, позволяя нам быстро объединить два вращения вместе
- легко интерполируется, так что мы можем взять вращение и определить, как выглядит, скажем, прохождение этого вращения на 1% за раз.
- невосприимчивы к ошибкам округления или, по крайней мере, устойчивы к ним
Я, конечно же, говорю о компьютерах. Компьютеры, которые должны знать о вращении в 3D, потому что их работа - моделировать трехмерный мир.
Компьютеры должны будут перемещать и вращать сотни предметов одновременно, и все это в мгновение ока. Поэтому вращение должно быть легким и легко компоноваться. Кроме того, если я хочу плавно показать вращение в течение 100 кадров, то каждый кадр должен показывать 1% этого вращения. И, конечно, если мы - компьютеры, то в каждом из этих вычислений могут возникнуть ошибки округления.
Углы Эйлера? Забудьте об этом. Слишком мучительно работать с гладкой поверхностью. Матрицы вращения? Использование 9 членов требует больших вычислительных затрат, а их польза теперь связана с ответственностью: если матрица вращения получит ошибку округления, она перестанет быть просто матрицей вращения. Голова Марио может стать очень искаженной по мере накопления ошибок.
"Но кватернионы попадают в точку: всего четыре члена в каждом, умножение очень простое, а интерполяция - тригонометрический бриз. Даже при ошибках округления кватернион никогда не перестанет описывать вращение."(Я вообще не понял, как тут можно перевести)
В связи с этим кватернионы пережили удивительное возвращение. Не только для компьютерной графики, но и для многих компьютерных систем, которые имеют дело с большим количеством математических операций вращения (как, например, в космических кораблях).