Что такое трехмерный вектор и чем он отличается от трехмерной точки? - PullRequest
11 голосов
/ 12 октября 2010

Отличается ли трехмерный вектор от точечного кортежа 3D (x, y, z) в контексте математики трехмерной игры?

Если они отличаются, то как рассчитать вектор по трехмерной точке

Ответы [ 7 ]

14 голосов
/ 12 октября 2010

Разница в том, что вектор - это алгебраический объект, который может или не может быть задан как набор координат в некотором пространстве.(спасибо bungalobill за исправление моего разгильдяйства).

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

Самое большое различие между ними состоит в том, что нет смысла делать что-то с одним, что вы можете сделать с другим.Например,

  1. Вы можете добавить векторы: <1 2 3> + <3 2 1> = <4 4 4>
  2. Вы можете умножить (или масштабировать)вектор с числом (обычно называемым скаляром) 2 * <1 1 1> = <2 2 2>

  3. Вы можете спросить, как далеко находятся две точки: d ((1, 2, 3), (3, 2, 1) = sqrt ((1 - 3) 2 + (2 - 2) 2 + (3 - 1) 2 ) = sqrt (8) ~ = 2.82

Хороший интуитивный способ понять связь между вектором и точкой состоит в том, что вектор говорит вам, как получить отначало координат (та единственная точка в пространстве, которой мы назначаем координаты (0, 0, 0)) соответствующей точке.

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

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

Также вектор может быть чем-то совершенно другим, например, ограниченная функция на интервале [0, 1] является вектором, потому что вы можете умножить его надействительное число и добавьте его к другой функции на интервале, и оно будет удовлетворять определенным требованиям (а именно, аксиомам векторного пространства).В этом случае каждый думает о наличии одной координаты для каждого действительного числа x в [0, 1], где значение этой координаты равно f (x).Так что это самый простой пример бесконечномерного векторного пространства.

Существуют всевозможные векторные пространства, и представление о том, что вектор является «точкой и направлением» (или кем бы оно ни было), на самом деле довольно пусто.

2 голосов
/ 12 октября 2010

Векторы - это более общая идея, чем точка в трехмерном пространстве.

Векторы могут иметь 2, 3 или n измерений.Они представляют много величин в физическом мире (например, скорость, сила, ускорение) помимо положения.

Математик сказал бы, что вектор является тензором первого порядка, который преобразуется в соответствии с этим правилом:

u(i) = A(i, j)v(j)

Вам нужны и точка, и вектор, потому что они различны .Точка в трехмерном пространстве, обозначающая положение, является вектором, но каждый вектор не является точкой в ​​трехмерном пространстве.

Тогда в компьютерной науке существует понятие вектора как контейнера - это абстракция для массива значений илиРекомендации.Это понятие отличается от представления математика о векторе, поскольку каждый контейнер вектора не должен подчиняться закону преобразования тензора первого порядка (например, Vector of OrderItems).Это еще одна отдельная идея.

Важно помнить все это, когда речь идет о векторах и точках.

2 голосов
/ 12 октября 2010

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

1 голос
/ 12 октября 2010

Отличается ли трехмерный вектор от точечного кортежа 3D (x, y, z) в контексте математики трехмерной игры?

Традиционный вектор означает направление и скорость.Точкой можно считать вектор из мира или начало одного временного шага.(даже если это не может считаться математически чистым)

Если они отличаются, то как рассчитать вектор с учетом 3D-точки?

target-tower isобщая мнемоника.

Будьте осторожны при использовании этого.Результирующий вектор действительно нормальной * скорости.Если вы хотите изменить это на что-то полезное в игровом приложении: сначала вам нужно нормализовать вектор.

Пример: Джо находится в (10,0,0) и хочет пойти в (10,10,0)
Башня-цель: (10,10,0) - (10,0, 0) = (0,10,0)
Нормализовать результирующий вектор: (0,1,0)
Применить «физику»: (0,1,0) * speed * elapsed_time = (0,6,0)
Добавить полученный вектор в текущую точку Джо в пространстве, чтобы получить его следующийточка в пространстве: ... = (10,6,0)

Normal = вектор / (sqrt (x * x + y * y + z * z))

...Я думаю, у меня есть все здесь

0 голосов
/ 12 октября 2010

Вектор - это изменение состояний. Точка - это статическая точка. Два вектора могут быть параллельными или перпендикулярными. Вы можете иметь произведение двух векторов, которое является третьим вектором. Вы можете умножить вектор на константу. Вы можете добавить два вектора.
Все эти операции не разрешены на месте. Поэтому, если вы думаете, что оба являются классом C ++, в векторном классе будет много таких методов, но, вероятно, только Get и Set для точки.

0 голосов
/ 12 октября 2010

Нет, разницы нет.Точки являются векторами.Если вам нравится думать о векторе как направление + величина, то точка - это просто вектор из начала координат.

0 голосов
/ 12 октября 2010

Вектор - это линия, представляющая собой последовательность точек, но которая может быть представлена ​​двумя точками: начальной и конечной точкой.

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

...