- ベストアンサー
凸型の多角形の座標
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
凸多角形になることが保証されているなら, 例えば 1. y座標が最小の点を見つける 2. その点から他の各点を結んだ直線の, x軸からの偏角を求める 3. 偏角の小さい順にソートする でできるはず. 一般的には Jarvis march (ジャービスの行進) とかで調べてくれ.
その他の回答 (3)
- Tacosan
- ベストアンサー率23% (3656/15482)
#3 をちと変更. 本質は何も変わらないけどコードとしては 1 を「x座標が最小の点を見つける」とした方がおそらく簡単.
- hashioogi
- ベストアンサー率25% (102/404)
とりあえず 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)、… と呼ばれることになる。 交差が無くなったら外側のループに戻って外側の線分を次の線分にする。 つまり今回の場合は全ての線分が互いに交差しなくなれば凸多角形になっているはず。
- hitomura
- ベストアンサー率48% (325/664)
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
- 極座標?
点Oを中心とする半径1の円に正n角形P(0)、P(1)、…P(n-1)が内接している。 P(0)を点(1,0)として座標軸に書くと、∠P(0)OP(k)=2kπ/nであるので、(k=0,1…n-1) P(k)の座標は(COS2kπ/n,SIN2kπ/n) となっているのですが、X座標の方は-COS2kπ/nになることもあるのではないでしょうか?P(k)がX軸の負側のとき∠P(0)OP(k)=2kπ/nだからP(k)からX軸に垂線を下ろして足をHとすると、∠OP(k)H=180-2kπ/n よって、P(k)のX座標;COS(180-2kπ/n)=-COS2kπ/n 一体どこがおかしいのでしょうか。よろしくおねがいします。
- ベストアンサー
- 数学・算数
- fortran 3次元座標
四面体の4頂点の3次元座標を設定するプログラムを例にならって以下のように書いたのですが、doループの内容がいまいちよくわかりません。p(1:3,m),p(1:3,n)が表されている値は理解できるのですが、出力されたファイルの内容が2行3列の答えが6つあって、なぜそのように答えが出てくるのかがわかりません。教えて下さい。よろしくお願いします。 rogram list2_11 implicit none integer :: m, n, fno = 10 real(8) p(3,4) call random_seed call random_number(p(1:3,1:4)) open(fno, file = 'tetra.d') do m = 1, 3 do n = m+1, 4 write(fno,*) p(1:3,m) write(fno,*) p(1:3,n) write(fno,*) '' enddo enddo close(fno) end program list2_11
- ベストアンサー
- その他(プログラミング・開発)
- 座標を求めて書き出す
初速v、地上からの角度αで発射された質点の地上に到達するまでの時間をtとして、tを適当な数nで分割してΔtとし、Δt毎の質点のx座標とy座標を求めてワークシートに書き出すプログラムはどう作ったらいいですか? 教えてください。
- ベストアンサー
- Visual Basic
- 直交座標系での問題が分かりません。
直行座標(x1,x2)において点P=(p1,p2)が与えられており、 点Q=(q1,q2)はこの座標系でPから角度α、距離dの位置にある。 また直交座標系(x1,x2)にたいして反時計回りにβ回転させた 直交座標系(y1,y2)を考える。 問1 点Pの座標系(y1,y2)における座標(p'1,p'2)をp1,p2,βで表しなさい 問2 点Qの座標系(y1,y2)における座標値(q'1,q'2)をp1,p2,βで表しなさい。 問3 問1でもとめた(p'1,p'2)にたいして座標系(y1,y2)において角度α-β 距離dの位置にある点を考える。 この座標は問2で求めた点Qの座標系(y1,y2)における(q'1,q'2)と 一致することを示しなさい。 --------------------------------------------------------------------- という問題があり 問1は p'1=p1cosβ-p2sinβ p'2=p1sinβ+p2cosβ と計算できましたが 問2以降がわかりません。 レベルの低い問題ですがよろしければ解答をお願いします。
- ベストアンサー
- 数学・算数
- ワーク座標系とプログラム座標系について
ワーク座標系とプログラム座標系について ワーク座標系というのはどのような場合必要なのでしょうか? ワーク座標系とプログラム座標系について教えていただけないでしょか? お願いします。
- 締切済み
- ワイヤーカット
- この座標の出し方を教えてください
数学から離れて十数年。。。すっかり忘れてしまいましたのでお助けください。 xy平面上で座標(a1,b1)の点を、原点(0,0)を中心に時計回りに120度回転させた点の座標(a2,b2)はどういう数式で表されますでしょうか?
- ベストアンサー
- 数学・算数