バックグラウンド:
さまざまな規則的な形状の頂点のネットワークに関連する大量のデータを処理するプログラムを作成しています。私は、ユーザー入力パラメーターの範囲に基づいて、上記の形状の頂点に対応するデカルト座標のリストを生成する作業ジェネレーターを持っています。データはフィルターに渡され、重複するエントリをクリアし、データを並べ替え、その他のさまざまな機能を実行します。ここから、クリーニングされたデータがキャンバス モジュールに送られ、キャンバス モジュールがループして頂点を描画します。
質問:
座標を効率的にループし、各ペアを他のすべてのペアと比較する新しいフィルターを実装する必要があります。つまり、すべてのエントリについて- (x1,y1)
> (x2,y2)
to (x1,y1)
-> (xn,yn)
、(x2,y2)
-> (x3,y3)
to (x2,y2)
->など。の場合、2 つの座標セットがそれぞれのリスト エントリ番号とペアになり、新しいリストに追加されます。たとえば、1 つのエントリは次の形式になります。これを達成するための最も効率的な方法は何ですか?(xn,yn)
(x1,y1)
(x5,y5)
[(x5-x1)^2+(y5-y1)^2]=vertex_spacing^2
[(x1,y1), (x5,y5), 0, 4]
私の試み:
こことさまざまなガイドで、リストを処理するためのかなりの数の方法を見てきました。ネストされた 'for' ループと 'if' ループを試してみましたが、この方法は機能しますが、実行時間が過度に長くなるだけでなく、問題を多数の小さな for ループに分割しようとしていることがわかりました。
その他の注記:
これの最終的な目的は、結果の座標をフロントエンド インターフェイス要素に使用し、必要に応じて保存およびインポートすることです。リストの位置 0 と 4 の機能は、[(x1,y1), (x5,y5), 0, 4]
キャンバス オブジェクトで後で使用するためにインターフェイスが座標をグループ化できるようにすることです。メソッドは、潜在的に数千の座標を処理できる必要があります。
事前に助けてくれてありがとう、もちろん、私が提供した言い回し/情報を改善したり、私が何を求めているのか不明な場合はサンプルコードを追加したりしたいと思っています-私はまだこれにかなり慣れていません! :)