Математические темы для программирования 3D-графики [закрыто]

14

Я понимаю, что следующие математические темы необходимы для программирования трехмерной графики. Я начал делать некоторые из них в моем курсе математики. Может ли кто-то указать мне в направлении ресурса, который объясняет, как они применяются? Какие графические / игровые проблемы они используют для решения?

  • вектор математика
  • Математическая математика
  • кватернионы
  • линейная алгебра

Насколько я вижу, это все линейные алгебраические / матричные темы. Есть ли какие-либо другие темы, требующиеся?

Кэтрин Рикс
источник
У этого вопроса есть некоторая хорошая информация об этом: gamedev.stackexchange.com/questions/2029/…
michael.bartnett
@beardcp Я мог бы пойти так далеко, как дубликат.
Коммунистическая утка

Ответы:

10

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

  • Векторы - это способ думать о точках в пространстве
  • Матрицы - это способы мышления о преобразованиях пространства и объектов: перевод объектов, их масштабирование и т. Д.
  • Кватернионы являются естественным представлением для конкретной подгруппы этих преобразований, вращений
  • и т. д.

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

  • Один из наиболее естественных способов определения громкости из набора точек (например, для определения громкости звука, в которой будет воспроизводиться определенный фоновый шум, или громкости тумана, или тому подобного), - это найти выпуклую оболочку точек ; Есть хорошие алгоритмы для этого в 2 и 3 измерениях, но даже 2d алгоритмы не сразу очевидны.
  • Проблема в том, чтобы определить, какие объекты находятся рядом с данной точкой или рядом друг с другом (например, чтобы уменьшить количество объектов, которые должны быть проверены на возможные столкновения, или выяснить, какие враги заметят игроков на заданная точка) попадает в область задач геометрических запросов и в схемы пространственного разбиения (и, следовательно, в структуры, такие как деревья BSP и октреи). Те же общие идеи также используются для ответа на запросы «отслеживания линий» (например, «что попадает в этот лазерный луч?»)

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

Стивен Стадницки
источник
Это был фантастический ответ, Стивен, спасибо. Мне понравились ваши выводы о том, как думать о векторах, матрицах и кватернионах (к сожалению, более информативно за 2 секунды, чем у моего нынешнего лектора по линейной алгебре). Вы также дали мне лучшее понимание видов моделирования, с которыми сталкиваются программисты 3D-графики. Ура!
Кэтрин Рикс
4

Вот отличное вступление http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-2/

jhocking
источник
Ах, от парней, которые сделали Лугару! У меня еще не было возможности прочитать это, но у меня сейчас 6-недельный отпуск, и это будет частью того, на что я посмотрю - спасибо!
Кэтрин Рикс
3

http://www.dickbaldwin.com/KjellTutorial/KjellVectorTutorialIndex.htm - довольно хорошее и понятное руководство по 2D / 3D векторной математике и ее приложениям для графического программирования.

дельта
источник
Я посмотрел на это, очень мило. Начинается с основ, который хорош для начинающего, как я - большие пальцы! :)
Кэтрин Рикс
1

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

Помимо этого есть много тем для отображения, которые выигрывают от математической формулировки. Например, трехмерные тела обычно представлены триангуляциями их поверхности. Как мы показываем только ту часть поверхности, которую «должен» увидеть наблюдатель (алгоритмы скрытой поверхности / линии)? Если объект должен освещаться от определенного источника / направления, как это взаимодействует с перспективой, чтобы дать убедительную визуализацию поверхности?

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

hardmath
источник
1

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


источник
Я очень увлекаюсь книгами и тому подобным :) Спасибо за рекомендации.
Кэтрин Рикс
1

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

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

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

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

AAAAAAAAAAAA
источник
До сих пор я видел несколько упоминаний физики - можете ли вы сказать мне, на какие концепции вы здесь ссылаетесь? Я не касался этого предмета в течение 12 лет (то есть со старшей школы) и, честно говоря, ненавидел его. Возможно, я найду его применение легче желудка, хотя.
Кэтрин Рикс
Ньютоновская физика, прежде всего разрешение столкновений. Возможно, вас не учили этому в старшей школе, но все это очень математично, поэтому, если вы просто любите математику, вы должны быть хорошими.
aaaaaaaaaaaa