- ベストアンサー
同一直線上の座標を求めたいのですが…(2)
昨日、丁寧に教えていただいたのですが、いく通りかのパターンで検証すると、うまく行かないパターンがあり困っています。再度教えてください。 --- 昨日の質問(No.2430366)--- 数学的な事がまったく分からないので、質問の文章もおかしいかもしれませんが、よろしくお願いします。 できれば、わかりやすく簡単な公式があれば助かります。 平面において、同一直線上にある2つのポイントA,Bの座標と、直線の角度が分かっている場合、同一直線上に新たに設けたポイントPの座標を求めるにはどうすればよいですか? Pの位置はその都度変化し、そのときのAとPの距離または、BとPの距離のどちらか一方が分かるという条件です。 --- 回答 --- 2点A,Bを通る直線の式は求められるのでPまでの 距離がわかれば連立方程式を解くことでPの座標は求められます。 平面であれば、A(x1,y1),B(x2,y2),(y2-y1)/(x2-x1)=a、AとPの距離をpとすれば、Pの座標(x、y)は x={±p/√(1+a^2)}+x1 y={±ap/√(1+a^2)}+y1 で求められます。 ※(^2 は2乗です) ※±の意味は、PがAからみてBと同じ方向なら+、反対方向なら-でいいのではないかと思います。 --- 困っていること --- 確かに上の式で、Pの座標を求めることはできました。 しかし、あるパターンに限ってです。 Aを中心にBが第一、第二、第三、第四象限にある場合、また、座標原点の位置をいろいろ変えて試すと、この式ではPの座標が求められない場合があります。 全ての条件、パターンで通用する公式を教えてください。 または、私の検証方法が間違っているならご指摘ください。 お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
点Aの座標を(Xa,Ya)、点Bの座標を(Xb,Yb)、点Pの座標を(Xp,Yp) 点Aから点Bへ向かう距離の符号を(+)、 点Aから点Bと逆方向へ向かう距離の符号を(-)、 点Aと点Bの距離をLとしておきましょう。 ここで点Aから点Pへの距離Mが与えられたとき点Pの座標は 次のように求められます。 dx=(Xb-Xa) dy=(Yb-Ya) L=√((dx*dx)+(dy*dy)) Xp=dx*M/L+Xa Yp=dy*M/L+Ya 点Aからの距離が与えられたり点Bからの距離が与えられたりする とのことですが、仮にBからの距離Nが与えられたときにはAからの 距離が与えられたようにMの値を変換すればいいですね。 これは2次元だろうが3次元だろうが全く関係ないことで、 3次元では次のようになりますね。 dx=(Xb-Xa) dy=(Yb-Ya) dz=(Zb-Za) L=√((dx*dx)+(dy*dy)+(dz*dz)) Xp=dx*M/L+Xa Yp=dy*M/L+Ya Zp=dz*M/L+Za
その他の回答 (1)
- debut
- ベストアンサー率56% (913/1604)
昨日回答した者です。 式をたてた過程 ・A(x1,y1),B(x2,y2)を通る直線の式は y={(y2-y1)/(x2-x1)}(x-x1)+y1 ={(y2-y1)/(x2-x1)}x-{(y2-y1)/(x2-x1)}x1+y1 点P(x3,y3)はこの直線上の点なので y3={(y2-y1)/(x2-x1)}x3-{(y2-y1)/(x2-x1)}x1+y1・・・(1) ・A(x1,y1),P(x3,y3)間の距離pは p=√{(x3-x1)^2+(y3-y1)^2} 両辺を2乗して p^2=(x3-x1)^2+(y3-y1)^2・・・(2) ・(1)を(2)に代入((y2-y1)/(x2-x1)=aとおく) p^2=(x3-x1)^2+(ax3-ax1)^2 =(x3-x1)^2+a^2(x3-x1)^2 =(1+a^2)(x3-x1)^2 (x3-x1)^2=p^2/(1+a^2) x3-x1=±p/√(1+a^2) x3=±p/√(1+a^2)+x1 (1)に代入で、y3=±ap/√(1+a^2)+y1 とやりました。想定していなかったのですが、x1=x2のときはできない でした。(この場合はAPの距離をAのy座標に足すか、引くかだけ) うまくいかない場合を、具体的に座標で示していただけないでしょうか?
お礼
昨日に引き続き、ご親切な対応に感謝します。 ありがとうございました。
お礼
プログラムを組んで検証しましたが、ただ今のところ完璧な結果が得られています。 大変参考になりました。 ありがとうございます。