Войти
ПрограммированиеФорумФизика

Перпендикулярный вектор.

#0
1:16, 20 янв. 2008

Допустим имеем 2d вектор v(x,y), как найти перпендикулярный к нему вектор n.

Например:

v = (1,0);
n = (0,-1);


#1
1:38, 20 янв. 2008

Через векторное в 3д пространстве.

#2
1:55, 20 янв. 2008

вектор v = (x, y)
перпендикуляр в 2д - n = (-y, x)

#3
2:07, 20 янв. 2008

Ex3NDR Точно! Спасибо.

Lion007 Это не пашет для векторов с любимы координатами.

#4
2:26, 20 янв. 2008

Lion007
+1
MuHAOS
>Это не пашет для векторов с любимы координатами.
пример?

#5
2:38, 20 янв. 2008

как говорится - no comments. для особо неверующих - http://mathworld.wolfram.com/PerpendicularVector.html
и то же самое, но ручками

  V = (x, y) -> (x, y, 0)
  Z =           (0, 0, 1) - очевидно, что он перпендикулярен любому вектору в плоскости
  
  считаем N как векторное произведение N = Z x V
  
  в общем случае - A x B = (A.y*B.z - A.z*B.y, A.z*B.x - A.x*B.z, A.x*B.y - A.y*B.x)
  перепишем для нашего конкретного случая
        
  N = Z x V = (Z.y*V.z - Z.z*V.y, Z.z*V.x - Z.x*V.z, Z.x*V.y - Z.y*V.x) = // подставляем нолики - единички
              (0  *0   - 1  *V.y, 1  *V.x - 0  *0  , 0  *V.y - 0  *V.x) = //уберем ненужные нули и умножения на 1, получим сухой остаток
              (        -     V.y,     V.x          , 0                ) =
              (-V.y, V.x, 0) = (-V.y, V.x)
        
  это и будет перпендикуляр. что и требовалось доказать.

#6
4:14, 20 янв. 2008

Спасибо за ответы! Тема закрыта.

#7
11:14, 20 янв. 2008

MuHAOS
Еще можно воспользоваться геометрическими формулами:
x' = xcosa - ysina
y' = xsina + ycosa
Это будет очень эффективно, если у вас имеется высокопроизводительная реализация cos/sin.

#8
11:19, 20 янв. 2008

DimanX
>Это будет очень эффективно, если у вас имеется высокопроизводительная реализация cos/sin.
реализация 4 x cos/sin быстрее операции присваивания :D

ПрограммированиеФорумФизика

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