名称 | ・・・・・・・ |
2点から単位ベクトル計算 |
ルーチン名 | ・・・・・・・ |
GetEVec |
スクリプトNo | ・・・・・・・ | sub- 007 |
file名 | ・・・・・・・ | script007.vbs(右クリックのコンテクストメニューでダウンロードできます。(windowsのみ) 修正(2003/05/26)UTF-8からANSIに統一。 |
概略 | ・・・・・・・ |
始点と終点の座標データから始点から終点方向への単位ベクトルを計算する |
使用前提 | ・・・・・・・ |
始点と終点の座標値を一次の配列で用意しておく |
依存関係 | ・・・・・・・ |
特に無し |
引数説明 | ・・・・・・・ |
pos1:始点の座標データ配列 (pos1(0):x座標値、pos1(1):y座標値、pos(2):z座標値) |
戻り値説明 | ・・・・・・・ |
true:成功 false:失敗 |
変数説明 | ・・・・・・・ |
D:計算途中結果を一時保管する変数 |
注意点 | ・・・・・・・ |
pos1とpos2が同じデータの場合この関数は失敗(falseを返す)する。 |
  | ||
スクリプト | ||
'与えられた2点の座標データから単位ベクトルを計算する。 function GetEVec(pos1,pos2,eVec) dim D,delta(2),j D=0 for j=0 to 2 delta(j)=pos2(j)-pos1(j) D=D+delta(j)^2 next if D=0 then GetEVec=false Exit Function end if D=D^(1/2) for j=0 to 2 eVec(j)=delta(j)/D next GetEVec=true end function |
||
使用例 | ||
'座標データをmainルーチンで与えGetEVec関数で距離を求めるサンプル。 call main() sub main() dim pt1(2),pt2(2),eV(2) '座標データの設定 pt1(0)=100 pt1(1)=200 pt1(2)=150 pt2(0)=1200 pt2(1)=1500 pt2(2)=1300 '単位ベクトル計算ルーチンの呼び出し if not GetEVec(pt1,pt2,eV) then XShade.ShowMessageBox "始点と終点が同位置になっていないか確認してください",false Exit sub else for j=0 to 2 eV(j)=Int(eV(j)*1000)/1000 '表示用に小数点以下3位でまるめる。 next end if XShade.message("---始点から終点への単位ベクトル---") XShade.message("eVec["&eV(0)&","&eV(1)&","&eV(2)&"] です。") end sub |