|
|
●解説 マウスドローなどで描かれた曲線は、必要以上に点数が多い、曲線が細かく振れているなどの弊害が見受けられる。下図参照。ここでは、曲線を構成する点を再構成し、点数を適正化し、同時に曲線に滑らかさを得るような方法を紹介する。
●原理 単純に点を間引いても良さそうであるが、点密度が偏ってしまう可能性があり、何らかのアルゴリズムが必要となる。ここでは、得られた曲線を有効な距離分解能で再構成し、点を振り直し、改めてスプライン補間すると言うアルゴリズムを採用する。有効な距離分解能は、見た目で(全長、最小の意味のある曲がり具合など考慮)単位となる距離を指定するものとする。結果として、点の進行方向の点密度が一定となる。但し、曲線の曲率に応じた点密度の変化はない。 上図のように、オリジナルの点を距離を計算しながら辿り、ΔLづつ新しい点(新しい点間の直線距離がΔLではない)を決めてゆく。新しい点で、スプライン補間すると、結局スムージングされ、点数も減る。 ●方法
●実例 ○例1:一次線形補間 この場合、不要な凹凸が全くなくなったり、不自然なピーク点が採用される可能性がある。 CL()は元の曲線(fps())の線長テーブル
Dim i, LM, n As Integer GetCurveParamはここを参照。 ○例2:近傍2〜4点から求める 新しい点を近傍2〜4点から求める方法もある。この場合は、不要な凹凸を全体として減少させる方向となる。不自然なピークは減少する方向となる。 ksは近傍点の始まり、keはその終わり 距離に対応する点の位置によって、近傍点数が変わる
For
i = 1 To c - 1
・・・・・・・・・・・・・・・・・・・・・・・・ |