何でもプログラミングスマートフォン用の表示で見る何でもプログラミングこの広告は、90日以上更新していないブログに表示しています。WPF図形を描画する際に、指定した点を通る滑らかな曲線を描きたいことがあります。今回はCatmullRom曲線でこれを実現したいと思います。CatmullRom曲線2点間の補間は、更にその前後の点を利用して求められます。2点(p1、p2)と、その前後の点(p0、p3)の4点から、下記の式にて任意の位置が求められます。Vector2定義System.Windows.Vectorでは演算子が不十分であるため、独自のVector2を下記の様に定義しました。listを持つレコードと、interpolate関数を定義しています。p1Polylineで表示CatmullRom曲線をPolylineで表示してみます。4つの点の間を100分割して表示しています。(始点、終点は複製をしてあるため、入力は6点となっています。上記でのPolyline利用では、ユーザーが補間したものを用意する必要があります。そこでCatmullRom曲線をベジエ曲線に変換して描いてみます。ベジエ曲線2点間の補間は、その他2つのコントロールポイントを利用して求められます。2点(p1、p2)と、コントロールポイント(c1、c2)の4点から、下記の式にて任意の位置が求められます。CatmullRom→ベジエCatmullRomの4点(p0、p1、p2、p3)が与えられたとき、ベジエ曲線のコントロールポイント(c1、c2)は下記の式で与えられます。Pathで描画スタート位置をPathFigureで指定し、残りをPolyBezierSegmentのPointsにバインドすることによりベジエ曲線を描いています。Pointsの中身は(p1、c1_1、c2_2、p2、c2_1、c2_2、p3...)のように、通過点の間にコントロールポイントが挟まっているものになります。Polylineで描画したものと同じ図形であることが確認できます。AMPを利用して画像処理を行ってみたいと思います。月別アーカイブ参加グループプログラミングはてなブログをはじめよう!any-programmingさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。