名称 | ・・・・・・・ |
3次元ベクトルの正規化 |
|||
ルーチン名 | ・・・・・・・ |
normVec3 |
|||
スクリプトNo | ・・・・・・・ | sub_set03- 008 | |||
file名 | ・・・・・・・ | ScriptSet03.lzh sub_set03のページからセットごとダウンロードしてください。 |
|||
概略 | ・・・・・・・ |
指定したベクトルを正規化(単位ベクトル化)したものを返します。 |
|||
|
|||||
使用前提 | ・・・・・・・ |
戻り値を受け取る通常のバリアント変数(配列では無く)を宣言して用意しておく。 |
|||
依存関係 | ・・・・・・・ |
特になし |
|||
引数説明 | ・・・・・・・ |
vec |
:正規化したいベクトル [vec(2)形式] |
||
戻り値説明 | ・・・・・・・ |
正規化されたベクトル [vec(2)形式] 通常のバリアント変数で受け取る |
|||
変数説明 | ・・・・・・・ |
D |
:計算用一時変数 |
||
注意点 | ・・・・・・・ |
計算結果は戻り値で返ります。 |
|||
スクリプト | |||||
'---ベクトルの正規化。---------------------------------- function normVec3(vec) dim D,j,newVec(2) D=0 for j=0 to 2 D=D+vec(j)^2 next D=D^(1/2) if D=0.0 then normVec3=false exit function end if for j=0 to 2 newVec(j)=Vec(j)/D next normVec3=newVec end function |
|||||
使用例 | |||||
'ベクトルの正規化のテスト '(注)正規化されたベクトルは非常に小さいので拡大してみてください。 '変数はスクリプトのtest()を参照 dim vecResult vecResult=normVec3(vec1) if IsArray(vecResult) then for j=0 to 2 XShade.Message"j="&j&" ans="&vecResult(j) next drawVec pos0,vec1 XShade.ObjectName="元のベクトル" drawVec pos0,vecResult ColorSet Red XShade.ObjectName="単位ベクトル" else XShade.Message"vec1には大きさがありません" end if XShade.SelectParent 1 |