名称 | ・・・・・・・ |
確認用のShade上へのテスト描画 |
|
ルーチン名 | ・・・・・・・ |
testDrawLine |
|
スクリプトNo | ・・・・・・・ | sub_set01- 009 | |
file名 | ・・・・・・・ | ScriptSet01.lzh sub_set01のページからセットごとダウンロードしてください。 |
|
概略 | ・・・・・・・ |
eVecSessen,eVecHousen,eVecJihouの結果をShade上にテスト描画する為のサブルーチンです。 |
|
使用前提 | ・・・・・・・ |
線形状(べジェ曲線)を選択して適切な引数を指定してから実行する。 |
|
依存関係 | ・・・・・・・ |
特に無し |
直接的に関係するサブルーチンは無し。 |
引数説明 | ・・・・・・・ |
eVec |
(in)方向ベクトル。 eVecSessenなどの戻り値 |
戻り値説明 | ・・・・・・・ |
なし |
|
変数説明 | ・・・・・・・ |
なし |
|
注意点 | ・・・・・・・ |
基本的にeVecSessen,eVecHousen,eVecJihouの結果をShade上で確認する為に作成したものなので汎用性は全くありません。 |
|
スクリプト | |||
'----------------------------描画テストプロシージャ sub testDrawLine(eVec,Pos,PtNo,tb,l) '計算された接線、法線、次法線を確認するためにtest描画する '戻値---無し '引数--- ' eVec :(in)方向ベクトル ' Pos :(in)描画開始ポイントの座標値 ' PtNo :(in)アンカーポイントの番号 ' tb :(in)ベジェパラメータ(値を表示するだけに使う) ' l :(in)描画する線分の長さ '除算で分母がゼロになる場合の処理 if eVec(0) or eVec(1) or eVec(2) then XShade.Message"eVec=( "&round(eVec(0)*100)/100&" , "_ &round(eVec(1)*100)/100&" , "&round(eVec(2)*100)/100&" )" XShade.Message"Pos=( "&round(Pos(0)*100)/100&" , "_ &round(Pos(1)*100)/100&" , "&round(Pos(2)*100)/100&" )" else XShade.Message"方向ベクトルがゼロベクトルなので描画できません。" end if '曲線上の指定されたベジェパラメータ位置にポイントを追加する XShade.InsertControlPoint(PtNo+tb) 'ラインを描画する XShade.StartPolygon(0) XShade.AppendPoint Pos(0),Pos(1),Pos(2) XShade.AppendPoint Pos(0)+l*eVec(0),Pos(1)+l*eVec(1),Pos(2)+l*eVec(2) XShade.FinishPolygon() XShade.SelectSister 1 End Sub |
|||
使用例 | |||
Dim NA,Vec3,PtNo Dim eVec,Pos,tb,L '-------------------ベジェ曲線でtを指定し、その点の接線の単位ベクトルを計算 ' (アンカーポイント番号PtNo〜PtNo+1の部分が対象) PtNo=0: tb=0.55: L=400 eVec=eVecJihou(Vec3,PtNo,tb) if not IsArray(eVec) then exit sub Pos=calcPos(Vec3,PtNo,tb) Call testDrawLine(eVec,Pos,PtNo,tb,L) |