2

ユーザーがスタイラスをタブレット上でドラッグすると、一連の座標が表示されます。ペンのパスを滑らかな線で近似し、その後ろの数サンプルポイントのみを追跡する必要があります。これをどのように行いますか?

言い換えれば、ユーザーがタブレットで線を描くときに、どのようにすてきな滑らかなレスポンシブ線をレンダリングしますか?点を直線で結ぶだけでは不十分です。実際の描画プログラムは、サンプルポイントがどれほど近くても遠くても、線を曲げるのにはるかに優れています。ペンや手の揺れを考慮して、実行するスムージングの量を示す番号を付けることもできます。どこでこのようなことを学ぶことができますか?

4

2 に答える 2

3

これは古い質問ですが、同じ問題が発生し、2つの異なる解決策がありました。

  • 最初のアプローチは、2つの解像度を使用することです。1つは、ユーザーがそれらを直線で結ぶパスポイントを挿入する場合です。2つ目は、ユーザーがストロークを終了したら、線を削除してスプラインを描画します。それは直線よりも滑らかでなければなりません。

  • 2番目のアプローチは、サンプリングされたポイントの加重平均を使用して新しいポイントを平滑化することです。したがって、直接ペイントするのではなく、新しいポイント[x1、y1]を取得するたびに、前のポイント[x2、y2]を取得し、2つのポイントの加重平均を使用して新しい中間ポイントを作成します。擬似コードは次のようになります。

    newPoint = [x1,y1];
     oldPoint = [x2,y2];
    
     point2Paint = [(x1*0.3) + (x2*0.7), (y1*0.3) + (y2*0.7)];
     oldPoint= newPoint;
    

加重平均の係数が0.7と0.3であるため(これらを変更して、目的の平滑化を行うことができます:)

これがお役に立てば幸いです

更新12月13日:これは、さまざまな描画方法を説明する記事です。適用できる優れた概念があります(エッジスムージング、ベジェ曲線、滑らかなジョイント)

http://perfectionkills.com/exploring-canvas-drawing-techniques

于 2011-02-16T19:17:25.390 に答える
0

私はこれらを(学術目的でのみ)実装する必要はありませんでしたが、ウィキペディアの補間記事をご覧になることをお勧めします。

記事からの抜粋:

内挿は、既知のデータポイントの離散セットの範囲内で新しいデータポイントを構築する方法です。

工学や科学では、サンプリングや実験によって得られた多くのデータポイントがあり、それらのデータポイントにぴったり合う関数を構築しようとします。これは、カーブフィッティングまたは回帰分析と呼ばれます。内挿はカーブフィッティングの特定のケースであり、関数はデータポイントを正確に通過する必要があります。

それが役に立てば幸い。

于 2009-08-28T04:40:02.017 に答える