はじめまして
アルゴリズムについてこちらで質問していいのかわからないのですが、
質問させて頂きます。
マウスがスクリーンの中を通過した座標を記録し、
それら座標の動きをベジェの制御点、あるいはスプラインなど(種類は問いません)
曲線として必要最小限の座標点(および制御点)に逆算したいと思っています。
(要はマウスの軌跡を曲線で再現するということです)
が、自分の力ではそれらしいヒントを得ることはできませんでした。
記録した座標の近似値を合成し、
それらをスプライン、Catmull-Romなどで補間をしてみましたが
急激に座標が飛んだりすると元の座標から大きくずれてしまい、
思うような結果になりませんでした。
何かアルゴリズムのようなものがあるのでしょうか。
おわかりの方がいれば教えてください。
よろしくお願いします。
> かもねぎさん
情報ありがとうございました。
ちょっとうまく言えなかったんですが、
マウスの軌跡を曲線補間された座標とし
曲線座標とその制御点を逆算、または擬似再現する方法は
ないかなといった感じでした。
これは数学のジャンルでしょうかね。。
度重なる補足すみません。
マウスを使った例えでしたが、マウスを動かすのではなく、
座標の変換に焦点を置いていました。
曲線・グラフ総覧
聖文社
ISBN4-7922-0070-9
http://www.seibunshinsha.co.jp/books/ISBN4-7922-0070-9.html
もしかしたら参考になるかも・・
> 記録した座標の近似値を合成し、
> それらをスプライン、Catmull-Romなどで補間をしてみましたが
> 急激に座標が飛んだりすると元の座標から大きくずれてしまい、
> 思うような結果になりませんでした。
補間の方法は複数あるようですが、区分と区分を結ぶ点で、
一次導関数と二次導関数(もしかしたら三次まで)が連続しているならば、
滑らかにつながっているとみなしてよいと思います。
急激に座標が飛ぶということは、思うような結果を表現するには、
元となる情報が足りないのでしょう。原理的に不可能だと思います。
5yenさんの表現したい曲線の特長によっては、より効果的な補間が
可能かもしれませんが、汎用的な方法はないでしょう。
# 会社の光学式マウスは、たまに「ぽーん」てカーソルが飛びます。チクショウ…
以前Windows for Pen で似たような課題に取り組みましたが、
ベジエ曲線のパラメータを自動算定するのは思ったよりも
簡単ではありませんでした。
開始点近傍では、取得点数が足りないため補間演算ができず、
過去方向に実際には入力されなかった点を追加したりした
記憶があります(笑)。もっともこのあたりは対象アプリケー
ションの目的と性格によると思いますが・・・。
> かもねぎさん
参考にしてみようと思います。
ありがとうございました。
> たいちうさん
ご返答ありがとうございます。
補間について他にも調べてみた結果、たいちうさんの言うように
問題は補間ではなく、突然座標が飛んでしまうような
足りない座標点にあるようでした。
情報がなければ補間ができない、当然ですね…。
その事から曲線ではなくこれまでの座標点を分析し
不足部分であろうと思える部分を補うことでオリジナルに近くなりました。
もう少し踏み込めば解決の糸口が掴めそうです。
問題にしていた事が間違っていたのに気づくことができましたので、
もう少し頑張ってみようと思います。
ご意見ありがとうございました。
書き込み中にご返答があったようで、勝手に解決してしまって失礼しました。
> シャノンさん
# よくあります。
> 仲澤さん
恐らくしようとしていることは同じ感じです。
対象アプリケーションはペイントソフトなので、
タブレットのAPI (TabWinでしたか) を使用した方が良いのかもしれません。
曲線がどうこうよりも、やはり入力された座標自体を
分析・解析するしかないんですね…。
とてもヒントになりました。ありがとうございます。