• ベストアンサー

点と直線に関する質問

点A,Bを結ぶ直線ABと、直線AB上に無い点Cがあり、点Cから直線ABへ下ろした垂線Lと、直線ABとの交点Dを求める方法に関する質問です。 当方は、座標に経度・緯度を使っており、点A,B,Cの座標(位置情報)は既知です。まず、点A,Bを結ぶ直線を求め、次にその直線と垂直に交わる直線の傾きbを求め、傾きbで点Cを通る直線と直線ABとの交点を求め、点Dとしました。しかし、求めた点Dを地図ソフト(SIS)上にプロットしてみると、かなりのずれ(50~100m)が生じてしまいました。 距離は数十~数百メートル程度のオーダーです。 点の座標A(XA,YA),B(XB,YB),C(XC,YC),求める点D(XD,YD)とし、ABの傾きa=(YB-YA)/(XB-XA)、ABと垂直に交わる直線の傾きb=-(XB-XA)/(YB-YA)とおくと、点Dの座標は、XD=(a*XA-YB-b*XC+YC)/(a-b),YD=b*(XD-XC)+YCであるとして、求めました。 この問題はやはり球面座標で考えるべきなのでしょうか?当方、球面座標に関しては全くの無知でして、このような時はどのようにして求めればよろしいのでしょうか?式など示して頂ければありがたいですが、何か関連する情報やヒントでも結構ですので、アドバイスの方、どうぞ宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

球面三角法で解くのでしたら我田引水になりますが、 http://okweb.jp/kotaeru.php3?q=934745 が参考になればと思います。 ひょっとしたら連立方程式を組んで解けるのかもしれませんが私には考える時間が無いのでこれはパスです。 連立方程式が組めなくても逐次近似法で解は求まります。特にプログラミングしてコンピュータに計算させる場合はこれでなんら問題ありません。 もし対象地域が狭いのなら経緯度を平面直角座標系に直せば平面として計算して問題無いように思いますが、実際の数値を入れて試したわけでは無いのでここは自信なしです。 国土地理院のホームページの中の http://vldb.gsi.go.jp/sokuchi/surveycalc/algorithm/ に経緯度と平面直角座標系の相互の変換式へのリンクがあります。 まずは「7. 平面直角座標系」で同じ座標系に全ての地点が含まれているのかを確認する必要があります。 トップページのURLは http://www.gsi.go.jp/ です。

参考URL:
http://vldb.gsi.go.jp/sokuchi/surveycalc/algorithm/

その他の回答 (1)

回答No.1

> XD=(a*XA-YB-b*XC+YC)/(a-b) XD=(aXA-YA-bXC+YC)/(a-b) 完全に平面として扱っていいのであれば,求め方は今の方法でも問題ありません.ただし,XDの右辺の第2項目は上式のように-YBではなく-YAにですので確かめてください. これが単なる打ち間違いで実際に-YAとして計算しても同様の誤差が生じるとしたら,高低差の起伏によるものか地球が球面であることによる誤差になりますが,もし扱ってる対象(点AB間の距離等)が何十km、何百kmになるものではなく > 距離は数十~数百メートル程度のオーダーです。 あれば,その必要も特にないと思うので,別の要因(座標変換時の計算ミス?)となりますが・・・ 座標系の選び方で誤差が生じることはないと思います.

関連するQ&A

  • 2直線が直交する点の求め方が分かりません

    数学で分からない問題があるので質問させていただきます。 3つの点 A(Xa,Ya,Za)、B(Xb,Yb,Zb)、C(Xc,Yc,Zc)与えられているとして、 点A,Bを通る直線ABに、点Cから垂直に線を引く場合に、 2直線の交点D(X,Y,Z)の座標を求める方程式が分かりません。 (Xb-Xa)(X-Xc)+(Yb-Ya)(Y-Yc)+(Zb-Za)(Z-Zc)=0 一つは思いつきましたが、変数が3つあるのであと2つ 式が必要になると思います。 分かる方がいたら教えていただけませんか。 よろしくお願いします。

  • 4点の座標がわかっているときの四角形の面積

    平面上の4点の座標がわかっていれば、四角形の形状は一義的に決まるものでしょうか。もし、きまるものなら、その面積の算出方法について教えてください。 点A(Xa、Ya) 点B(Xb、Yb) 点C(Xc、Yc) 点D(Xd、Yd) とします。 よろしくお願いします。

  • 座標値を求める計算式が知りたい!

    下図のように、点座標、点A(Xa,Ya)、点B(Xb,Yb)、点C(Xc,Yc)が与えられているとき、D点の座標値、Xd, Ydを求める式を教えてください。

  • 2点を結ぶ直線を垂直に移動

    2点(xa1,ya1とxa2,ya2)を結ぶ直線を垂直に移動(b)したときの2点(xb1,yb1とxb2,yb2)の算出方法を教えてください。

  • 3次元空間での平面の式の算出

    ある3次元空間内に原点と点A(xa, ya, za)を通る直線と任意の点B(xb, yb, zb)があるとします。 点Bから直線への垂線の足をC(xc, yc, zc) としたとき, まず, ・ C(xc, yc, zc)を xa, ya, za, xb, yb, zb であらわしたい。 次いで, ・BおよびCを含む平面の式を導出したい。 以上のような問題なのですが,上手く算出することができません。 アドバイスをいただけたらと思い,書き込みさせていただきました。 よろしくお願いします。

  • エクセルを用いた3次元座標の回転・平行移動の方法: 対応する座標点間距離の最小化

    対応する3つの3次元座標間の最小二乗距離の総和を最小化する方法を教えていただけないでしょうか。 それぞれ3座標点を含む2つのデータセットがあるとします。 片方のデータセットを回転・平行移動させることにより、 対応する3座標点間の最小二乗距離の総和を最小化したいのですが、 その方法を教えてください。 例: データセットA:(xa1, ya1, za1), (xa2, ya2, za2), (xa3, ya3, za3) データセットB:(xb1, yb1, zb1), (xb2, yb2, zb2), (xb3, yb3, zb3) データセットBを回転・平行移動したもの:(xb1', yb1', zb1'), (xb2', yb2', zb2'), (xb3', yb3', zb3') そして対応する3座標点間の最小二乗距離の総和: (xa1-xb1')^2+(xa2-xb2')^2+(xa3-xb3')^2+ (ya1-yb1')^2+(ya2-yb2')^2+(ya3-yb3')^2+ (ya1-yb1')^2+(ya2-yb2')^2+(ya3-yb3')^2 を最小化したい。 つまり、これを最小化するためのデータセットBの回転・平行移動の方法をしりたいのです。 よろしくお願いします。  

  • ある点からある直線へ降ろした垂線の交点

    3次元空間において、3点A,B,Pがあったとします。 A,B,Pの座標はそれぞれ既知で、A(xa,ya,za) B(xb,yb,zb) P(xp,yp,zp)と表わされる時に、 (1)線分ABに対して点Pから垂線を下ろすことが出来るかどうかの判定をするには? (2)垂線と線分との交点の座標を求めるには? 以上の2つのことを行いたいのです。 数学的知識に乏しいため、自力ではなかなか答えに辿り着くことが出来ません。 よろしくお願いします。

  • 垂線の長さを求めたい。

     今、V.B.でプログラムを作っているんですが、『垂線の求め方』が分からなくて困っています。 問題は以下の通りです。 ・2点(xa,ya),(xc,xy)を通る直線Aと、2点(xb,yb),(xd,yd)を通る直線Bとの交点から、 2点(x1,y1),(x2,2)を通る直線におろす垂線の長さを求めたい。 回答の方、よろしくお願いします。

  • ゼネラルフローチャートの作り方。

    数値解析実習という授業で「補間法」をやっているのですが このプログラムのディテールフローチャートは書けるのですが ゼネラルフローチャートをどのようにかいていいのかがわかりません。 「開始」  ↓ 「変数宣言」  ↓ この先どうなるのでしょう??? #include <stdio.h> #include <math.h> void main(void) { double xa,xb,xc,h; double ya,yb,yc; double xx,yy,dela,delb,del2a; printf("3点のx座標a,b,c="); scanf("%lf%lf%lf",&xa,&xb,&xc); printf("3点のy座標fa,fb,fc="); scanf("%lf%lf%lf",&ya,&yb,&yc); printf("補間点のx座標x="); scanf("%lf",&xx); h=xb-xa; dela=yb-ya; delb=yc-yb; del2a=delb-dela; /*二次補間公式*/ yy=ya+dela/h*(xx-xa)+del2a/(2.0*h*h)*(xx-xa)*(xx-xb); printf("補間点f(%lf)=%lf\n",xx,yy); } ディテールは細かく書くだけっぽいのでそのまま出来たのですが・・・。 ゼネラルのほうがおおまかな流れを書くみたいですがどこを書いて良いのかわかりません。 教えてください。

  • エクセルでそれぞれの合計を纏めたい

    以下のようなデータ(膨大です)があるのですが、 9月1日 A(商品名)XA(単価)YA(売上数)ZA(単価×売上数)     B     XB    YB     ZB     C     XC    YC     ZC  … 9月2日 A     XA    YA     ZA     B     XB    YB     ZB     C     XC    YC     ZC      … 表にするとかえって分かりにくいですが、要するに商品が400種類くらいあって、9月1日~30日の間にそれぞれ売上があったというわけです。 その400種類の商品の9月分のそれぞれの売上個数の合計と、それぞれの売上金額の合計を算出したいのです。つまり 9月 A  XA  YA合計  ZA合計 B  XB  YB合計  ZB合計 C  XC  YC合計  ZC合計 … というように纏まった表を作りたいのです。 説明が下手で本当に恐縮ですが、エクセルで私の望むような計算はできますでしょうか?