|
分類:[.NET 全般]
VB.NETを使って、 ある図形をスプライン補間したいと考えています。
Dim Pt(3) As Point Pt(0) = New Point(0, 0) Pt(1) = New Point(0, 1) Pt(2) = New Point(1, 1) Pt(3) = New Point(1, 0)
Dim GP As New GraphicsPath GP.Reset() GP.AddCurve(Pt, 0.5) GP.Flatten()
Dim PathPoints2 = GP.PathPoints
のようにして、スプライン補間した座標系を取得することができます。
この後で、Pt(1)とPt(2)の間の30%の位置にある ポイントの座標を取得したいと思います。
そのためには、Pt(1)のポイントがPathPoints2の配列の中で どこに相当するかを調べる必要があります。
これはいちいちFor文を使って調べるしかないのでしょうか?
もし、Pt配列の全てのポイントが異なる座標であれば これでうまくいくかも知れませんが、 同じ座標が複数含まれていると、for文の方法だと 別のポイントと間違ってしまうこともあり得ると思います。
この場合、どのようにすれば良いですか?
あるいはFlattenする際に、 元のポイント数が2倍とか三倍に増やすみたいな設定があれば 元のポイントがどこに移ったのか容易に調べられると思いますが このようなことはできないのでしょうか?
|