ПрограммированиеФорумОбщее

Смещение вектора в 2D

#0
10:20, 14 ноя 2016

Есть вектор, заданные 2 точками( произвольными). Разность между каждой из координат векторов не превышает половины разрешения экрана( то есть первый вектор в центре экрана, а второй в любом другом месте на экране).
Мне необходимо сместить этот вектор на определенную величину, в сторону перпендикуляра к вектору с двух сторон( смотрим картинку если не понятно)
Безымянный | Смещение вектора в 2D
Нужно найти вектора, которые нарисованы пунтриром

#1
11:12, 14 ноя 2016

Я так понял проблема нарисовать параллельный вектор?

У вектора "а" есть направление (x,y), переворачиваем его, где nx=-y, ny=-x. Это и есть перпендикулярное направление в сторону параллельного вектора, перемножай его на "некое значение" получишь точку начало вектора "b", от нее строишь вектор с направлением "а". вектор "с" nx=y, ny=-x

#2
13:34, 14 ноя 2016
Безымянный | Смещение вектора в 2D
#3
13:56, 14 ноя 2016

опиши что у тебя вызывает сложность

#4
14:40, 14 ноя 2016

Sneaks
> опиши что у тебя вызывает сложность
Вот ты писал
Sneaks
> У вектора "а" есть направление (x,y), переворачиваем его, где nx=-y, ny=-x. Это
> и есть перпендикулярное направление в сторону параллельного вектора,
Что за "n"
например у меня вектор a представлен в виде двух точек AB.

A=[10,10]
B=[20,10]

как я понял, направление- это "B"
далее ??? система уравнений???  или что это????

nx=-y
ny=-x

если x=20, а y=10, то

n*20=-10
n*10=-20

решаю

20n+10n=-30
30n=-30
n=-1

Что за "n"????

#5
14:41, 14 ноя 2016

Sneaks
> У вектора "а" есть направление (x,y), переворачиваем его
переворачиваем- это отражаем вектор в противоположную направлению сторону???

#6
15:31, 14 ноя 2016

направление это вектор из точки А в сторону точки В  с длинной в 1 попугай
находишь направление
vx=x/r
vy=y/r

где:
vx-направление по х
vy-направление по у
r - расстояние между А и В по формуле. (http://ru.onlinemschool.com/math/library/analytic_geometry/point_point_length/)
x=A(x)-B(x)
y=A(y)-B(y)

у тебя получится сам вектор направление назовем его VA и у него будет свой х и у. Вот с ними и играемся.

nx=-y
ny=-x

(nx,ny) - это перпендикулярное направление от твоего вектора А в левую сторону от него.
Для смещения перемножаем его значение на "n" и мы узнаем где будет находиться начальная точка параллельного вектора. От нее строим новый вектор, либо так же используя nx,ny, тем более что у нас уже будет известно длина изначального вектора.

#7
15:34, 14 ноя 2016

и к стати если у тебя
A=[10,10]
B=[20,10]
то это не вектор, а отрезок.

#8
16:38, 14 ноя 2016

mazahist
>
> например у меня вектор a представлен в виде двух точек AB.
Учи мат часть...

Вектор это направление. Не из A в B, а просто направление.
Грубо говоря вектор a(10,20) это направление из начала координат в точку 10,20 (x,y соответственно).
Проделывая различные операции над векторами (сложение, увножение и т.д.) ты получишь другое направление, другой длины.
Из двух точек A1A2 получаешь вектор а = A2 - A1.
Нормализуешь вектор а.
Потом поворачиваешь вектор a на 90 и -90 градусов, получаешь вектора ab и ac, они будут перпендикулярны вектору а (твоему отрезку A1A2).
Умножаешь вектора ab и ac на n - тем самым задашь расстояние между отрезками A1A2 и B1B2 и C1C2.
Затем прибавляешь к вектору ab точку A1, получишь точку B1, прибавляешь к вектору ab точку A2, получишь точку B2.
Затем прибавляешь к вектору ac точку A1, получишь точку C1, прибавляешь к вектору ac точку A2, получишь точку C2.

Если формулами:
a = A2-A1;
a = normalize(a);
a = a * n;
ab = rotate(a, -90);
ac = rotate(a, 90);
B1 = ab + A1;
B2 = ab + A2;
C1 = ac + A1;
C2 = ac + A2;

a,ab,ac - вектора
A1,A2,B1,B2,C1,C2 - точки
n - число

#9
20:18, 15 ноя 2016

Видать форму регистрации нужно усложнять.

#10
20:25, 15 ноя 2016

нормали посчитать может, значит и перпендикуляр найти может.

ПрограммированиеФорумОбщее

Тема в архиве.