次の方法で共有


GDI+ のカーディナル スプライン

カーディナル スプラインは、より大きな曲線を形成するために結合された個々の曲線のシーケンスです。 スプラインは、点の配列とテンション パラメータによって指定されます。 カーディナル スプラインは、配列内の各ポイントをスムーズに通過します。鋭い角がなく、曲線の締まりの急激な変化もありません。 次の図は、一連のポイントと、セット内の各ポイントを通過するカーディナル スプラインを示しています。

カーディナル スプライン

物理スプラインと数学スプライン

物理的なスプラインは、薄い木材またはその他の柔軟な材料です。 数学的スプラインが出現する前、設計者は物理スプラインを使用して曲線を描画しました。 デザイナーは、スプラインを紙の上に配置し、特定のポイント セットに固定します。 その後、デザイナーは、スプラインに沿ってペンまたは鉛筆で描画することで曲線を作成できます。 ポイントのセットを指定すると、物理スプラインのプロパティに応じて、さまざまな曲線が生成される可能性があります。 たとえば、曲げに対する抵抗が高いスプラインは、非常に柔軟なスプラインとは異なる曲線を生成します。

数学的スプラインの数式は柔軟なロッドの特性に基づいているため、数学スプラインによって生成される曲線は、かつて物理スプラインによって生成された曲線に似ています。 異なる張力の物理的なスプラインは、特定のポイントセットを通じて異なる曲線を生成するのと同様に、テンションパラメータの異なる値を持つ数学的スプラインは、特定の点のセットを通じて異なる曲線を生成します。 次の図は、同じ点のセットを通過する 4 つのカーディナル スプラインを示しています。 各スプラインの張力が表示されます。 0 の張力は無限の物理的な張力に対応し、ポイント間の最短の方法 (直線) を曲線に強制します。 1 の張力は物理的な張力に対応しないため、スプラインは最小合計曲げのパスを取得できます。 テンション値が 1 より大きい場合、曲線は圧縮されたばねのように動作し、長いパスを取るようにプッシュされます。

カーディナル スプライン

上の図の 4 つのスプラインは、始点で同じ接線を共有しています。 接線は、始点から曲線に沿った次の点まで描画される直線です。 同様に、終点の共有接線は、終点から曲線上の前の点まで描画される線です。

カーディナル スプラインを描画するには、Graphics クラスのインスタンス、Pen、および Point オブジェクトの配列が必要です。Graphics クラスのインスタンスは、スプラインを描画する DrawCurve メソッドを提供し、Pen はスプラインの属性 (線の幅や色など) を格納します。 Point オブジェクトの配列は、曲線が通過する点を格納します。 次のコード例は、myPointArrayのポイントを通過するカーディナル スプラインを描画する方法を示しています。 3 番目のパラメーターはテンションです。

myGraphics.DrawCurve(myPen, myPointArray, 1.5f);
myGraphics.DrawCurve(myPen, myPointArray, 1.5F)

関連項目