2016-05-16 3 views
4

私はパスを一括して記述するx、yタプルのリストを持っています(つまり、速度が一定ではないにもかかわらず一定の割合でサンプリングされたマウスアクティビティ)。補間されたパス(Python2.7)に沿って偶数距離を計算する方法は?

私の目標は、一定の割合でそのパスをアニメーション化することです。だから私は曲がっているセグメントと直線的なセグメントと任意の2点間のデルタ - dは同じであることが保証されていません。そのリストの長さは、〜1K-2K点である各点間のブルートフォースカウント線分の長さ以外にどのような方法があり、その後、すべてのn長さaを指定

[(0,0), (0,2), (4,6).... ]:様

与えられるデータ「フレーム」?

答えて

1

Numpy配列を使用してデータを表現すると、計算をベクトル化できます。それはあなたが得るほど効率的です。

0

パンダでこれを行うにはエレガントな方法がありますが、それまでは何らかのエラーで生きていけるかどうかという単純な考え方があります。これを行うにはいくつかの異なる方法がありますが、ここにその要点があります:

各タプルをリンクリストのノードとして扱います。各ポイントの間に希望の長さ、Dを定義します。リスト内を移動するときに、次のノードが現在のノードから距離Dでない場合は、それに応じて現在のノードから距離Dになるようにx、y座標を調整します(または必要に応じてノードを挿入/削除します)。ノードを接続する線分。

私が言ったように、元のポイントが調整/削除されるため、いくつかのエラーが発生する必要があります。この前にポイントを生成してより多くの解決策を作成すると、おそらくエラーを軽減できます。

+0

ええと、これは、あなたが避けることを望んでいた "ブルートフォース"アプローチのように思えます。 –

+0

ええ、これは私がやったことです。それは私が推測していたよりもはるかに速いので、私はあまり心配していませんが、非CSの人として、これを行うためのより効率的な方法がおそらくあるということでした。 – Jonline

0

たとえば、次のような点の間のパスを近似するとします。 tuple1、次のタプルが、tuple2次いで、直線である:

abs(complex(tuple2[0]-tuple1[0], tuple2[1]-tuple1[1])) 

はあなたにそれらの2点間の横断長さを与え、合計はその全長であろう。これを合計時間で割ったものは、単位時間内にトラバースする長さになります。それでもなおブルートフォースですが、おそらくそれを行うより効率的な方法です。特に、リスト関数で合計関数を使用する場合にはそうです。マークとして。ノートでは、サンプリングの分解能を上げることができれば近似が改善されます。

+0

上記の私のコメントを参照してください – Jonline

関連する問題