Как определить длину, которую должен иметь единичный вектор, чтобы передать другой - PullRequest
0 голосов
/ 29 февраля 2012

Допустим, у меня есть два элемента: вектор направления единицы и другой произвольный вектор.

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

Вы понимаете, что я говорю?

1 Ответ

3 голосов
/ 29 февраля 2012

Если я вас правильно понимаю (вам нужен вектор v):

Вам нужен вектор v = (An), где:

(An).b = |b|

Здесь A - это просто число, n - этоединичный вектор, а b - произвольный вектор.

Это означает, что вы хотите вектор с длиной A, но если вы хотите повернуть мир так, чтобы b находился на оси x, компонент x равен (An) будет | b |(абсолютное значение b)

Следовательно, в компонентах:

A(n1b1 + n2b2 + n3b3) = sqrt(b1^2 + b2^2 + b3^2)

, где n1 означает 1-й (x) компонент вектора n.

Поэтому просто повторноупорядочить:

A = sqrt(b1^2 + b2^2 + b3^2)/(n1b1 + n2b2 + n3b3)
A = |b|/(n.b)

Итак, вектор, который вы ищете: v = A * n = n * | b | / (nb)

Я полагаю, это то, что вы хотите.

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

An.b = A(n.b) = |b| = abs(b)
A = |b|/(n.b)
Therefore v = An = n * |b|/(n.b)
...