• 締切済み

4つの座標から内点を求める

座標が4つあり、それぞれに0~1までの重みが設定してあります。 そこから内点の座標を1つ求めたいのですがどう計算すればいいのでしょうか。 例 mは重みです (x1,y1) m1 (x2,y2) m2 (x3,y3) m3 (x4,y4) m4 重みが1に近いほどその座標の近くに内点があるというふうな感じになれば良いです。 よろしくお願いします。

みんなの回答

noname#185706
noname#185706
回答No.5

#1、2への追加です。 4点からできる四辺形の凹凸は問題ではないと思います。凹四辺形は、3点からできる三角形の中に4番目の点があるだけです。2点を結んでできる線分が最大で 4C2 = 6 本引けますが、それらで囲まれた部分とそれらの上にある点を内点とみなせばよいと思います。#1の式は4点にそれぞれの質量がある場合の重心の座標を表していますから、それは必ず内点になります。

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.4

何やりたいんだかよく分かりませんけれども、察するに、 ・「断然ココだ!」と言い切る根拠までは必要なくて、「…いうふうな感じ」になりゃ良い。 ・4つの座標が凸四角形になっているとは限らない。そして、 ・計算があんまり大変なのではダメ、 ということでしょうね。 (Step 1) 4点を順に結んだときに自己交差のない四角形になるように(つまり対辺同士が交点を持たないように)、頂点に番号を付け直します。その結果を 頂点0:座標(X0,Y0)重みM0、 頂点1:座標(X1,Y1)重みM1、 頂点2:座標(X2,Y2)重みM2、 頂点3:座標(X3,Y3)重みM3 としましょう。 (Step 2) 与えられた4点のことはちょっと脇に置いて、まず「仮に、4つの頂点が正方形 頂点0:(U0,V0)=(1,0)重みM0, 頂点1:(U1,V1)=(0,1)重みM1, 頂点2:(U2,V2)=(-1,0)重みM2, 頂点3:(U3,V3)=(0,-1)重みM3 になっているとしたら「内点」P(座標(Up, Vp))をどこに打つか」を決めます。そのやり方は、既に回答が出ているような方法で良いでしょう。 (Step 3) この正方形で、Pに一番近い頂点をA(その番号をa)とします。頂点Aの両隣の頂点をB,C (その番号をb, c)とします。(もしPに最も近い頂点が複数あったら、てきとーにひとつ選びましょう。)するとA,B,Cは直角三角形になっています。のこり一つの頂点のことは忘れちまえ。 (Step 4) ベクトル(Up-Ua, Vp-Va)を二つのベクトル(Ub-Ua, Vb-Va)、(Uc-Ua, Vc-Va)の合成で表現します。このために、変数s,tを持つ連立一次方程式 Up-Ua = s(Ub-Ua)+t(Uc-Ub) Vp-Va = s(Vb-Va)+t(Vc-Vb) を解いて、s, tを算出します。 (Step 5) 元の四角形に戻りまして、ベクトル(Xp-Xa, Yp-Ya)を二つのベクトル(Xb-Xa, Yb-Ya)、(Xc-Xa, Yc-Ya)から合成します。すなわち、内点の座標(Xp, Yp)を頂点a,頂点b,頂点cの座標から Xp = s(Xb-Xa)+t(Xc-Xb) + Xa Yp = s(Yb-Ya)+t(Yc-Yb) + Ya で計算します。 以上のイーカゲンなやり方でも、「…いうふうな感じ」はそこそこ出るかと思います。

  • info22_
  • ベストアンサー率67% (2650/3922)
回答No.3

4点の配置について何も条件がつけられていませんが、何も拘束条件はつけないで考えろというのでしょうか? 4点の配置が直線上に並んでいたり、4点の幾つかが一致して(重なって)いたり、凹四辺形の形に並んでいたりする場合など、どうお考えですか? 4点をお書きの順に結んでできる図形が時計回りに頂点が並んだ凸四辺形になるように配置された点列であるといった拘束条件はつけないのでしょうか? そのような拘束条件があるなら、重み付の4点の重心を内点に選んだらいいかと思いますが如何ですか? 2点を結ぶ2組の線分上の重心G1,G2を求め、さらにG1,G2を結ぶ線分上のG1,G2の重心Gを求めれば、Gが全体の重心Gとなり、凸四辺形であれば内点とすればいいでしょう。、

noname#185706
noname#185706
回答No.2

#1への「補足」に対して >x=m4x1+m3x2+m2x3+m1x4 では、 m1 = 1、m2 = m3 = m4 = 0 のとき x = x4 になってしまい、 x = x1 という望みの結果になりません。 その「重要ポイント2」では、 n/(m+n) が A の重みで m1、m/(m+n) が B の重みで m2 に対応します。

noname#185706
noname#185706
回答No.1

m1+m2+m3+m4=1 (1) x=m1x1+m2x2+m3x3+m4x4 y=m1y1+m2y2+m3y3+m4y4 ではどうでしょう。 もし、(1)式を満たさないような重みが設定してある場合には、それらに 1/(m1+m2+m3+m4) を乗じて設定しなおしてください。

kanio15869
質問者

補足

回答ありがとうございます。 質問内容に書くべきだったのですが、 自分はここの重要ポイント2を見て http://www.zkai.co.jp/high/k1k2/mihonpdf/141M20a.pdf 下の式だと思ったのですがこれは違いますか? x=m4x1+m3x2+m2x3+m1x4 y=m4y1+m3y2+m2y3+m1y4

関連するQ&A