[解決済み] 2次元の多角形の面積はどのように計算するのですか?
2023-03-15 19:16:53
質問
2次元空間に自己交差しない点が並んでいると仮定して、得られる多角形の面積を求める効率的な方法は何か?
余談ですが、これは宿題ではなく、私はコードを探しているわけではありません。 私は、私自身の方法を実装するために使用できる説明を探しています。 私は点のリストから三角形のシーケンスをプルすることについて私のアイデアを持っていますが、私はおそらく私がキャッチしない凸と凹の多角形に関するエッジケースの束があることを知っています。
どのように解決するのですか?
ここで 標準的な方法 です。基本的には各頂点の周りのクロスプロダクトを合計します。三角測量よりずっと簡単。
Pythonコードは、(x,y)頂点座標のリストとして表される多角形が与えられると、最後の頂点から最初の頂点へ暗黙のうちに回り込みます。
def area(p):
return 0.5 * abs(sum(x0*y1 - x1*y0
for ((x0, y0), (x1, y1)) in segments(p)))
def segments(p):
return zip(p, p[1:] + [p[0]])
David Lehavi氏のコメントです。このアルゴリズムがなぜ機能するのかを述べておく価値があります。それは グリーンの定理 を応用したものです。 プラニメーター が機能するのと同じです。より具体的には
上記の式 =
integral_over_perimeter(-y dx + x dy) =
integral_over_area((-(-dy)/dy+dx/dx) dy dx) =
2 Area
関連
-
[解決済み] 決定論的クイックソートとは何ですか?
-
[解決済み] log(n!)=Θ(n-log(n))でしょうか?
-
[解決済み] 隣接リスト表現の時間複雑性?
-
[解決済み] アルゴリズムと関数の違いは何ですか?[クローズド]
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 山積みされた靴下を効率よく組み合わせるには?
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み] CSSの三角形はどのように機能するのですか?
-
[解決済み] ビッグ・オー、どうやって計算・概算するんだ?
-
[解決済み] LR、SLR、LALRパーサーの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】whileループの時間複雑性とは?
-
[解決済み] どのようにすれば、ほとんどすべてのアルゴリズムを修正して、最良の場合の実行時間を持つようにできるか?
-
[解決済み] Octave : ロジスティック回帰 : fmincg と fminunc の違い
-
[解決済み] 2進数が3で割れているかどうかを知るには?
-
[解決済み] ユダヤ人の足の爪を切る最適なアルゴリズムとは?
-
[解決済み] 二分探索木におけるk番目の最小要素を最適な方法で探す
-
[解決済み] ユークリッド・アルゴリズムの時間計算量
-
[解決済み] 2つのリンクリストがマージされるかどうかをチェックします。もしそうなら、どこで?
-
[解決済み] エラトステネスの篩アルゴリズムの時間複雑性
-
[解決済み] アルゴリズムで見慣れない記号:∀は何を意味するのか?[クローズド]