No.3ベストアンサー
- 回答日時:
凸多角形になることが保証されているなら, 例えば
1. y座標が最小の点を見つける
2. その点から他の各点を結んだ直線の, x軸からの偏角を求める
3. 偏角の小さい順にソートする
でできるはず.
一般的には Jarvis march (ジャービスの行進) とかで調べてくれ.
No.2
- 回答日時:
とりあえず
P(0)→P(1)→P(2)→・・・→P(n)→P(0)
と結ぶ。この状態では複数の線分が交差している可能性がある。
[外側のループ]
P(0)→P(1)、P(1)→P(2)、P(3)→P(4)、…、P(n-1)→P(n)のそれぞれの線分に対して、順番に[内側のループ]の処理を行う。
[内側のループ]
今外側のループでP(r)→P(r+1)が選択されていると仮定する。
P(r+2)→P(r+3)、P(r+3)→P(r+4)、…、P(n)→P(0)のそれぞれがP(r)→P(r+1)と交差するかどうか調べる。
もしP(s)→P(s+1)が交差していたら、P(r+1)~P(s)の範囲の座標を全て逆転させる(これで交差が1つ解消される。でもまだP(r)→P(r+1)に対して交差が残っているかもしれない)。
例えば今、P(5)→P(6)とP(9)→P(10)が交差していたら、入れ替えた後では、
…、P(4)、P(5)、P(9)、P(8)、P(7)、P(6)、P(10)、P(11)、…
となる。でもこれは改めて以後
…、P(4)、P(5)、P(6)、P(7)、P(8)、P(9)、P(10)、P(11)、…
と呼ばれることになる。
交差が無くなったら外側のループに戻って外側の線分を次の線分にする。
つまり今回の場合は全ての線分が互いに交差しなくなれば凸多角形になっているはず。
No.1
- 回答日時:
P(0),P(1)・・・P(n) が凸多角形を形成できることが保障されているならば、
(1) 求める多角形の初期値として Poly := [P(0), P(1), P(2)] とする。
(2) k := (Poly の要素数) とし、P(k) に対して、(Poly[0], Poly[1]), (Poly[1], Poly[2]),..., (Poly[k - 2], Poly[k - 1]), (Poly[k - 1], Poly[0]) のうち最も距離が近い線分(直線ではなく)を求める。
(2-1) (2) で求めた線分が (Poly[k - 1], Poly[0]) の時: Poly の末尾に P(k) を追加する。
(2-2) 上記を満たさない、すなわち、(2) で求めた線分が (Poly[m], Poly[m + 1]) の時: Poly の m 番目の要素の後に P(k) を追加する。
(3) Poly の要素数が n になるまで (2) へ。
でできる、と思うんだけどどうかなぁ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 凸多角形を用いた正方形の作図 4 2022/04/03 21:57
- 数学 数学B 正四面体の第4の頂点 3 2022/06/06 08:40
- 物理学 角運動量の式変形が分かりません。 4 2022/08/03 21:04
- 数学 空間ベクトル(重心) 1,2,3/4,5,6/7,8,9 の座標空間上の三角形の重心が 4,5,6に 1 2023/04/09 20:04
- 数学 ベクトル方程式(ヘッセの標準形)についての質問 2 2022/04/23 18:00
- 数学 線形代数の2次元直交座標系、極座標系についての問題がわからないです。 2 2022/07/16 20:42
- 物理学 角速度ベクトルにつきまして 3 2022/08/09 15:44
- 中学校 中1数学 比例のグラフの座標の読み取り 4 2023/03/28 12:26
- 数学 y=sinx(0<x<2π)の時の曲線の凹凸を調べよ。また、変曲点があればその座標を求めよ。という問 3 2023/06/24 22:21
- 物理学 量子力学 球面調和関数 導出 方位角成分 微分方程式の解 2 2022/07/02 13:40
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
始点、終点の二つの座標と半径...
-
エクセルである点からの距離で...
-
マインクラフト(pc版)で座標...
-
エクセルで回転する座標の出し方
-
Excel VBAでマウス移動&ダブル...
-
測地系の座標変換の方法を教え...
-
多角形の内部かどうか判定する方法
-
MFCでボタンを押して図形を操作...
-
N88-BASICのグラフィック、図形...
-
C言語で制作するピラミッドアー...
-
MFC
-
ガウシアンフィルタのCプログラム
-
以下のプログラムは重心を求め...
-
シーケンサー(PLC?)で制...
-
ダイアログ内コントロールの位...
-
バイキュービック補間のプログラム
-
Javaで・・・
-
Fortranで直交座標から極座標変...
-
ワード上Shapeの位置情報を統一...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
3次元空間上の2つの座標から...
-
エクセルである点からの距離で...
-
始点、終点の二つの座標と半径...
-
エクセルで回転する座標の出し方
-
閉図形の座標の配列が右回りか...
-
ワード上Shapeの位置情報を統一...
-
以下のプログラムは重心を求め...
-
C言語 配列で座標
-
ダイアログ内コントロールの位...
-
ガウシアンフィルタのCプログラム
-
空間上の二点を結ぶ直線上に任...
-
エクセルシート上のマウスポイ...
-
シーケンサー(PLC?)で制...
-
VB6のPrinter.ScaleWidth に対...
-
多角形の内部かどうか判定する方法
-
直線上にある点の座標の求め方
-
y=x^2の座標をプロットするプロ...
-
ピクチャボックスの座標取得
おすすめ情報