カーディナル スプラインの描画
カーディナル スプラインとは、特定の点を滑らかに通過する曲線のことです。 カーディナル スプラインを描画するには、 Graphics オブジェクトを作成し、ポイントの配列のアドレスを Graphics::D rawCurve メソッドに 渡します。 次の例では、指定された 5 つのポイントを通過するベル形のカーディナル スプラインを描画します。
Point points[] = {Point(0, 100),
Point(50, 80),
Point(100, 20),
Point(150, 80),
Point(200, 100)};
Pen pen(Color(255, 0, 0, 255));
graphics.DrawCurve(&pen, points, 5);
次の図は、曲線と 5 つの点を示しています。
Graphics クラスの Graphics::D rawClosedCurve メソッドを使用して、閉じたカーディナル スプラインを描画できます。 閉じたカーディナル スプラインでは、曲線は配列の最後の点を通過し、配列の最初の点に接続します。
次の例では、指定された 6 つの点を通過する閉じたカーディナル スプラインを描画します。
Point points[] = {Point(60, 60),
Point(150, 80),
Point(200, 40),
Point(180, 120),
Point(120, 100),
Point(80, 160)};
Pen pen(Color(255, 0, 0, 255));
graphics.DrawClosedCurve(&pen, points, 6);
次の図は、閉じたスプラインと 6 つの点を示しています。
Graphics::D rawCurve メソッドにテンション引数を渡すことで、カーディナル スプラインの曲げ方を変更できます。 次の例では、同じ点のセットを通過する 3 つのカーディナル スプラインを描画します。
Point points[] = {Point(20, 50),
Point(100, 10),
Point(200, 100),
Point(300, 50),
Point(400, 80)};
Pen pen(Color(255, 0, 0, 255));
graphics.DrawCurve(&pen, points, 5, 0.0f); // tension 0.0
graphics.DrawCurve(&pen, points, 5, 0.6f); // tension 0.6
graphics.DrawCurve(&pen, points, 5, 1.0f); // tension 1.0
次の図は、3 本のスプラインとそのテンション値を示しています。 テンションが 0 の場合、点は直線で結ばれることに注意してください。