Какую математику должны знать все программисты? [закрыто]

Достаточно простой вопрос: Какую математику должны иметь все игровые программисты, чтобы добиться успеха?

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

Примечание: , так как есть не один правильный ответ , этот вопрос (и его ответы) является вики-сообществом.

Кроме того, если вы хотите фантастические математические уравнения латекса, не стесняйтесь использовать http://mathurl.com/.

160 голосов | спросил 4 revs, 2 users 100%
Tetrad
1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

16 ответов


133

Существуют many другие формы математики, которые полезны, но при абсолютном минимуме вам нужно знать следующее:

  • Алгебра и арифметика

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

Объекты в игровом мире представлены векторами. Вектор представляет такие вещи, как позиция объекта, направление взгляда и скорость. Математические вычисления, такие как Dot Product , Cross Product , а также нормализация вектора.

Как перенести свой игровой объект? Новичок может сказать:

«Я знаю, я просто сделаю:« object.position.x++.

Нет, нет. Вам нужно использовать векторный расчет. Объекту требуется вектор положения, направления и ускорения, который вы можете использовать для перемещения объекта. Если вы делаете новичков, вы застрянете в неудержимом беспорядке и как вы сделаете движение в направлении, не совпадающем с осью XYZ в мире?

Основной причиной игры являются кватернионы, потому что они представляют собой вращения почти так же эффективно, как и углы Эйлера, не страдая от Gimbal lock . Gimbal Lock начинается, когда любой угол Эйлера достигает поворота на 90 градусов вокруг любой оси: вы сразу теряете степень свободы. Кватернионы решают эту проблему, добавляя четвертое измерение. Если вы застряли с углами Эйлера, вам придется ограничивать одну ось, чтобы никогда не вращаться более чем на 89 градусов.

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

Причины, по которым вам понадобятся физические уравнения:

  1. Создание отскока мяча (см.: Коэффициент реституции)
  2. Сделать шарик движением в направлении с помощью 'x' newtons силы
  3. Сделайте что-то более или менее трением, чтобы он скользил с другой скоростью.
  4. Ответы на столкновения: какое направление будет вращаться, когда я нажму «здесь»?

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

ответил Candid Moon 22 Maypm17 2017, 16:50:41
50

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

Математика подобна технике, тем лучше, если вы ее примените.

Вот порядок важности, который я вижу.

  • Арифметика
  • Линейная алгебра (с геометрическими интерпретациями)
  • Исчисление (физика)
  • Комбинаторика (рандомизированные уровни)
  • Вероятность (балансировка)
  • Статистика (байесовская версия для AI)

Я мог продолжать идти. Чем больше вы знаете, тем лучше, но изучение кучки математики не означает, что вы сделаете отличную игру, но это может помочь.

ответил Candid Moon 22 Maypm17 2017, 16:50:41
24

Самая простая - это теорема Пифагора. Также известна как формула расстояния.

a ^ 2 + b ^ 2 = c ^ 2 http://mathurl.com/y8ouslw.png где a и b - это ребра прямоугольного треугольника и c является гипотенузой. Это означает, что для того, чтобы найти длину вектора, вы делаете это:

distance = sqrt (a ^ 2 + b ^ 2) http://mathurl.com/2dyhukn.png

Еще одно интересное замечание: если вы просто сравниваете расстояния, вам не нужно принимать квадратный корень (что может быть относительно дорогостоящим). Вот почему большинство фреймворков имеют функцию «квадрат квадрата» или «квадрат длины» для своих векторов.

ответил Candid Moon 22 Maypm17 2017, 16:50:41
18
  • Векторы как 3D, так и 4D, а также то, что компонент W должен быть установлен на
  • Левая и правая системы координат, а какая ваша игра
  • Точечный продукт и что он полезен для
  • Перекрестное произведение и то, что оно полезно для
  • Матрицы, как они представляют ориентацию и положение, и как вы можете их комбинировать.
  • Кватернионы

Даже если вы не The Graphics Guy, вы будете использовать векторы и векторные математические вычисления в 80% случаев. Это лук нашего веселого болоньеза.

ответил Candid Moon 22 Maypm17 2017, 16:50:41
11

Твердая схватка +, -, * и /.
Без них вы полностью ввернуты.

ответил Candid Moon 22 Maypm17 2017, 16:50:41
9

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

Геометрия важна для любой графической работы. Если вы хотите отображать информацию на экране, вам необходимо понять системы координат. И если вы хотите переместить их во что угодно, кроме кардинальных направлений, вы будете полностью потеряны без твердого понимания синусов, косинусов и векторов (базовый тригг). И если вам нужно работать в 3D, требования геометрии и триггера усложняются.

Если вы хотите смоделировать любую дистанционно реалистичную физику, для этого вам нужно исчисление. (Это то, что заставило Ньютона изобретать исчисление, после всего.)

Любые вероятностные вычисления требуют знания статистики и теории вероятностей, чтобы получить разумные результаты без безумных сумм проб и ошибок.

Там, вероятно, гораздо больше, но это то, что приходит на ум с моей головы.

ответил Candid Moon 22 Maypm17 2017, 16:50:41
9

По крайней мере, вам понадобится.

  • Алгебра
  • Основная геометрия
  • Основная тригонометрия

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

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

ответил Candid Moon 22 Maypm17 2017, 16:50:41
9

Двоичный и Hexadecimal , и как их преобразовать в десятичные числа /из десятичных чисел.

Хотя вам обычно не нужно работать с двоичными числами raw , они часто используются для переменных Flag, для которых требуется логическая логика и бит-сдвиг.

Hex не так важен (если вы не хотите обрабатывать 0xDEADBEEF ), но, как минимум, d хотите распознать , когда они используются, и почему.

ответил Candid Moon 22 Maypm17 2017, 16:50:41
6

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

«Глупые бит-трюки» сохраняют все виды времени программы (и они также обычно эквивалентны некоторым трюкам и набора трюков), типы графов и обходы используются повсюду (даже если вы просто выбираете STL контейнеры), а алгоритмическая сложность является ключом к оптимизации по мере того, как языки достигают более высоких уровней.

ответил Candid Moon 22 Maypm17 2017, 16:50:41
5

Я думаю, что матрица выигрыша - довольно важный инструмент. Игры часто веселее, когда они приближаются к интересному балансу справедливой игры с нулевой суммой, а матрицы выплат помогают вам количественно оценить это в сложных случаях. Я предполагаю, что эта статья в википедии так же хороша, как и любая, и получает основную необходимую концепцию: http://en.wikipedia.org /вики /Нормаль-form_game

ответил Candid Moon 22 Maypm17 2017, 16:50:41
4

Понять точечный продукт: Если два вектора имеют примерно одинаковое направление (theta & deg; 90 deg), то точечный продукт вл етс положительным или отрицательным. Его можно использовать для проверки всякий раз, когда игрок находится в поле зрения (при условии, что FOV - 90 градусов).

И обобщите свою 2D-игру на более высокие размеры. (используйте векторные вычисления)

Если вы можете самостоятельно реализовать 3D-движок, вам хорошо идти.

ответил Candid Moon 22 Maypm17 2017, 16:50:41
4

Это зависит от того, что вы делаете .

Все программисты должны знать, по крайней мере, среднюю школьную алгебру. Это означает:

  • Хорошее чувство чисел
  • Комфорт с базовой математикой (добавление, под, мульти, разделение)
  • Тригонометрия (sin и cos)
  • Векторы, угол между векторами, точечный продукт, кросс-произведение

Ваши программисты должны знать:

Ваши программисты должны знать:

  • Все вышеперечисленное и
  • Дифференциальные уравнения
  • Численные методы
ответил Candid Moon 22 Maypm17 2017, 16:50:41
3

Помимо синусов и косинусов (которые 50-75% программистов, которых я встречал, не знали, как их использовать), изучите магическую функцию дуги-загара и как ее можно использовать для получения угла любого вектора.

ответил Candid Moon 22 Maypm17 2017, 16:50:41
0

Я удивлен, что никто не упомянул Quaternions . У меня нет большого опыта работы с разными моделями, но, по крайней мере, JME использует его везде, и у меня сложилось впечатление, что это довольно важная концепция.

ответил Candid Moon 22 Maypm17 2017, 16:50:41
-1

Создание игр - это приведение «реальной» жизни в виртуальную реальность. Лучше узнать больше о реальном мире /Вселенной, чем меньше :). Математика - это только инструмент. И если вы составляете план, вы также должны поместить время на учебу в планы.

EDITED: я видел некоторое недоразумение :) .. Я думаю, что набор математических приемов, которые вам нужно править, зависит от конкретных вещей, которые вы хотите описать. Никто не знает все. И лучший способ, как это сделать. Не учиться всему на начальном этапе, но изучать маленький кусочек, использовать, учиться, использовать и т. Д. Затем вы можете сделать это во время разработки, если у вас есть хороший план.

ответил Candid Moon 22 Maypm17 2017, 16:50:41
-2

Простой ответ: LOT!

Подробный ответ:

Арифметика, Элементарная & Линейная алгебра, в большинстве случаев Trig, если вы делаете 3D-игру, ОПРЕДЕЛЕННОЕ исчисление и физику (физика требует исчисления)!

ответил Candid Moon 22 Maypm17 2017, 16:50:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132