Как рассчитать среднее направление двух векторов

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

Ответ 1

Векторная математика работает так же, как вы думаете:

v3 = (v1 + v2)/2

// so:
v3.x = (v1.x + v2.x) / 2;
// same for Y and Z

Ответ 2

Как правило, лучше умножать, чем делить по причинам скорости при выполнении графического программирования, поэтому я бы рекомендовал следующее:

v3 = (v1 + v2) * 0,5f;

Ответ 3

Простой мысленный эксперимент: сделайте это для единичных векторов в направлениях x и y. Интуитивно вы можете представить, что "средний" будет единичным вектором под углом 45 градусов вверх и вправо. Именно это и происходит. Мыслительный эксперимент предполагает, что вам нужно нормализовать среднее значение по его величине, чтобы получить единичный вектор. Я бы посоветовал вам это сделать.

Ответ 4

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

(v1 + v2)/abs(v1 + v2)

Ответ 5

добавление их и разделение на два делает работу

Ответ 6

Извините, но это неправильно. В векторном мире "среднее" в смысле усредняющих компонентов ничего не значит. Представьте (-1 0) и (1 0) → средний = 0 0; -)

Ответ 8

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