アプリ版:「スタンプのみでお礼する」機能のリリースについて

3次元空間中の点aとbを通る直線、cとdを通る直線、eとfを通る直線がそれぞれあった場合それらの直線同士が最短となる点sを求めたいのですが考えがまとまりません。

各直線式は
s = t1(b-a)+a
s = t2(d-c)+c
s = t3(f-e)+e
となり、これを最小2乗法で解きたいのですが媒介変数tが混じっていてうまく考えがまとまりません。
アドバイスをお願いします。

A 回答 (4件)

すみません, 何をしたいのかさっぱり分からないんですけど.... 「それらの直線同士が最短となる点 s」ってのは, 何を意味するんでしょうか?


「最小2乗法」と言っているということは, 「3直線までの距離の平方和が最小となる点 s を見つけたい」ってことかな? そうだとすると, s から 3直線までの距離の 2乗は簡単にわかるはずで, それらの和を s の関数とみて最小化するだけですよね. 実行するのは面倒な感じだけど, 書くのは簡単.
    • good
    • 0

●表現から次の3通り考えられて・・・どれでしょうか?補足をお願いできませんか?



P;直線 s = t1(b-a)+a 上の点
Q;直線 s = t2(d-c)+c 上の点
R;直線 s = t3(f-e)+e 上の点
として, 
1)誤差関数=PQ^2+PR^2+QR^2を最小にするt1、t2、t3を求める。
2)他の点Sがあり、
 誤差関数=SP^2+SQ^2+SR^2が最小になる点Sを求める。
3)もう1つ可能なのは、「3次元空間中の直線同士」が交点を持つように最小2乗法で最適化した3つの直線を求め、その交点Sを求める。

この3つの場合が考えられると思うのですが・・・
あるいはこの3つとも的外れかもしれません・・・よろしく。

この回答への補足

問題を判断する材料が十分に明記されておらず申し訳ありません。

他の点Sがありの意味が判りませんが、2が私の求めたい解答です。
3次元空間中点Sと各直線の距離が最も短くなる位置に設定したいです。
よろしくお願いします。

補足日時:2009/03/17 16:51
    • good
    • 0

それだったら、


求めたい点Sの座標を (u,v) とでも置き、
誤差関数=SP^2+SQ^2+SR^2 を
u, v, t1, t2, t3 の5変数関数と見て、
最小値を与える u, v, t1, t2, t3 を求めるだけです。
    • good
    • 1

●vはベクトルを省略・・・SPv=SPベクトル,,等


点P;直線L1:s=t1(b-a)+a 上の点;a=(a1,a2,a3),b=(b1,b2,b3)
点Q;直線L2:s=t2(d-c)+c 上の点;c=(c1,c2,c3),d=(d1,d2,d3)
点R;直線L3:s=t3(f-e)+e 上の点 ;e=(e1,e2,e3),f=(f1,f2,f3)
点S;s=(s1,s2,s3)と置いて,
1)点Sと直線L1,L2L3との距離の定義を決める。
SPv=OPv-OSv={t1(b-a)+a}-s=t1(b-a)+(a-s)
これはL1の方向ベクトル(b-a)と直交する=内積が0
 {t1(b-a)+(a-s)}・(b-a)=0
 これを解いて t1=(s-a)・(b-a)/(b-a)^2
 SPv={(s-a)・(b-a)/(b-a)^2}(b-a)+(a-s)
 従って、
 SPvのx成分={(s-a)・(b-a)/(b-a)^2}(b1-a1)+(a1-s1)
 SPvのy成分={(s-a)・(b-a)/(b-a)^2}(b2-a2)+(a2-s2)
 SPvのz成分={(s-a)・(b-a)/(b-a)^2}(b3-a3)+(a3-s3)
 ただし、次のものは内積なので
 (s-a)・(b-a)=(s1-a1)×(b1-a1)+(s2-a2)×(b2-a2)+(s3-a3)×(b3-a3)
(b-a)^2=(b1-a1)^2+(b2-a2)^2+(b3-a3)^2
です。
 上の各成分の2乗和をつくり,
 SP^2=SPvのx成分^2+SPvのy成分^2+SPvのz成分^2

 同様にSQ^2、SR^2を作ります。
 これはすべてs1,s2,s3の関数になっています。
 
●誤差関数の定義;Iとします。
 以上で求めたものから、誤差関数を次のように定めます。
  誤差関数(I)=SP^2+SQ^2+SR^2
 これはやはりs1,s2,s3の関数です。

●最小2乗法
 これが一番小さくなるときのs1,s2,s3を求めルことになりますが、
 δI(s1,s2,s3)=(∂I/∂s1)・δs1+(∂I/∂s2)・δs2+(∂I/∂s3)・δs3
 =0
 そのためには,(∂I/∂s1)=(∂I/∂s2)=(∂I/∂s3)=0で有ればよいことになります。
(∂I/∂s1)=0 ,(∂I/∂s2)=0 ,(∂I/∂s3)=0 
として,独立な3個の2次式が得られるので、これを連立させて解けばs1,s2,s3の値が求められることになります。変数が3個で、方程式が3個なので必ず解けますが、各方程式は3次方程式になるようですね。

 答えが出ることはわかり求められなくは無いことがわかりましたが、具体的な計算は大変そうですね・・・流れは正しいと思うのですが,これ以上は示せそうに有りません。具体的な数値を入れて計算していったほうが簡単なのかも?
    • good
    • 0

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


このQ&Aを見た人がよく見るQ&A