直交ベクトルを求めるには?

orthogonal.png

2D編

理論的に

直交してるってことは内積が0だってこと
2つのベクトルA,Bがあるとする

(1)
\begin{equation} A_xB_x+A_yB_y=0 \end{equation}

すなわち

(2)
\begin{align} |A||B|cos\theta=0 \end{align}

かつ、外積が1ってことでもある

(3)
\begin{align} |A||B|sin\theta=1 \end{align}
(4)
\begin{equation} A_xB_y-A_yB_x=1 \end{equation}

内積と外積の連立方程式をとると

(5)
\begin{align} A_xB_x+A_yB_y=0\\ A_xB_y-A_yB_x=1 \end{align}

うまくいくコード

裏技的に、互いに正規化されたベクトルであるという前提だったら

a.x=-b.y;
a.y=b.x;

なぜかこれでうまくいった。
内積の公式をあてはめると、たしかにパズルチックにうまくいくよね。
a.x=b.y;
a.y=-b.x;

でも内積のパズルはうまくいくけど、これは左手座標系になる。
ここにはきっと外積がからんでるんだ。

line

サポートサイト Wikidot.com line