N88-BASICでベクトル (1回目)

2022/3/3(木)


N88-BASICでベクトル (1回目)

 
ベクトルの内積
 












 
1 a・b = axbx + ayby
 
ベクトルaとbの内積はa・b = |a||b|cosθ
なので,|b|をaに垂直に落とした陰の長さ
|b|cosθと|a|の積になり、ベクトルbを
90°回転したベクトルb'とaが作る
平行四辺形の面積と考える事が出来ます
|b|cosθ=|b'|cosθ=平行四辺形の高さ
|a|が底辺です
 
1を見ると、axbx + ayby が平行四辺形の
面積と同じなので、a・b = axbx + ayby 
なります(黄色同士と水色同士を見る)
(a,b,b'ベクトルの成分はマス目の数を
見ると分かり易いと思います)
 
別の導き方、
ここから、ベクトルを大文字で表し、
A=(a0,a1,a2)と成分表記する事にします
Eiを各(直交)座標軸の単位ベクトルとすると、
A = ΣaiEi EiEi = 1 、EiEj = 0(i≠j)
A・B = (ΣaiEi)・(ΣbiEi) = Σaibi
となり、各ベクトルの同じ成分同士の積の和
になります
3次元なら、a・b = axbx+ayby+azbz です
A・B = |a||b|cosθより、cosθ = A・B/(|a||b|)
なので、cosの逆関数を使えば2つのベクトルの
なす角がわかります
N88-BASICではtanの逆関数しかないので、
tanθ = sinθ/cosθ
      = √{(1-cosθcosθ)/(cosθcosθ)}
      = √{1/(cosθcosθ) - 1}
      = √[|a||b||a||b|/{(A・B)(A・B)} - 1]
を使用します
a・b    = axbx + ayby
|a||a| = axax + ayay
|b||b| = bxbx + byby
からx = tanθを求めて、
t  = Tan-1(x)で角度tが求まります
tがラジアンの場合
θ = 180t/πで角度θ(°)が求まります
ただし、|a||b|=0なら角度不明
a・b < 0の時は180-θです
 
また
Tan-1(1) = π/4を利用してπを求める事ができます
 
Tan-1(x)はBASICではATN(X)です
 
以下のサンプルは、
マウスの左クリックでベクトルB
      右クリックでベクトルA
が移動して、なす角が表示されます
 
NL-BASICとblg~.zip(vec001.bas)は
以下のリンクからダウンロードできます


https://ulprojectmail.blogspot.com
Readme.txtを読んで遊んで下さい
 
 
 
















このブログの人気の投稿

NEWS

N88-BASICでゲーム (1回目)