問題タブ [grahams-scan]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ガハム スキャンを使用して輪郭を計算する
私のコードでは、 というベクトルに格納された点の座標を取得しますmatrix
。ポイントはソートされていないので、ソートする必要があります。輪郭が凸包を形成するかどうかわからないので、グラハム スキャンを修正する必要があります。次の手順を使用することにしました。最初に、凸包へのグラハム スキャンを検索するために使用します。凸包を新しいベクトルに保存します。次に、ベクトルから凸包のポイントを削除しmatrix
ます。次に、残りのポイントを新しいベクトルでのみ並べ替える必要があります。これには、距離と内積を使用します。
このために、Graham scan プログラムを開始しました。私はこのリンクに自分自身を向けました。
だからここに私が今まで持っているものがあります:
そのため、関数GeneratPath
でポイントを並べ替えたいと思います。matrix
このために、2 つのベクトルとを渡す GrahamScan 関数を呼び出しますchull
。GrahamScan
まず、 を使用して y 値が最も低い点を検索しset_p0
ます。次に、ポイントを並べ替える必要があります。したがって、C++ が提供するソート関数を使用します。引数として、関数を使用しますcompare_angle
。私が見つけた元の関数は次のようになります。
テンプレートの関数が構造体ベースになったため、目的に合わせて関数を書き直す必要がありました。しかし、ここでプログラムを送信すると、次のエラー メッセージが表示されます。 Expression: vector iterator + offset out of range.
どこで間違えたのかわかりませんが、残念です。誰かがここで私を助けることができますか?
javascript - グーグルマップに凸包を描く
私はJavaScriptが初めてで、JavaScript用のGoogleマップAPIを使用しています。
これは学校の宿題であり、地図を表示し、位置を取得し、位置を更新するための作業スクリプトといくつかの PHP コードが提供されました。
私たちの仕事は、凸包アルゴリズムを実装することです。
これらは私が問題を抱えているものです:
- 一部のオブジェクトのデータ構造
- 計算した船体のラインをマップに表示する方法
コードは次のとおりです。
私のメインはこんな感じです。
基本的に私が最初に知りたいのは、var final_list が [Object, Object, Object, Object, Object] という構造を持つ理由 (コンソールの出力) です。
このエラーが発生するため: Uncaught TypeError: Cannot read property 'length' of undefined at DrawHull
アルゴリズムを正しい方法で実装したと思いますが、テストすることはできません。
追加情報が必要な場合は、お気軽にお問い合わせください。この質問をより良くするためのヒントも歓迎します [これは私の最初の質問です! そのため、建設的なフィードバックを提供しながら、それを考慮して親切にしてください]
c++ - 凸包アルゴリズム - グラハムスキャン最速の比較関数?
私はすでにグラハム スキャンを実装していますが、私のプログラムのボトルネックは並べ替えです (80% の時間)。私はそれを改善したいと思います、今私は次のことをしています:
これで正確な角度が得られますが、角度関数は次のようになるため、安価ではありません。
Length 関数では、最もコストのかかる操作の 1 つである平方根を実行する必要があります。しかし、このようにして私は良い注文を得ます。
Slope、dot、ccw で配列を並べ替えてみましたが、比較から sqrt を削除するだけでしたが、どれも同じ並べ替えを提供しませんでした。何かアドバイスをいただけますか?