【最大10000ポイント】当たる!!質問投稿キャンペーン!

お世話になります。

3次元座標2点からの直線式(ax+by+cz=0)の求め方を教えて下さい。

2次元座標であれば、1つの傾きから算出できるのですが、3次元座標になると、X-Y平面、Y-Z平面での傾きの使い方がこんがらかってしまいます。
基本的な質問で申し訳ありませんが、よろしくお願い致します。

座標1 = (x1,y1,z1)
座標2 = (x2,y2,z2)

以上

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

A 回答 (2件)

> 直線式(ax+by+cz=0)の求め方を教えて下さい。


3次元座標では(ax+by+cz=0)は原点を通る平面になり、直線の式ではありません。ax+by+cz=dは平面の一般式です。

2点を通る直線の式には公式があります。
以下のように簡単に導けます。
点(x1,y1,z1)を通り方向ベクトル(x2-x1,y2-y1,z2-z1)の直線ですから
媒介変数形式で
(x,y,z)=(x1,y1,z1)+t(x2-x1,y2-y1,z2-z1)
と成ります。
これを変形してすれば
(x-x1)/(x2-x1)=(y-y1)/(y2-y1)=(z-z1)/(z2-z1)
と3次元座標の直線の式となります。
    • good
    • 9
この回答へのお礼

ご回答頂き、ありがとうございました。
理解することができました。

お礼日時:2008/07/24 18:26

より一般的に答えると



(x,y,z,1)
(x1,y1,z1,1)
(x2,y2,z2,1)

という3x4行列の階数が2.
    • good
    • 5

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Q3次元空間内の直線の方程式

3次元空間内の直線の方程式の一般形は何でしょうか?
私の考えでは、2つの平面が交わった線として表すのでは
ないかと思いますが、どうでしょうか?つまり

aX+bY+cZ+d=0
eX+fY+gZ+h=0

いかがでしょうか?

Aベストアンサー

2点A,Bを通る直線の式は、
Oを原点、直線上の任意の点をPとし、
OPベクトルをp,OAベクトルをa,ABベクトルをdで表したとき
p=a+td  (tは実数)
とかけます。

たとえば2点A(-1,-2,-3),B(4,5,6)を通る直線の式は
p=(x,y,z)としたとき
(x,y,z)=(-1,-2,-3)+t(5,7,9)
となります。x,y,zはtの1次式で表されているので
すべてをt= の形に直すと
(x+1)/5=(y+2)/7=(z+3)/9
となり、こんなふうに直線ABを表現することも可能です。

もちろんpromeさんの表現の仕方も直線を表す1つの方法です。

Q三次元空間での直線の式

二次元で直線の式はy=ax+bとなることはわかります。では三次元になるとどうなるのですか?直感としては、z=ax+by+cとなるかな~と考えているのですが、これでは一直線じゃないような気もします。どなたか教えてください。また、できれば4次元以上ではどうなるのかも教えてほしいです。よろしくお願いします。

Aベストアンサー

3次元空間での直線の式ですが、扱いやすいのは、

 (x,y,z)=(a,b,c)+t(p,q,r)

といった形で表す形式です。

上記は、「点(a,b,c)を通り、方向ベクトルが(p,q,r)の直線」です。tは、パラメーター(媒介変数)です。

上記の直線は、No.1さんのように、

(x-a)/p = (y-b)/q = (z-c)/r

という形(tを消去した形)にも表せます。
(p,q,rのうち、1つ以上が0だったら別の形にする必要があるなど、紛らわしいですが。)

なお、ax+by+cz+d=0という形は、直線ではなく「平面」を表します。

Q3次元空間での傾き、切片の求め方

ある点S(X1,Y1)からある点G(X2,Y2)の直線があると仮定します。
このとき
傾きA=(Y2-Y1)/(X2-X1)
切片BはY=AX+Bより
   =Y-AX
と、2次元空間の場合はわかります。

ですがこれが3次元空間になるとどのように解けばいいのか分からないです。分かる人がいたら教えてください。



ある点S(X1,Y1,Z1)からある点G(X2,Y2,Z2)の直線があると仮定します。
このとき
傾きA= ?
切片B= ?

Aベストアンサー

3次元空間では、「切片」はあるとは限りません。
というのは、軸と交わらないこともあるからです。

3次元空間の場合には、唐突にも見えますがベクトルの考え方を使います。
これは 2次元空間の場合にも応用できます。

以下では、ベクトルの知識はもたれているとして記します。

直線上のある点Aの位置ベクトルを a↑と表すことにします。
方向ベクトルを u↑とすると、直線上の点Pの位置ベクトルp↑は

p↑= a↑+ k* u↑ (kは実数)

と表されます。

方向ベクトルは「ある点S(X1,Y1,Z1)からある点G(X2,Y2,Z2)」であれば
SG↑= (X2-X1, Y2-Y1, Z2-Z1)
として表すことができます。
ベクトルの考え方をしっかりもっておけば、2次元でも3次元でも対処できるようになります。

Q平面の交線の方程式

2平面の交線の方程式はどうやって求めるのですか?

例で適当に問題を作ってみたんで教えてください
x-y+3z-1=0,x+2y-z-3=0

どなたか教えていただけませんか?

Aベストアンサー

akatukinoshoujoさん、こんにちは。

>x-y+3z-1=0・・・・(1)
>x+2y-z-3=0・・・・(2)とおきましょう。
(1)(2)より、連立方程式を解いて、x、y、zをそれぞれどれか一つの文字で表していきます。

(1)×2 2x-2y+6z-2=0
(2)   x+2y-z-3=0
------------------------------これを足してみると
      3x+5z-5=0
      x=-5(z-1)/3・・・・(☆)

(1)   x-y+3z-1=0
(2)×3 3x+6y-3z-9=0
------------------------------これらを足し合わせると
      4x+5y-10=0
      4x=-5(y-2)
      x=-5(y-2)/4・・・・(★)

(☆)(★)より、yとzをxであらわせたので、つなげてみましょう。

x=-5(y-2)/4=-5(z-1)
もうちょっと整理すると、
x/5 =(y-2)/-4 =(z-1)/-3
となって、これは(0,2,1)を通り、方向ベクトルが(5,-4,-3)の
直線になることを示しています。


方程式が2つあるので、どれか一つの文字で表して、つなげてみるといいですね。
頑張ってください!!

akatukinoshoujoさん、こんにちは。

>x-y+3z-1=0・・・・(1)
>x+2y-z-3=0・・・・(2)とおきましょう。
(1)(2)より、連立方程式を解いて、x、y、zをそれぞれどれか一つの文字で表していきます。

(1)×2 2x-2y+6z-2=0
(2)   x+2y-z-3=0
------------------------------これを足してみると
      3x+5z-5=0
      x=-5(z-1)/3・・・・(☆)

(1)   x-y+3z-1=0
(2)×3 3x+6y-3z-9=0
------------------------------これらを足し合わせると
   ...続きを読む

Q3次元空間内での線分の交差判定について

はじめまして。
3D関係のプログラムを組む上で、線分同士の判定を行う必要があるのですが
数学の知識が乏しく困っています。

3次元空間内の線分ABとCDが交差しているか判定し、
交差していればその交点を求めたいのです。
2次元の場合はできたのですが、3次元になるとどうやって計算すればよいのか
わかりません。(交差以外に、ねじれの位置関係があるんですよね?)
どなたか教えていただけると助かります。

Aベストアンサー

1)一般に「捩れの位置」になりますから、互いに最短の位置を求める問題に帰着します。a-kumaさんの言われるような連立一次方程式では未知数が2つ、式がx,y,z3つとなるので解けません。2次元ならyosizoさんの言われるように未知数と式の数が2つで簡単に解けます。

2)線分AB、CDの何れかの長さが<ε以下、または、線分AB、CDはほぼ平行ならゼロ割を起こすか答えが求まっても答えの精度が著しく低下します。このチェックも実際のプログラムでは絶対に必要です。

3)で、以下、2)のチェック済みであると仮定して.....。

4)たまたま最近3D-CAD用に作ったもので数式の求めた方を忘れてしまったが、

// t0:AB方向単位ベクトル、t1:CD方向単位ベクトル、として、
// float spd = <t0・t1>即ち、ベクトルt0とt1の内積

float det= spd*spd - 1.0f; // spd:AB方向単位ベクトル
v01 = C - A; //3Dベクトル (C-A)
u0 = (spd*<v01・t1> - <v01・t0>) / det;
u1 = (<v01・t0> - spd*<v01・t1>) / det;

として、パラメータ、u0,u1が求まります。ここに、
u0:AB方向パラメータ、u0=0の時、q0(u0)=Aで、u0はAからの距離を表わす。
■q0(u0)=A+u0*t0...............Equ.1)
u1:CD方向パラメータ、u1=0の時、q1(u1)=Cで、u1はCからの距離を表わす。
■q1(u1)=C+u1*t1...............Equ.2)

これで、捩れの位置に2点求まるのですが、

・2点が距離の許容誤差よりも離れていたら、エラーとする。
・2点が距離の許容誤差以内なら、2点の中点を取る。
・中点がいやなら、重みを掛ける(場合もある)。

この説明で不十分ならあとで補足します。

1)一般に「捩れの位置」になりますから、互いに最短の位置を求める問題に帰着します。a-kumaさんの言われるような連立一次方程式では未知数が2つ、式がx,y,z3つとなるので解けません。2次元ならyosizoさんの言われるように未知数と式の数が2つで簡単に解けます。

2)線分AB、CDの何れかの長さが<ε以下、または、線分AB、CDはほぼ平行ならゼロ割を起こすか答えが求まっても答えの精度が著しく低下します。このチェックも実際のプログラムでは絶対に必要です。

3)で、以下、2)のチェック済みである...続きを読む

Q3次元空間での2直線の交点の求め方

悩んでおります.御力添えを願います.

以下の条件下にて,2つの直線式を求め,その交点を求めようとしております.

1.点p(a0,b0,c0)と点q(a1,b1,c1)の座標は既知.

2.点s(d,e,f)は,座標は未知であるが,点p,点qへ向けて2つの直線を延ばしており,それぞれの直線の傾きが既知.

以上の条件をもとに,点s(d,e,f)の座標を求めようとしています.


私の考えた手法は,以下の物ですが上手くいきません.

1.点sから伸びる2つの直線の方向余弦を求める.
例)vx = r * cosα,vy = r * cosβ, vz = r * cosγ
(上記の様に2点へと伸びる直線の方向余弦をそれぞれ求める)

2.求めた方向余弦と,点p,点qを用いて2つの直線式を表す.
例)x = a0 + vx0 * t, y = b0 + vy0 * t, z = c0 + vz0 * t
x = a1 + vx1 * s, y = b1 + vy1 * s, z = c1 + vz1 * s
  
3.誤差を考慮し,2直線間の距離が1番小さくなる2点を求める.
例)(距離)^2 = {a0 + vx0 * t - a1 - vx1 * s}^2
= {b0 + vy0 * t - b1 - vy1 * s}^2
= {c0 + vz0 * t - c1 - vz1 * s}^2
 
  上記の式をs,tに関して偏微分してやり,それぞれを0として連立 方程式を解き,s,tを求める.

  求めたs,tを各直線式に代入してやり,2直線間の距離が最も短く なる2点を求める.

4.その2点の線分上の中点を求め,点s(d,e,f)とする.

上記手法で求めようとしましたが,どうも点sの座標が求まりません.

点sで方向余弦を求めるのが駄目なのでしょうか?
2直線間の距離が最も短くなる2点の求め方が駄目なのでしょうか?

幾何学初心者なため,混乱しております.
宜しくお願いいたします.

悩んでおります.御力添えを願います.

以下の条件下にて,2つの直線式を求め,その交点を求めようとしております.

1.点p(a0,b0,c0)と点q(a1,b1,c1)の座標は既知.

2.点s(d,e,f)は,座標は未知であるが,点p,点qへ向けて2つの直線を延ばしており,それぞれの直線の傾きが既知.

以上の条件をもとに,点s(d,e,f)の座標を求めようとしています.


私の考えた手法は,以下の物ですが上手くいきません.

1.点sから伸びる2つの直線の方向余弦を求める.
例)vx = r * cosα,vy = r *...続きを読む

Aベストアンサー

2直線の傾き s, t を勝手に与えると、交点があるとは限りませんね。
その場合は最小二乗解を求める、という作戦ですか。
ならば、一般化逆行列の手法を使えないものでしょうか ?

 http://www7.ocn.ne.jp/~kawa1/GIM.PDF
>一般逆行列

Q二平面の交線の方程式

二平面の交線の方程式

(1)二平面 x+2y-z-4=0 と x-y+2z-4=0 の交線の方程式を求めよ。
(2)(1)の交線と点(0,1,0)とを通る平面の方程式を求めよ。

解答よろしくお願いいたします。

Aベストアンサー

(1)x+2y-z-4=0
x-y+2z-4=0
をx,yの連立方程式として解くと
x=-z+4 (z=-x+4)
y=z
よって-x+4=y=z

(2) (-1,1,1)はこの交線の方向ベクトル
   (4,0,0)はこの交線上にあり,これと(0,1,0)を結ぶベクトル(4,-1,0)
   2つのベクトル(-1,1,1),(4-1,0)に垂直なベクトル(1,4,-3)を求めて,これが求める平面の法線ベクトル。
求める平面上の任意の点を(x,y,z)とすると,これと(0,1,0)を結ぶベクトル(x,y-1,z)は
(1,4,-3)と垂直より
x+4(y-1)-3z=0
∴ x+4y-3z-4=0

Q3次元ベクトルをある軸ベクトルで回転させたい

3次元ベクトルの求め方を教えてください。

下記図のように始点を軸ベクトルでθ(度)だけ回転したときの?の位置を求めたいのです。
これはどのような計算方法になるのでしょうか?なかなか思いつかなくて非常に悩んでいます。
アドバイスや回答をいただけたら助かります。よろしくお願いします。

Aベストアンサー

先ず、中心点(Sx,Sy,Sz)が原点にくるよう全体を平行移動させます。
(一番最後に元に戻します)
始点(Px,Py,Pz)は、(Px-Sx,Py-Sy,Pz-Sz)に移ります。この座標を(Px',Py',Pz')とします。

次に、回転軸ベクトル(Ax Ay Az)を回転させ、x軸に合致させます。それには二回の
回転変換が必要です。
最初に、ベクトル(Ax Ay Az)と、x軸方向単位ベクトル(1 0 0)のなす平面の法線ベクトルが
z軸に合うよう、x軸を回転させます(その角度をφとします)。
すると、回転軸ベクトルはx-y平面上に乗るので、それがx軸に合うよう、z軸を回転させます
(その角度をψとします)。

ベクトル(Ax Ay Az)と、x軸方向単位ベクトル(1 0 0)のなす平面の法線ベクトルは、(0 Az -Ay)。
x軸周りにφ回転させると、このベクトルは、
「1  0    0   「 0  =「      0
0 cosφ -sinφ   Az   Az・cosφ+Ay・sinφ
0 sinφ  cosφ」 -Ay」  Az・sinφ-Ay・cosφ」
で、z軸ベクトルに合うので
「      0      =「0
Az・cosφ+Ay・sinφ  0 
Az・sinφ-Ay・cosφ」  1」
これから、cosφ=-Ay/(Ay^2+Az^2)、sinφ=Az/(Ay^2+Az^2)
∴ φ=Arctan(-Az/Ay)

回転軸ベクトル(Ax Ay Az)は、
「1  0    0   「Ax =「      Ax      =「       Ax                   =「Ax 
0 cosφ -sinφ   Ay   Ay・cosφ-Az・sinφ   Ay・{-Ay/(Ay^2+Az^2)}-Az・{Az/(Ay^2+Az^2)}   -1
0 sinφ  cosφ」  Az」   Ay・sinφ+Az・cosφ」  Ay・{Az/(Ay^2+Az^2)}+Az・{-Ay/(Ay^2+Az^2)}」  0」
に変換され、x-y平面上に乗ります。これを(Ax' Ay' Az') とします。
つまり、(Ax' Ay' Az')=(Ax -1 0)

始点(Px',Py',Pz')もこの変換を受けるのですが、変換を全部纏めて後、一括変換させます。

今度は、x-y平面上に乗った回転軸ベクトル(Ax' Ay' Az')を、z軸の周りにψ回転させます。
「cosψ -sinψ 0 「Ax'  =「Ax'・cosψ-Ay'・sinψ =「Ax・cosψ+sinψ
sinψ  cosψ 0   Ay'   Ax'・sinψ+Ay'・cosψ   Ax・sinψ-cosψ
  0    0   1」  Az'」       Az'      」     0      」
これが、x軸ベクトルに合うので、
Ax・cosψ+sinψ=1
Ax・sinψ-cosψ=0
これから、cosψ=Ax/(Ax^2+1)、sinψ=1/(Ax^2+1)
∴ ψ=Arctan(1/Ax)

以上の回転の変換の積は、
「cosψ -sinψ 0 「1  0    0   =「cosψ -sinψ・cosφ  sinψ・sinφ
sinψ  cosψ 0   0 cosφ -sinφ   sinψ  cosψ・cosφ -cosψ・sinφ
  0    0   1」  0 sinφ  cosφ」   0     sinφ      cosφ   」

この変換を始点(Px',Py',Pz')に施します。
「cosψ -sinψ・cosφ  sinψ・sinφ  「Px' = 「Px'・cosψ-Py'・sinψ・cosφ+Pz'・sinψ・sinφ
sinψ  cosψ・cosφ -cosψ・sinφ  Py'   Px'・sinψ+Py'・cosψ・cosφ-Pz'・cosψ・sinφ
  0     sinφ      cosφ   」 Pz'」  Py'・sinφ+Pz'・cosφ               」 

この点を(Px”,Py”,Pz”)とします。

さて、ここでx軸に合った回転軸ベクトル(1 0 0)周りに(Px”,Py”,Pz”)を角度θ、回転させます。
「1  0    0   「Px” =「     Px”   
0 cosθ -sinθ   Py”  Py”・cosθ-Pz”・sinθ 
0 sinθ  cosθ」  Pz”」  Py”・sinθ+Pz”・cosθ」

これを(P_x, P_y, P_z)とします。

今度は、回転させた回転軸を元に戻す変換です。
回転の変換の逆行列は、行列各要素の余因子の行と列を入れ替えたものを行列式で割ったもので、
行列式は、(cosψ)^2+(sinψ)^2=1 なので、逆行列は
「 cosψ      sinψ        0  
-sinψ・cosφ  cosψ・cosφ   sinφ
sinψ・sinφ   -cosψ・sinφ  cosφ」

これを、(P_x, P_y, P_z)に施します。
「 cosψ      sinψ        0   「P_x =「P_x・cosψ+P_y・sinψ
-sinψ・cosφ  cosψ・cosφ   sinφ  P_y   -P_x・sinψ・cosφ+P_y・cosψ・cosφ+P_z・sinφ
sinψ・sinφ   -cosψ・sinφ  cosφ」 P_z」  P_x・sinψ・sinφ-P_y・cosψ・sinφ+P_z・cosφ」

結局、θ回転後のP点の座標は、
x座標 : P_x・cosψ+P_y・sinψ
y座標 : -P_x・sinψ・cosφ+P_y・cosψ・cosφ+P_z・sinφ
z座標 : P_x・sinψ・sinφ-P_y・cosψ・sinφ+P_z・cosφ
となります。

ここで、置き換えた変数を順次、元に戻します。
P_x、P_y、P_z を Px”、Py”、Pz” に、
Px”、Py”、Pz” を Px’、Py’、Pz’ に、
最後に、平行移動を戻して Px’、Py’、Pz’ を Px、Py、Pz に直します。

先ず、中心点(Sx,Sy,Sz)が原点にくるよう全体を平行移動させます。
(一番最後に元に戻します)
始点(Px,Py,Pz)は、(Px-Sx,Py-Sy,Pz-Sz)に移ります。この座標を(Px',Py',Pz')とします。

次に、回転軸ベクトル(Ax Ay Az)を回転させ、x軸に合致させます。それには二回の
回転変換が必要です。
最初に、ベクトル(Ax Ay Az)と、x軸方向単位ベクトル(1 0 0)のなす平面の法線ベクトルが
z軸に合うよう、x軸を回転させます(その角度をφとします)。
すると、回転軸ベクトルはx-y平面上に乗るので、それがx軸...続きを読む

Q3次元の近似直線

こんにちは。2次元で実験データなどの点列から近似直線を求めるのは、最小二乗法の基本問題ですが、3次元の点群から直線の方程式(x-x0)/a=(y-y0)/b=(z-z0)/cを求めるにはどんなアルゴリズムを使いますか?スマートな方法があれば教えていただけたら幸いです。よろしくお願いします。

Aベストアンサー

3次元空間の曲面ではなく、直線に乗ると仰るのだから、
(1) x, y, zのどれかを与えて、残りの2つを推定する問題。
(2) <x[i],y[i],z[i]>と直線との距離d[i]の二乗和が最小になる直線を求める問題。
と分類すべきでしょう。

(1)の場合は、たとえばzを与えてx,yを求めたいのであれば、
・zからxを求める問題。
・zからyを求める問題。
の二つを別々に解けばおしまいです。
それぞれの解は(x=Az+B, yは任意)という平面と、(y=Cz+D, xは任意)という平面を定めますから、この二つの平面の交線が、求める直線ということですね。

(2)の場合はやっかいです。
[1]ちょっと手抜きしながらも、まともにやってみましょう。
(i) 直線をどう表すか。
ご質問の式を見ると、この直線はx軸、y軸、z軸のどれとも平行でも垂直でもないことが仮定されています。
ですから、zをパラメータとして
x=az+c
y=bz+d
と書いても良いでしょう。a,b,c,dが決められれば良い訳です。
(ii) 点<p,q,r>と直線との最短距離を求める。
直線上の任意の点<az+c,bz+d, z>と点<p,q,r>の距離をdとすると
d^2 = (az+c-p)^2+(bz+d-q)^2+(z-r)^2
= (az)^2+2az(c-p)+(c-p)^2+(bz)^2+2bz(d-q)+(d-q)^2+z^2-2rz+r^2
です。これが最小になるzを求めると、
0=∂(d^2)/∂z = 2(az+c-p)a+2(bz+d-q)b+2(z-r)
ゆえに
z=(ap+bq+r-ac-bd)/(a^2+b^2+1)
であって、このときの最短距離h(p,q,r)は
h(p,q,r)^2 = (ap+bq+r-ac-bd)^2/(a^2+b^2+1)+2(ap+bq+r-ac-bd)(ac-ap+bd-bq-r)/(a^2+b^2+1)+(c-p)^2+(d-q)^2+r^2
わあ、とんでもないですね。
(iii) じゃあ、直線を求めるには?
S=Σ(h(x[i],y[i],z[i]))^2  (i=1,2,...,N)
を最小化するには
∂S/∂a = 0
∂S/∂b = 0
∂S/∂c = 0
∂S/∂d = 0
を解く必要があります。言い換えれば
∂(h(x[i],y[i],z[i]))/∂a
∂(h(x[i],y[i],z[i]))/∂b
∂(h(x[i],y[i],z[i]))/∂c
∂(h(x[i],y[i],z[i]))/∂d
を求めておいて
Σh(x[i],y[i],z[i]) (∂(h(x[i],y[i],z[i]))/∂a)=0
Σh(x[i],y[i],z[i]) (∂(h(x[i],y[i],z[i]))/∂b)=0
Σh(x[i],y[i],z[i]) (∂(h(x[i],y[i],z[i]))/∂c)=0
Σh(x[i],y[i],z[i]) (∂(h(x[i],y[i],z[i]))/∂d)=0
という連立方程式を解くことになります。
これがa,b,c,dについて非線形である(一次式でない)ことは言うまでもありません。一筋縄では行かず、反復計算で徐々に収束させていくしかありません。

[2]手抜き
もうすこし手抜きの方法を考えてみましょう。
この座標系を回転・平行移動した座標系をX-Y-Zとします。そして、求めたい直線がZ軸と一致するようにしたとします。回転と平行移動は行列を使って
X = R x + p
Y     y   q
Z     z   r
と表せます。Rは3×3の行列で Rの転置をR'とすると RR' = R' R = 単位行列
となる行列です。各点<x[i],y[i],z[i]>をこの変換で<X[i],Y[i],Z[i]>に写したとすると、
直線、すなわちZ軸との最短距離はX[i]^2 + Y[i]^2ですから、他のどんな回転・平行移動の仕方に比べても
U=Σ(X[i]^2 + Y[i]^2)  (i=1,2,....,N)
が最小になっている筈で、しかも
S=U
です。
 さて、UはZ[i]の値とは無関係ですからZ[i]を求める必要はない。さらに座標系をZ軸の周りで回転してもUは変化しません。従って、
X = R x + p
Y     y   q
      z
R =P(α)Q(β)
P(α)=cosα  0  -sinα
       0   1    0
Q(β)= 1  0     0
      0 cosβ -sinβ
      0 sinβ  cosβ
とすれば良いのです。展開すれば
X[i] = x[i]cosα-y[i]sinαsinβ-z[i]sinαcosβ+p
Y[i] = y[i]cosβ-z[i]sinβ+q
ですね。
ここでα、β、p、qを決めたい訳です。

 始めに(1)の問題を解けば、α、β、p、qの大体の値を求めることができます。これを使ってU(α,β,p,q)を計算します。
 それから、U(α,β,p,q)が小さくなるようにα、β、p、qをちょっとずつ改良して行けば良いでしょう。これには微小な角度Δα、Δβを使って、
P(Δα)=cosΔα  0  -sinΔα
        0    1    0
      sinΔα  0   cosΔα
Q(Δβ)= 1  0      0
       0 cosΔβ -sinΔβ
       0 sinΔβ  cosΔβ
を作り、P(α)、Q(α)にそれぞれ掛け算すれば良い。
P(α+Δα)=P(Δα)P(α)
Q(β+Δβ)=Q(Δβ)Q(β)
だからです。さらにここで、Δα、Δβは微小だから、
cosΔα≒1、cosΔβ≒1、sinΔα≒Δα、sinΔβ≒Δβ
(Δα)^2≒0、(Δβ)^2≒0、ΔαΔβ≒0
という近似をしても構わないでしょう。
この近似を利用すると計算は一層簡単になり、Uを最小にするようにΔα、Δβ、p、qを求める問題は線形最小二乗法(一次式の最小二乗法)になってしまい、簡単に解けます。
それを解いてから、真面目にP(α)、Q(α)を計算しなおし、また線形最小二乗法を解く。これを収束するまで繰り返せば良いのです。

なお、stomachmanは計算間違いの常習犯ですから、チェックは慎重に。

3次元空間の曲面ではなく、直線に乗ると仰るのだから、
(1) x, y, zのどれかを与えて、残りの2つを推定する問題。
(2) <x[i],y[i],z[i]>と直線との距離d[i]の二乗和が最小になる直線を求める問題。
と分類すべきでしょう。

(1)の場合は、たとえばzを与えてx,yを求めたいのであれば、
・zからxを求める問題。
・zからyを求める問題。
の二つを別々に解けばおしまいです。
それぞれの解は(x=Az+B, yは任意)という平面と、(y=Cz+D, xは任意)という平面を定めますから、この二つの平面の交線が、求め...続きを読む

Q2点を通り、平面1に垂直な平面2の求め方

A=(2,1,-1),B=(3,2,1)を通り,平面4x-y-z+2=0に垂直な平面のとき方を教えてください

Aベストアンサー

ベクトルABをAB↑と書き、
点A,点Bの位置ベクトルをそれぞれA↑,B↑と書くことにします。
A↑,B↑は成分表示は座標と同じになります。

A,Bを通る直線の方向ベクトルAB↑は
AB↑=B↑-A↑=(3,2,1)-(2,1,-1)=(3-2,2-1,1-(-1))=(1,1,2) ...(1)

平面4x-y-z+2=0 ...(2)
の法線の方向ベクトルC↑は
C↑=(4,-1,-1) ...(3)

従って2点A,Bを通り平面(1)に垂直な平面上の任意点P(x,y,z)は媒介変数s,tを使って
P↑=(x,y,z)
=A↑+sAB↑+tC↑=(2,1,-1)+s(1,1,2)+t(4,-1,-1)
=(2+s+4,1+s-t,-1+2s-t) ...(4)
と表すことができます。
(4)は2点A,Bを通り平面(1)に垂直な平面の媒介変数表示になります。
点P(x,y,z)のx,y,zは
x=2+s+4t ...(5-1), y=1+s-t ...(5-2), z=-1+2s-t ...(5-3)
となります。
これから媒介変数s,tを消去すればs,tを使わない平面の方程式が得られます。
(5-2)-(5-3)から
 y-z=2-s → s=2-y+z ...(6)
(6)を(5-2)に代入して
 t=1+s-y=3-2y+z ...(7)
(6),(7)を(5-1)に代入すれば
 x=4-y+z+12-8y+4z=16-9y+5z
移項して
 x+9y-5z-16=0 ...(答え)

ベクトルABをAB↑と書き、
点A,点Bの位置ベクトルをそれぞれA↑,B↑と書くことにします。
A↑,B↑は成分表示は座標と同じになります。

A,Bを通る直線の方向ベクトルAB↑は
AB↑=B↑-A↑=(3,2,1)-(2,1,-1)=(3-2,2-1,1-(-1))=(1,1,2) ...(1)

平面4x-y-z+2=0 ...(2)
の法線の方向ベクトルC↑は
C↑=(4,-1,-1) ...(3)

従って2点A,Bを通り平面(1)に垂直な平面上の任意点P(x,y,z)は媒介変数s,tを使って
P↑=(x,y,z)
=A↑+sAB↑+tC↑=(2,1,-1)+s(1,1,2)+t(4,-1,-1)
=(2+s+4,1+s-t,-1+2s-t) ...(4)
と表すことができます。
(4)は2点A...続きを読む


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

人気Q&Aランキング