Изменить положение конечной точки вектора
Все здравствуйте. У меня есть вектор(3d) с его начальной точкой с её координатами и есть его конечная точка, так же с координатами. Вопрос такой - мне нужно сместить на определённое расстояние конечную точку вектора назад, в обратном направлении, по этому вектору.
Ответы (3 шт):
Все достаточно просто и даже просто расписав на бумажке вы уже почти всё поймёте.
- Переносите вектор в начало координат
- Нормализуете вектор
- Умножаете нормальный вектор на нужное расстояние
- Полученный вектор вычитаете из конечной точки изначального вектора.
Сначала терминология: вектор это три числа (в 3D). У него не может быть координат начальной и конечной точек, вектор - это только разница между двумя координатами. То что у вас - это скорее направленный отрезок.
- Определяем направление: координаты конечной точки минус координаты начальной точки (покоординатно вычитаем, получаем вектор).
- Нормализуем (то есть делим на его длину, то есть на
sqrt(x*x + y*y + z*z)
, чтобы сделать его длиной1
). - Вычитаем из конечной точки этот вектор, умноженный на желаемое расстояние.
У вектора нет начальной точки, можно считать, что это нулевая координата.
Уменьшить длину вектора на заданную величину можно так:
Vnew = V - Delta * V / Len(V)