Простите, если это не считается реальным вопросом, но это то, что я искренне смущен.
Я постоянно слышу, как другие разработчики игр говорят о том, что использование векторов очень полезно, но также и то, как все пугаются векторной математикой и векторами, может показаться пугающим. Я никогда не удосужился узнать о них.
Итак, наконец-то я посмотрел Vector в Википедии и был удивлен. Если я не ошибаюсь, вектор (для простоты, скажем, 2D) - это просто координаты x и y. Если я неправильно понял, пожалуйста, поправьте меня.
Итак, вот мой вопрос: не означает ли это, что любое представление двух (или трех) размерных координат является вектором? Если это так, то векторы и координаты - это одно и то же. И в значительной степени невозможно создать игру без использования координат, так как же векторы запутаны или новы для кого-то, кто занимался программированием игр?
Это то, что я мог бы использовать некоторые разъяснения. Любая помощь приветствуется.
источник
Ответы:
Не позволяйте математике услышать, как вы называете Векторы точками или координатами!
2D-вектор имеет компоненты x и y , а не координаты. Векторы не определяют положение, они определяют направление и величину.
Я не могу сказать вам, почему люди запуганы ими, вероятно, по той же причине, по которой люди запуганы математикой в целом, потому что все говорят, что трудно, прежде чем они что-то узнают об этом!
Векторы и координаты - это не одно и то же. Они выглядят одинаково, но способ их использования сильно отличается.
Координаты определяют положение в мире. Векторы определяют направление и величину. Два из них часто используются вместе. В качестве примера:
У персонажа есть позиция и скорость. Положение является координатой, а скорость - вектором. Добавление скорости к позиции приведет к перемещению символа в направлении вектора на расстояние, определяемое величиной вектора (обратите внимание, что величина вектора - это скорость, поэтому это дает нам направление и скорость).
Или в этом примере:
Два персонажа имеют позиции, а лазерный выстрел - вектор. Вектор между двумя положениями равен (3,1). Это означает, что он перемещается +3 вдоль оси X и +1 вдоль оси Y. Где величина может быть найдена с помощью Sqrt ((X X) + (Y Y)).
Хороший обзор векторной математики можно найти в блоге Wolfire.
источник
Я думаю, что фактор запугивания может возникнуть, когда вы начинаете иметь дело с более сложными операциями, такими как нормализация, точечные и перекрестные произведения, и использованием нескольких систем координат с матрицами для преобразования между ними. Поначалу их не обязательно легко понять, даже если у вас сильный фон геометрии и алгебры.
Кроме того, по крайней мере, в США люди, которые прошли типичную математическую последовательность в старших классах, привыкли думать о геометрии с точки зрения линий, уклонов, углов и т. Д. Они должны в некоторой степени отучиться от этих вещей и научиться думать об этом с точки зрения векторов и матриц вместо этого. Дело не в том, что понятия линейной алгебры настолько растянуты, а в том, что они представляют собой несколько иной набор понятий, чем те, которые используются в классической геометрии, которую люди, вероятно, выучили в школе.
Кстати, различие между векторами и точками заключается в операциях, которые вы можете выполнять над ними. Хотя оба они представлены (в конкретной системе координат) списком компонентов и поэтому выглядят «одинаково», разрешенные операции не одинаковы. Например, вы можете добавить два вектора или умножить вектор на скаляр. Вы не можете сделать это с очками - или, по крайней мере, это не имеет никакого смысла. Но вы можете вычесть две точки, и в результате получается вектор из одной точки в другую. Вы также можете добавить точку к вектору, чтобы получить новую точку.
Точки и векторы также ведут себя по-разному относительно преобразований. А именно, точки подлежат переводу, а векторы - нет. Рассмотрим пример объекта, движущегося с позицией (точка) и скоростью (вектор); если вы переводите объект в другое место, вы изменяете его положение, но не его скорость.
Фактически, продвигая эту линию рассуждений, существуют не только векторы; Существуют и другие объекты, такие как ковекторы и бивекторы , которые также могут «выглядеть как» вектор с точки зрения наличия списка компонентов в системе координат, но ведут себя по-разному с точки зрения доступных операций и способа, которым они реагируют на преобразования. Все они принадлежат к области математики, называемой алгеброй Грассмана . Помимо этого, можно быть еще более общим и рассмотреть тензорную алгебру . Это продвинутый материал, хотя.
источник
Векторы действительно не так уж и плохи. Есть только немного математики, с которой люди незнакомы.
Прежде всего, Вектор не представляет позицию в пространстве. Это концептуально очень важно. Вектор представляет направление, например «север», и величину. На карте с нормальными математическими координатами XY «север» будет вектором (0,1) (вверх по оси Y). Это не следует путать с позицией (0,1), которая на одну единицу выше, куда бы вы ни положили начало координат. Вектор - это направление и величина .
Смещение (движение) - это вектор (например, перемещение на две единицы вверх и на одну единицу вправо), позиция - нет.
Сами по себе векторы - это не то, с чем люди имеют проблемы. Обычно это матрицы и операции над векторами.
Например, если вы умножаете вектор на специальную матрицу, называемую «матрицей вращения», то вектор поворачивается на величину, указанную матрицей. Кроме того, у некоторых людей возникают проблемы с умножением матриц. Посмотрите, если вы не знакомы с этим.
Кроме того, вы можете «сложить» эти матрицы (или операции) вместе. Как Поворот на 90 градусов вокруг оси X, затем Поворот на 90 градусов вокруг оси Y. Если мы назовем первую матрицу M, а вторую матрицу N, то операция будет v * M * N. Тем не менее, умножение матриц не является коммутативным, так что это не то же самое, что v * N * M.
В графическом программировании вы регулярно выполняете значительно более сложные операции над векторами и другими матрицами. Преобразования для FoV и размещение ваших координат в пространстве экрана и т. Д. Это действительно не так уж плохо, но это может быть пугающим для новых людей.
источник