Layer.drawCurve (曲線)

  1. 文法
  2. 詳細
  3. 引数
  4. 例外
  5. 戻り値
  6. 関連項目

1. 文法

メンバ型
関数
メンバ所有者
global.Layer インスタンス
呼び出し
instance.drawCurve( path, accuracy, type, col, opa, callbackX, callbackY )

2. 詳細

レイヤにパラメトリック曲線を描画します。以下のように描画されます。

単純な折れ線 (tpctPolyline)
ただ線分で繋ぐだけです。
Bスプライン曲線(KAG3のSplineMover相当) (tpctKAG3Spline)
SplineMoverの軌跡です。
3次スプライン開曲線 (tpctCubicSplineOpen)
ありがちな3次スプライン。閉じません。
3次スプライン閉曲線 (tpctCubicSplineClose)
ありがちな3次スプライン。閉じます。
Bスプライン開曲線(チャイキンのアルゴリズム) (tpctChaikinOpen)
始点と終点を通りません。
Bスプライン開曲線(チャイキンのアルゴリズム) (tpctChaikinOpenPST)
始点と終点を通ります。
Bスプライン閉曲線(チャイキンのアルゴリズム) (tpctChaikinClose)
閉じるBスプラインです。
N次 ベジエ曲線 (tpctBezierOpen)
よくあるベジエです。
ラグランジュ補間曲線 (tpctLagrangeInterpolation)

3. 引数

path (Array)
引数typeが tpctUserParametric 以外の場合、制御点の座標を格納した配列を指定します。制御点の座標は x1, y1, x2, y2, x3, y3, ... のように、インターリーブされていなければなりません。必要な制御点の数やインターリーブ方法は、引数typeによって異なります。
引数typeが tpctUserParametric の場合は、コールバック関数callbackX,callbackYの実装に依存します。
accuracy (Integer)
補間精度を指定します。引数typeによって異なりますが、一般的には一区間あたりの平均分割数を指定します。
引数typeの項を参照してください。
type (Integer)
曲線のタイプを指定します。指定できる値と、他の引数との関係は下記のとおりです。
曲線タイプ一覧
type path の指定方法 制御点数 精度 (accuracy) コールバック関数 説明
tpctPolyline x1,y1, x2,y2, ... 2以上 無効 (1と見なす) 無効 単純な折れ線
tpctKAG3Spline x1,y1, x2,y2, ... 3以上 一区間あたりの分割数 無効 Bスプライン曲線(KAG3のSplineMover相当)
tpctCubicSplineOpen x1,y1, x2,y2, ... 2以上 一区間あたりの平均分割数 無効 3次スプライン開曲線
tpctCubicSplineClose x1,y1, x2,y2, ... 3以上(※1) 一区間あたりの平均分割数 無効 3次スプライン閉曲線(※1)
tpctChaikinOpen x1,y1, x2,y2, ... 4以上 一区間あたりの平均分割数 無効 Bスプライン開曲線(チャイキンのアルゴリズム)(※2)
tpctChaikinOpenPST x1,y1, x2,y2, ... 4以上 一区間あたりの平均分割数 無効 Bスプライン開曲線(チャイキンのアルゴリズム)(※3)
tpctChaikinClose x1,y1, x2,y2, ... 4以上(※1) 一区間あたりの平均分割数 無効 Bスプライン閉曲線(チャイキンのアルゴリズム)(※1)
tpctBezierOpen x1,y1, x2,y2, ... 2以上 一区間あたりの平均分割数 無効 N次 ベジエ曲線
tpctLagrangeInterpolation x1,y1, x2,y2, ... 2以上 一区間あたりの平均分割数 無効 ラグランジュ補間曲線(※4)
tpctUserParametric 実装依存 実装依存 始点〜終点の分割数 必須 ユーザ指定曲線
  • (※1)閉曲線の場合、呼び出し側が閉じる(始点と終点を一致させる)必要はありません。プラグイン内部で自動的に終点を追加します。
  • (※2)始点と終点を通りません。
  • (※3)始点と終点を通ります。
  • (※4)ラグランジュ補間曲線はその性質上、制御点の位置や数によって大きく波打ちます。
col (Integer)
色を指定します。
opa (Integer) [default: 255]
不透明度を指定します。
callbackX (Function) [default: null]
callbackY (Function) [default: null]
X座標、Y座標を算出するコールバック関数を指定します。typeが tpctUserParametric のときは必須です。このコールバック関数は、二つの引数を受け取り、それぞれX座標、Y座標を返すTJS2関数オブジェクトです。一つめの引数は、曲線上の位置を表す0.0〜1.0の実数値です。曲線の始点が0.0、曲線の終点が1.0です。二つめの引数は、Layer.drawCurveに渡された引数pathそのものです。戻り値は、レイヤ上のX座標(またはY座標)を表す整数値です。
// アルキメデスの螺旋
// t   : 0.0〜1.0の実数値
// path: drawCurve()の引数path(配列)
function spiral_X (t, path)
{
  var theta = 3.0 * t * 2.0 * Math.PI;
  var radius = (int)(t * 100);
  return radius * Math.cos(theta) + path[0];
}
function spiral_Y (t, path)
{
  var theta = 3.0 * t * 2.0 * Math.PI;
  var radius = (int)(t * 100);
  return radius * Math.sin(theta) + path[1];
}
lay.drawCurve([ 100, 200 ], 20, tpctUserParametric, 0xff0000, 255, spiral_X, spiral_Y);

4. 例外

5. 戻り値

描画したピクセル数。

6. 例

var path = [ 100,50, 200,400, 150,250, 350,100 ];
layer.drawCurve(path, 10, tpctCubicSplineOpen, 0xff0000);

7. 関連項目