2010-11-19 5 views
2

いくつかの空間座標と時間座標に基づいて、<canvas>要素にポリラインを描画するためにJavascriptを使用しています。時間point.timeで我々はpoint.x/point.yに追加セグメントとポリラインを延長することを意味Javascript/canvas:ポリラインをリアルタイムで描画します。最適なデータ構造は何ですか?

* point.x 
* point.y 
* point.time 

:具体的には、ライン内の各点は、以下の特性を有しています。時間ベースであるため、すべてのポイントのセットのデータ構造は、アクセス時間に関して可能な限り効率的であることが不可欠です。

私は直観的に、3 x N要素(N個のノード用)を持つ単純な配列がうまくいくと考えています。

適切な構造について他に提案がありますか?

答えて

1

あなたはポインタなどにアクセスできません。したがって、基本的にはJavaScriptの配列とオブジェクトに委ねられています。

問題は非常に簡単で、線形アクセスのみが必要なため、[x, y, t, x, y, t, x, y, t]アレイが実際にアクセスする最速の方法になるはずです。

ただし、データへのアクセスはここでの制限要因ではありません。特にハードウェアアクセラレーションのないブラウザ(これはまだ大多数です)での描画パフォーマンスは<canvas>です非常に大きなキャンバス、または短い時間内に多くの行が表示されます。

ああ、最後のではなく、少なくとも、それをテストし、覚えて、パフォーマンスに関する仮定をしないでください。
私はその点がオブジェクトのオブジェクトだった好む

1

「時期尚早の最適化は諸悪の根源です」 、

point = { 
     <time1> : { 
     x : ... , 
     y : ... 
     }, 
     <time2> : { 
     x : ... , 
     y : ... 
     }, 
     ... 

    } 

等の座標を格納するタイムキー、(私はよく理解されている場合)、XおよびYは、特定の時間に関連しているので、あなたは、point.time.xpoint.time.yと直接アクセスできる

代わりにフラットな配列に特定の時間が与えられているので、xとyを取り出すためにオフセット演算を行うべきであり、それほどエレガントではない

関連する問題