sub_set03へ戻る

名称 ・・・・・・・

3次元ベクトルの外積

ルーチン名 ・・・・・・・

crossProduct3

スクリプトNo ・・・・・・・ sub_set03- 005
file名 ・・・・・・・ ScriptSet03.lzh
sub_set03のページからセットごとダウンロードしてください。
概略 ・・・・・・・

2つのベクトルの外積を計算します。

使用例実行結果

これはスクリプトのtest()にある機能確認スクリプトを実行して「crossProduct3」ルーチンの結果を描画させたものです。

左図の黄色がvec1,vec2でこの2つの外積が赤いベクトルとなる。

紫の矢印はベクトルの向きを示しています。

外積の場合かける順序が違うと結果が変わっていきます。

使用前提 ・・・・・・・

戻り値を受け取る通常のバリアント変数(配列では無く)を宣言して用意しておく。

依存関係 ・・・・・・・

特になし

引数説明 ・・・・・・・

vec1
vec2

最初のベクトル
2番目のベクトル(vec1にかけるベクトル)

戻り値説明 ・・・・・・・

外積が戻ります  3次のベクトル [vec(2)形式]  通常のバリアント変数で受ける

変数説明 ・・・・・・・

CrossPro

一時記憶変数

注意点 ・・・・・・・

引数の順番によって結果が違ってきます。vec1×vec2 なら引数は (vec1,vec2) の順になります。

 
スクリプト
'---外積を計算する(3次元ベクトル)-----------------------
function CrossProduct3(vec1,vec2)
  dim CrossPro(2)
  CrossPro(0)=vec1(1)*vec2(2)-vec1(2)*vec2(1)
  CrossPro(1)=vec1(2)*vec2(0)-vec1(0)*vec2(2)
  CrossPro(2)=vec1(0)*vec2(1)-vec1(1)*vec2(0)
  CrossProduct3=CrossPro
end function

使用例
'ベクトルの外積のテスト
'変数はスクリプトのtest()を参照  
  dim vecResult
  vecResult=CrossProduct3(vec1,vec2)
  for j=0 to 2
    XShade.Message"j="&j&"  ans="&vecResult(j)
  next
  drawVec pos0,vec1
  drawVec pos0,vec2
  drawVec pos0,vecResult
  ColorSet Red
  XShade.ObjectName="外積"
  XShade.SelectParent 1

sub_set03へ戻る