Если я вас правильно понимаю (вам нужен вектор 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)