Что такое 3D вектор и чем он отличается от 3D точки?

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

Если они разные, то как вычислить вектор, заданный 3d-точкой?

7 ответов


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

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

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

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

  3. вы можете спросить, как далеко друг от друга две точки: Д((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). Так что это самый простой пример бесконечномерного векторного пространства.

существуют всевозможные векторные пространства, и представление о том, что вектор-это "точка и направление" (или что бы это ни было), на самом деле довольно пусто.


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


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

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

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

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

вам нужны как точка, так и вектор, потому что они are разные. Точка в 3D пространстве, обозначающая положение это вектор, а вектор-это не точка в 3D пространстве.

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

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


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

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

если они разные, то как вычислить вектор, заданный 3d-точкой?

target-tower является общим мнемонический.

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

пример: Джо находится в (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)
Добавьте полученный вектор к текущей точке Joes в пространстве, чтобы получить его следующую точку в пространстве: ... =(10,6,0)

Normal = vector / (sqrt (x*x+y*y+z*z))

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


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


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


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

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