2010-07-25 2 views
3

Мне нужно знать, как найти вектор, противоположный другому, но второй вектор не обязательно такой же величины, как и первый, но направление противоположное. Пример:Поиск вектора напротив другого?

Я сделал небольшую схему :) alt text http://img688.imageshack.us/img688/5394/prettydiagram.png

В основном, если у меня есть координаты А (-150,150) и я хочу Б, чтобы быть противоположным, и имеет величину только 2, я хотел бы для получения B (-200, -150). То, что я делаю, - это приложение, которое может нарисовать кубические формы безье, и я заметил, что с ними много, есть ручки безье и изменение одной ручки, заставляющей другую двигаться тоже. Как это можно сделать?

Thanks

+2

Я немного смущен о происхождении. Видите ли, векторы и сегменты линий - это не одно и то же. Векторы начинаются с начала координат. Вам нужно 2 вектора, чтобы представить сегмент направленной линии. –

+1

Hm. Правильно ли эта диаграмма? Я не понимаю координаты, которые вы указали, или то, что вы имеете в виду по величине 2 (или 4). –

+0

Я предполагаю, что это относительный масштаб. –

ответ

3

Это просто, действительно.

B = -1/2 * A, или B.x = -1/2 * A.x, B.y = -1/2 * A.y, B.z = -1/2 * A.z. Это говорит о векторах, кстати. Вы хотите изменить результат. Формула мертв-проста. Что мне не хватает?

EDIT

Ваше приложение знает, красная точка местоположения (давайте сокращайте его в качестве R вектора). Ваше приложение также знает вектор A. Необходимо найти вектор B, который находится на той же линии, AR, с другой стороны, как R A, и такие, как А вдвое дальше, чем Б. Ну, в таком случае:

  • Временно вычислить вектор V = (A - R)
  • Теперь (это просто :)): B = R - 0.5 * V.

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

На самом деле этого мало. Любые вопросы?

+0

Что значит сдвинуть результаты? – jmasterx

+0

@Jex Поскольку вы уже знаете A и B, пытаетесь ли вы найти координаты красной точки? Я запутался. –

+0

@Jex, если у вас есть отрезок прямой линии от '(2,3)' to '(9, -6)', то это действительно вектор '(7, -9)', сдвинутый вектором '(2, 3) '- означает, что вы притворяетесь, что' (2,3) 'является источником. –

4

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

Вращательное матрица преобразования выглядит следующим образом:

alt text http://www.equationsheet.com/latexrender/pictures/46befe367f1c80ac00351de7785fd439.gif

Применить преобразование так:

alt text http://www.equationsheet.com/latexrender/pictures/78c27d415d755a0be04e4747da351a09.gif

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

В вашем специальном корпусе угол составляет 180 градусов. Вы знаете, что косинус 180 -1 и синус равен нулю, поэтому матрица проста:

alt text http://www.equationsheet.com/latexrender/pictures/3c16fd7210502fe391688e89f9b23589.gif

Это делает ясно как день: Все, что вам нужно сделать, это изменить признаки двух единичные векторные компоненты, и у вас есть свой ответ.

+1

-1 для того, чтобы сделать что-то смехотворно просто выглядеть сложным. –

+0

Просто дайте предысторию тем, кто может быть заинтересован. Согласен, это не сложно, но история назад позволяет понять, как справиться с общим случаем. Это сложно для людей, которые не знают векторов и боятся математики. – duffymo

Смежные вопросы