sub_set01へ戻る

名称 ・・・・・・・

ベジエ制御点Pから階差を計算

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

kaisa

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

ベジエ制御点Pの座標値から1〜3段階差を計算する。

使用前提 ・・・・・・・

予めGetnVec(sub_set-012)でベジェ制御点座標を取得しておく。
戻り値を受けるバリアント変数を用意(宣言)しておく。

依存関係 ・・・・・・・

特になし

引数説明 ・・・・・・・

P
XYZ0
XYZ1
XYZ2
XYZ3

(in)ベジエ制御点Pの座標値(1次元、3要素の配列)
(out)P0座標値(1次元、3要素の配列)
(out)第一段階差(1次元、3要素の配列)
(out)第二段階差(1次元、3要素の配列)
(out)第三段階差(1次元、3要素の配列)

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

無し

変数説明 ・・・・・・・

DVec1*(2)
DVec2*(2)
DVec3*(2)

第一段階差用変数
第二段階差用変数
第三段階差用変数
カウンタ用変数

注意点 ・・・・・・・

処理結果は引数で返しています。
より明確にするならば(in)をByValに、(out)をByRef指定にして下さい。

 
スクリプト
'-----------階差の計算(ベジエ制御点Pから階差を計算)
Sub kaisa(P,XYZ0,XYZ1,XYZ2,XYZ3)
'3次のベジエ制御点Pの座標値から1〜3段階差を計算する。
'戻値---無し
'引数---
' P      :(in)ベジエ制御点Pの座標値(1次元、3要素の配列)
' XYZ0   :(out)P0座標値(1次元、3要素の配列)
' XYZ1   :(out)第一段階差(1次元、3要素の配列)
' XYZ2   :(out)第二段階差(1次元、3要素の配列)
' XYZ3   :(out)第三段階差(1次元、3要素の配列)

  Dim DVec11(2), DVec12(2), DVec13(2)   ':第一段階差用変数
  Dim DVec21(2), DVec22(2)              ':第二段階差用変数
  Dim DVec31(2)                         ':第三段階差用変数
  Dim j                                 ':カウンタ用変数(xyz)

  '第一段階差
  For j = 0 To 2
    DVec11(j) = P(1, j) - P(0, j)
    DVec12(j) = P(2, j) - P(1, j)
    DVec13(j) = P(3, j) - P(2, j)
  Next

  '第二段階差
  For j = 0 To 2
    DVec21(j) = DVec12(j) - DVec11(j)
    DVec22(j) = DVec13(j) - DVec12(j)
  Next

  '第三段階差
  For j = 0 To 2
    DVec31(j) = DVec22(j) - DVec21(j)
  Next

  '階差表示の定義
  For j = 0 To 2
    XYZ0(j) = P(0, j)
    XYZ1(j) = DVec11(j)
    XYZ2(j) = DVec21(j)
    XYZ3(j) = DVec31(j)
  Next
End sub
使用例
主サブルーチンの例題を参照してください。

sub_set01へ戻る