任意の2本の直線の始点、終点の座標(x、y、z)がわかっているときその直線同士の最も接近した箇所のそれぞれの直線上の座標を計算する方法を教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

いちばん簡単な求め方かどうかはわかりませんが、



過程1 まず、2直線を直線AB,直線CDとし、それぞれの方向ベクトルを
    n(ベクトル)、m(ベクトル)としておきます。
過程2 nとmの外積をとり、n×m=p(ベクトル)としておきます。
過程3 さらに、pとnの外積p×n=q(べクトル)をとります。
過程4 このqを法線ベクトルと直線ABを含む平面をもとめます。
過程5 次に、この平面と直線CDの交点を求めます。

この点が、直線ABに最接近する直線CD上の点です。
直線AB上の点は同様に求めるか、あるいは

過程6 直線AB上の点を適当にkなどを使ってあらわす。
過程7 三平方の定理を使って先ほど求めた点との距離をもとめて
    それが最小になるkを見つける。
   (√の中kの2次式になるので、√の中だけを考える。
    決して微分してみたりしない。時間の無駄。
    まあ1度やってみるのもいいかも)
過程8 そのkから過程6であらわした直線AB上の点に代入する

距離も出したければ、過程7の式の最小値がそれですね。

kogorou100さんが聞きたいことは、こういう内容のことだと思いますが、
表現の問題として、始点・終点があれば、直線ではなく、線分、
片方だけあれば、半直線といいます。
線分や半直線の場合は求め方が、ちょっと複雑になります。
 (基本的には、線分でも半直線でも考え方は一緒なので、以後すべて線分と
  書きますが、それは、線分あるいは半直線を意味することとします。)
それは、その始点あるいは終点が、最接近点になることもあるからです。
これは、大きくわけると3パターンが考えられ、

1つめは、上の過程5過程8で求めた点のどちらか(あるいは両方)が
     対応する線分の始点あるいは終点に一致する場合
    (この場合は上の求め方と同様なので、特に問題なし)
2つめは、過程5過程8で求めた点がともに、それぞれが対応する線分
     の範囲内に入っていない場合
3つめは、過程5過程8で求めた点のそれぞれが(対応する)片方の線分
     の範囲内には入っているが、もう片方の線分の範囲内の入って
     いない場合

2の場合は、過程5過程8の最接近点に近いほうの始点同士が、線分の最接近点
      です。
3の場合は、過程5過程8の点が範囲からはずれたほうの線分の、始点(過程5
      過程8の点に近いほう)が最接近点の1つで、もう1つは、その点
      から他の線分への距離が最短になる点を求めればよいと思います。

どうでしょうか?
ちなみに、外積はわかりますか?
2つのベクトル両方に直交するベクトルのことですが。
ご存知でなければ、補足します。
    • good
    • 0
この回答へのお礼

どうも有り難うございました。私には難しい内容ですが後は、図書館で調べてみます。最終的には上記のa、b、c、dの座標を入力すると接近する箇所の座標e、fをエクセルまたは日本語ベーシッックなどで求められる様にしたいと思います。

お礼日時:2001/11/04 17:50

 僕国語苦手なんで質問の意味がよく分からなかったんですが、2直線の最短距離がわかれば良いのかな?



 外積をご存知なら外積を使えば1番早いと思います。ご存知でないなら、はじめに分かっている2本のベクトルをそれぞれa、bとして、a、bに共に直行するベクトルを内積で強引に出せば良いのでは?
    • good
    • 0
この回答へのお礼

どうもありがとうございます。質問の仕方が悪くて申し訳ございません。外積とか初めて聞くことばです。わたしにはレベルが高すぎるようですのでもう少し勉強してみます。

お礼日時:2001/11/04 17:56

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q直交する2直線

方程式2x^2-3xy+λy^2+5y+μ=0がxy平面上の直交する2直線を表すようにλ,μを定め、この2直線の方程式を求めよという問題なんですが、解き方、考え方が分かりません。
答は λ=μ=-2
  2x+y=2、2y-x=1 です。

直交する2直線が上方程式で表せれるということもよく分からないので、その辺りもよろしかったら教えてください。

Aベストアンサー

直線の式は ax+by+c=0 という風に表す、というのはOKですね。
与えられた式が(ax+by+c)(px+qy+r)=0 とできたとすると
ax+by+c=0 または px+qy+r=0 となり、2つの直線を表すことになります。
ここまでは、may-may-jpさんの回答の通りですが、ただ因数分解できるだけではλとμは特定できません。そこで必要になるのが「直交」の条件です。

直交する条件は2つの直線の傾きの積が-1になることです。
ax+by+c=0 を変形して y=(a/b)x+(c/b) ただし b≠0
同様に px+qy+c=0 を変形して y=(p/q)x+(r/q) ただし q≠0
とすると 傾きはそれぞれ a/b,p/qですか積が-1 すなわち
(a/b)・(p/q)=ap/bq = -1 ∴ ap = -bq が直交条件です。

なお、b=0(q=0)のときは直線はy軸に平行になります。このとき直交する直線はx軸と平行になり、xの係数が0 つまりp=0(a=0) になります。このときもap = -bq (=0)で成り立ちます。

さて(ax+by+c)(px+qy+r)=0 の左辺を展開すると
apx^2+bqy^2+(aq+bp)xy+(ar+cp)x+(br+cq)y+cr=0
となります。(途中の計算はご自分で確かめてください。)
ここで直交条件をみると x^2 とy^2の係数に注目すればよいことが分かります。
与式に戻って、2x^2-3xy+λy^2+5y+μ=0のx^2 とy^2の係数をみれば 2=-λ すなわちλ=-2が求められます。
これを代入して
2x^2-3xy+2y^2+5y+μ=0
これが(ax+by+c)(px+qy+r)=0 の形に因数分解できれば良いわけです。
x^2,y^2,xyの係数に注目すると
(2x+y+c)(x-2y+r)=0 --(*)という形になることは容易に分かります。
あとはx,yの係数から
2r+c=0
r-2c=5
の2式が出ますので、連立方程式を解いて
r=1, c=-2 よってμ=cr=-2
となります。
このrとcを(*)に代入すれば
(2x+y-2)(x-2y+1)=0 となり、直線の式は 2x+y-2=0,x-2y+1=0
と求まります。
答えの2x+y=2、2y-x=1 は上記の式の定数項を移行した形ですね。

直線の式は ax+by+c=0 という風に表す、というのはOKですね。
与えられた式が(ax+by+c)(px+qy+r)=0 とできたとすると
ax+by+c=0 または px+qy+r=0 となり、2つの直線を表すことになります。
ここまでは、may-may-jpさんの回答の通りですが、ただ因数分解できるだけではλとμは特定できません。そこで必要になるのが「直交」の条件です。

直交する条件は2つの直線の傾きの積が-1になることです。
ax+by+c=0 を変形して y=(a/b)x+(c/b) ただし b≠0
同様に px+qy+c=0 を変形して y=(p/q)x+(r/q) ただし...続きを読む

Qx*y=log(e^x+e^y)と定義すると、(x*y)+z=(x+z)*(y+z)

x、y∈Rに対して
x*y=log(e^x+e^y)
と定義すると、
(x*y)+z=(x+z)*(y+z)
が成り立ちます。
分配法則の*と+を逆にしたような感じですが、この*から何かしらの代数的な事実が従うのでしょうか?
この*の意味は何なのでしょうか?

x*x=aのとき、x=√aと定めと、
√(a*b)≧(a+b)/2
といった相加相乗平均の関係の類似は成り立つようですが。

Aベストアンサー

e^x=X, e^y=Y, e^z=Z と置いて考えましょう。
e^(x*y)=e^x+e^y → Z=X+Y
e^(x+y)=e^x*e^y → Z=X*Y
つまり、正の数の加算と乗算になります。

>分配法則の*と+を逆にしたような感じですが

まさにその通りです。入れ替えて見てください。

>√(a*b)≧(a+b)/2

通常の相加相乗平均とは逆ですね。

Qxy平面において、原点Oを通り互いに直交する2直線

xy平面において、原点Oを通り互いに直交する2直線を引き、直線x=-1および直線x=3√3 との交点をそれぞれP、Qとする。 OP+OQの最小値を求めよ。

Aベストアンサー

原点Oを通り互いに直交する2直線をm,nとしましょうか。交点は4つある。
A: mとx=-1との交点
B: mとx=3√3との交点
C: nとx=-1との交点
D: nとx=3√3との交点
P, Qってどれだよ?というのがソモソモの疑問デスヨネ?
(1) OP+OQがOA+OBのことなのだとすると(直線nには出番がありませんが)、OA+OBの最小値が1+3√3であることは自明。
(2) OP+OQがOC+ODでも同じです。(直線mには出番がありませんで)最小値は1+3√3。
(3) OP+OQがOA+OCのことなのだとすると(直線x=3√3には出番がありませんで)、△OACは直角三角形である。明らかに、直角二等辺三角形の場合にOA+OCが最小になるんで、2√2が答。
(4) OP+OQがOB+OCのことだったら(直線x=-1には出番がありませんで)、(3)と比べて、直角三角形の各辺の長さが3√3倍になるだけなので、(2√2)×(3√3)が答である。
 残る問題は、
(5) OP+OQがOA+ODであるとき。(ま、出題者の意図は専らこれなんでしょうけど、はっきり書いてないと(1)~(4)も省けません。)
 交差する相手の直線を x=-1とx=3√3じゃなくて一般にx=a, x=b (a≠0, b≠0)だとしてみましょう。
 そして、mの方程式を ux + vy = 0 とすると、v=0の場合にはmはx=aともx=bとも交点を持たない。また、u=0の場合にはnがaともx=bとも交点を持たない。だから(5)においては、これらの場合は除外してよろしい。というわけで、mの方程式を
   y = αx (α≠0)
と書いても差し支えない。このときnの方程式は
  y = x/α
です。
  A= (a, aα)
  D= (b, b/α)
であり、原点からの距離は
  OA = |A| = |a|√(1+α^2)
  OD = |D| = |b|√(1+1/(α^2))
である。
OA+OD をfと書くことにすると、
  f = |A|+|D| = |a|√(1+α^2) + |b|√(1+1/(α^2))
である。ここで
  z = α^2
とおくと zは正の実数 (z>0)です。zを使って
  f = |a|√(1+z) +|b|√(1+1/z)
と書き直します。さて、fの極小値を計算する。つまり方程式
  df/dz = 0
を満たすzを計算するわけで、df/dzを計算して方程式に代入すると
  |a|/(2√(1+z)) - |b|/(z^2)/(2√(1+1/z)) = 0
移項して分母を払うと
  |a|(z^2)√(1+1/z) = |b|√(1+z)
両辺を2乗して
  (a^2)(z^4)(1+1/z) = (b^2)(z+1)
つまり
  (a^2)(z^3)(z+1) = (b^2)(z+1)
z>0なので(z+1)で割って
  (a^2)(z^3) = (b^2)
a≠0なので
  z^3 = (b/a)^2
である。ただし、zは正の実数でなくてはならないのでした。
 ところで、aとbは0でない実数でした。なので、a,bを決めるとこの方程式を満たすzはいつも丁度ひとつ存在して、それは
z = ((b/a)^2)の立方根
です。これを
  f = |a|√(1+z) +|b|√(1+1/z)
に代入するとfの極値、つまりfの極小値あるいはfの極大値が得られる。
 ですが、fの極値を与えるzがただ一つしかなくて、しかもz→0やz→+∞のときにfが+∞に発散するんですから、極大なんてそもそも存在しないのは明らか。なので、この計算でfの極小値が得られ、これがfの最小値でもある。

原点Oを通り互いに直交する2直線をm,nとしましょうか。交点は4つある。
A: mとx=-1との交点
B: mとx=3√3との交点
C: nとx=-1との交点
D: nとx=3√3との交点
P, Qってどれだよ?というのがソモソモの疑問デスヨネ?
(1) OP+OQがOA+OBのことなのだとすると(直線nには出番がありませんが)、OA+OBの最小値が1+3√3であることは自明。
(2) OP+OQがOC+ODでも同じです。(直線mには出番がありませんで)最小値は1+3√3。
(3) OP+OQがOA+OCのことなのだとすると(直線x=3√3には出番がありませんで)、△OACは直角三角形であ...続きを読む

Q座標(x,y)から座標(x2,y2)を頂点としてとおり座標(x3,y3)と交わる放物線?

現在プログラムを作成しているのですが、とあるグラフを表示して
欲しいと言われ困っています。

ニーズは 任意の座標(x,y)と座標(x3,y3)を放物線で記すこと。
ただし、この放物線はxからx3の間隔の8:2の場所に頂点(x2,y2)が
あること。 です。

すなわち・・・
(x,y)が(0,50)で(x3,y3)が(100,25)なら 頂点(x2,y2)は(80,?)に
あるグラフです。

そもそも、こんなグラフを式でかけるんでしょうか?
かけるとしたらどんな式で書けばいいのか教えてください。

条件としては
必ず x<=x3 , y>=y3 , xとx3の間隔は最低100です。

いろいろ参考書とか見てみたのですが、ギブアップです。
お助けください。

Aベストアンサー

>(x,y)が(0,50)で(x3,y3)が(100,25)なら 頂点(x2,y2)は(80,?)にあるグラフです。......

頂点とは、放物線とその対称軸との交点だとしましょう。
また、放物線の回転を許容します。

試している暇が無いので、筋書きだけ。

(1) (0,50) と (100,25) を結ぶ線分に、その中点で直交する直線 Lc を引く。
(2) 直線 Lc と直線 x=80 の交点を求める。そこを放物線の頂点 Pc とする。(交点が存在しないことあり)
(3) (0,50), (100,25), Pc を通る放物線が所望の放物線。

あとはフォローして。

Q2直線が直交するように、A,Bと交点の途中式を教えてください

2直線が直交するように、A,Bと交点の途中式を教えてください

(1) (x-3)/2 = (y+1)/-3 = (z-4)/A , (x+5)/3 = (y+6)/4 = z+B
A.A=6 B=4 交点(1,2,2)

(2) x+3 = (y-1)/2 = (z-7)/A , x/2 = (y-B)/5 = (z+2)/4
A.A=-3 B=7 交点(0,7,-2)

全く分かりません。例が参考にならないのでよろしくお願いします

Aベストアンサー

(1)
(x-3)/2 = (y+1)/-3 = (z-4)/A
の方向ベクトルは(2,-3,A)

(x+5)/3 = (y+6)/4 = (z+B)/1
の方向ベクトルは(3,4,1)
2つの方向ベクトルが直交するから内積=0
(2,-3,A)・(3,4,1)=6-12+A=0 ∴A=6

この時前半の直線は
(x-3)/2 = (y+1)/-3 = (z-4)/6(=kとおく)
媒介変数表現で
x=2k+3,y=-3k-1,z=6k+4…(1)

後半の直線は
(x+5)/3 = (y+6)/4 = (z+B)/1=h
とおけば媒介変数表現で
x=3h-5,y=4h-6,z=h-B…(2)

(1),(2)を連立方程式として解けば交点の座標(x,y,z)とBが求まります。
x=1,y=2,z=-2,B=4,k=-1,h=2
答えのA=6,B=4は合っていますが、交点の座標が正しくないようです。
正しい交点は(1,2,-2)です。
確認してみて下さい(元の直線の方程式に代入して式が成り立つかで分かります)。

(2)も同様の方法で出来ますのでやってみて下さい。

(1)
(x-3)/2 = (y+1)/-3 = (z-4)/A
の方向ベクトルは(2,-3,A)

(x+5)/3 = (y+6)/4 = (z+B)/1
の方向ベクトルは(3,4,1)
2つの方向ベクトルが直交するから内積=0
(2,-3,A)・(3,4,1)=6-12+A=0 ∴A=6

この時前半の直線は
(x-3)/2 = (y+1)/-3 = (z-4)/6(=kとおく)
媒介変数表現で
x=2k+3,y=-3k-1,z=6k+4…(1)

後半の直線は
(x+5)/3 = (y+6)/4 = (z+B)/1=h
とおけば媒介変数表現で
x=3h-5,y=4h-6,z=h-B…(2)

(1),(2)を連立方程式として解けば交点の座標(x,y,z)とBが求まります。
x=1,y=2,z=-2,B=4,k=-1,h=2
答えの...続きを読む

Q線形です (1)を x+3y-2z=0 x-2y+4z=0 x^2+y^2+z^2=1をもちいて 答

線形です
(1)を
x+3y-2z=0
x-2y+4z=0
x^2+y^2+z^2=1をもちいて
答えが+-の答えになりました
(2)では外せきが8,-6,-5となり
おおきさの5ルート5で割ると
+-の答えにはなりませんでした
どちらが正しいのでしょうか?

Aベストアンサー

外積からでてきた単位べクトルは、外積の定義から、ベクトルa、bに垂直ですよね。
だからそれと正反対のベクトルも、ベクトルa、bに垂直な単位ベクトルだから、これも答えに入れれば
よいのです。つまり外積から出した単位ベクトルの各成分に(-1)をかけた成分のベクトルも答えに
なります。そしてこうして出した2つのベクトルは、先に内積で出した2つのベクトルと一致します。

QFortranで直交座標から極座標変換のプログラム

Fortranで直交座標から極座標変換のプログラム

FDTD法を用いて、散乱電場を求める際、最初Ex(i,j,k), Ey(i,j,k), Ez(i,j,k)を求めましたが、
それから座標をr方向に座標変換したく、プログラムを作ろうと思っているのですが、どのように書いてよいのか悩んでいます。
単位ベクトル r = (x,y,z)=(sinθcosφ,sinθsinφ,cosθ)と定義できるのですが、これを
どのように極座標のプログラムとして書いてよいのかわかりません。
どなたかわかる方がいらっしゃたら教えて下さい。よろしくお願いします。

Aベストアンサー

座標変換(デカルト座標から極座標)に伴う単位ベクトルの変換またはベクトル成分の変換を行おうということなら下記URL参照。

参考URL:http://www-d.ige.solan.chubu.ac.jp/goto/docs/math/pm6.ssi

Q数学Ⅱ 円と直線問、円C: x∧2+y∧2-4x-2y+3=0直線l: y=-x+k が異

数学Ⅱ 円と直線

問、円C: x∧2+y∧2-4x-2y+3=0
直線l: y=-x+k が異なる2点で交わるkの範囲は
「1〈k〈5」
また、lがCによって切り取られる線分の長さが2であるとき、定数kの値を求めよ。

解答、Cの中心をC,
Cとl の2つの交点をA, B,
線分ABの中点をM とする。

CM=√AC∧2-AM∧2=1

よって |k-3|/√2 =1

k=3±√2 。。

|k-3|/√2 =1 ←これどういう意味?

Aベストアンサー

|k-3|/√2 =1 ←これどういう意味?

これは、《 点と直線の距離の公式 》 を使っています。


点A(x₁,y₁) と 直線 ax+by+c=0 との距離dは

d=│ax₁+by₁+c│/√(a^2+b^2)

です。

x∧2+y∧2-4x-2y+3=0
(x-2)^2+(y-1)^2=2
より、円Cの中心は、点(2,1) です。
直線l を式変形して、
-x-y+k=0
となり、
これで、点(2,1) と直線 -x-y+k=0 との距離dは、
d=│-2-1+k│/√{(-1)^2+(-1)^2}=│k-3│/√2 ・・・・・①
になります。

また、Cの中心をC,
Cとl の2つの交点をA, B,
線分ABの中点をM とする。
と、
三角形CAMは、∠CMA=90° の直角三角形だから、三平方の定理より
CM=√AC∧2-AM∧2=1 ・・・・・②
になります。

d=CM なので、 ① と ② より
│k-3│/√2=1
になります。

Q直線を描画するプログラム

初歩的ですみません。
マウスで始点と終点を決めて直線を書くプログラムを知っている方がおりましたら教えてください。

よろしくお願いします。

Aベストアンサー

WinTKというのは良く分からないんで、MFCの方を……
とりあえずダイアログアプリケーションで説明すると、

1.
 ダイアログベースのスケルトンを作ります
2.
 xxxDlg.h に座標を保持るためメンバを追加します。
class CxxxDlg : public CDialog
 {
   CPoint m_ptBegin, m_ptEnd;

3.
クラスウィザードで WM_LBUTTONUP, WM_RBUTTONUP を選択します。

4.
 void CxxxDlg::OnLButtonUp(UINT nFlags, CPoint point)
 {
   // ここの point に左ボタンが離された座標が入ってますので保持しておきます(始点)
   m_ptBegin = point;
   CDialog::OnLButtonUp(nFlags, point);
 }
5.
 void CxxxDlg::OnRButtonUp(UINT nFlags, CPoint point)
 {
   // ここの point に右ボタンが離された座標が入ってますので保持しておきます(終点)
   m_ptEnd = point;

   // 再描画します。
   InvalidateRect( NULL );

   CDialog::OnRButtonUp(nFlags, point);
 }

6.
 CxxxDlg::OnPaint()関数の以下の部分を変更します。

 else
 {
   CDialog::OnPaint();
 }
      ↓
 else
 {
   CPaintDC dc( this );

   dc.MoveTo( m_ptBegin );
   dc.LineTo( m_ptEnd );

   CDialog::OnPaint();
 }

と、大体こんな感じです。m_ptBegin, m_ptEndはコンストラクタで初期化してやっておいて
ください。説明が大雑把なんでわかりにくかったら言ってくださいね。

ほな。

WinTKというのは良く分からないんで、MFCの方を……
とりあえずダイアログアプリケーションで説明すると、

1.
 ダイアログベースのスケルトンを作ります
2.
 xxxDlg.h に座標を保持るためメンバを追加します。
class CxxxDlg : public CDialog
 {
   CPoint m_ptBegin, m_ptEnd;

3.
クラスウィザードで WM_LBUTTONUP, WM_RBUTTONUP を選択します。

4.
 void CxxxDlg::OnLButtonUp(UINT nFlags, CPoint point)
 {
   // ここの point に左ボタンが離された座標が入ってますので保...続きを読む

Q≪問題≫実数x,y,zは関係式,x+y=2…(1),x^3+y^3+z^3

≪問題≫実数x,y,zは関係式,x+y=2…(1),x^3+y^3+z^3=8…(2)を満たす。
(1)x^2+y^2+z^2をzを用いて表せ。

(x+y+z)(x^2+y^2+z^2-xy-yz-zx)-3xyz=x^3^+y^3+z^3
の関係式を使ってみようかな。。。
って思ったんですが…できません^^;

どなたかよろしくお願いします。

Aベストアンサー

x^2+y^2+z^2をzで表すのだからx^2+y^2の部分が問題です。
x^2+y^2はx+yとxyで表せますね。
だから目標はxyをzで表すことです。

(1)が使えるように(2)を変形してみる。
(x+y)^3-3xy(x+y)+z^3=8
(1)を代入してみる。
2^3-3xy*2+z^3=8
xy=z^3/6
となった。


人気Q&Aランキング