• ベストアンサー

距離で片方の点のZ1を求めるとき

二点X0,Y0,Z0とX1,Y1,Z1がある時、 距離を求めるのは下記の式でと教えて頂いたのですが、 距離 = √((X0-X1)^2+(Y0-Y1)^2+(Z0-Z1)^2) これを使って距離やZ1以外がわかっているときに 片方の点のZ1を求めたいのですが、 どのようにしたらいいでしょうか? 距離 = √((X0^2-2X0X1+X1^2)+(Y0^2-2Y0Y1+Y1^2)+(Z0^2-2Z0Z1+Z1^2) 距離 = (X0+√(-2X0X1)+X1)+(Y0+√(-2Y0Y1)+Y1)+(Z0+√(-2Z0Z1)+Z1) とやってみたのですが これからどうやってZ1を動かそうか???? [特にこの部分が√(-2Z0Z1)] となってしまいました この時点で間違ってるのでしょうか? 文字式で出したいのですがよろしくお願いいたします m(__)m

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

  • ベストアンサー
  • puni2
  • ベストアンサー率57% (1002/1731)
回答No.4

前の(No.3の)やり方ですが,ちょっと不十分なところがあります。 距離(以下dと書きます),(x0,y0,z0), (x1,y1,z1)のうちz1以外の値が与えられている,というのが条件ですが,この条件が信用できる(言い換えれば,この距離dの値は,実際に2点間の距離を求めた結果である)という保証が最初からあるのであれば,No.3のやりかたで求まります。 しかし,たとえば d=1 (x0,y0,z0)=(0,0,0) (x1,y1,z1)=(1,1,z1) なんていう条件だと,(x1,y1,z1)は原点を中心として半径1の球面上に無ければならないわけですから,どうがんばっても条件を満たす(1,1,z1)は存在しません。 そういう“意地悪”なデータも出てくる可能性があることを考慮に入れると,次のようにやり方を修正する必要があります。 まず,「両辺(≧0)のルートをとります。」の上の行まではそのままで良いです。 問題はそこから先で,おかしなデータの場合は両辺が非負という保証はないので,きちんと方程式を解く必要があります。 d^2 - {(x0-x1)^2+(y0-y1)^2} = (z0-z1)^2 これをz1に関する2次方程式と見て, z1^2 - 2z0z1 + {z0^2 - d^2 + (x0-x1)^2 + (y0-y1)^2} = 0 あとは解の公式を使ってください。 ちなみにこれの判別式を出してみると, D=4z0^2 - 4{z0^2 - d^2 + (x0-x1)^2 + (y0-y1)^2} =4{d^2 - (x0-x1)^2 - (y0-y1)^2} で,{ }の中は結局(z0-z1)^2に等しいですね。 つまり,「距離の2乗よりも(x0-x1)^2 + (y0-y1)^2のほうが大きい場合は,(z0-z1)^2<0にならなければならないので,これを満たすような実数z1は存在しない」ということです。

gotyan
質問者

お礼

有り難うございます。 そうですね 出来ないこともあるんですね.... じっくり読んで理解して使わせて頂きます。

その他の回答 (3)

  • puni2
  • ベストアンサー率57% (1002/1731)
回答No.3

最後から2番目の式を,一番最後の式に変形するところが違います。 一般的な形で書くと, √(a+b+c)=√a+√b+√c にはなりません。 (ためしにa=b=c=1を両辺に代入してみると,√3=3になってしまいますね) >距離やZ1以外がわかっているときに ということは,z1以外の座標値や距離は全部分かっているときにz1を求める式を作りたい,ということですね。 (言い換えれば,一番最初の式をz1について解く) (読みにくいので,変数は小文字を使わせてください) まず,最初の式 距離 = √{(x0-x1)^2+(y0-y1)^2+(z0-z1)^2} の両辺を2乗します。 距離^2 = (x0-x1)^2+(y0-y1)^2+(z0-z1)^2 z0やz1を含まない項を左辺に。 距離^2 - {(x0-x1)^2+(y0-y1)^2} = (z0-z1)^2 両辺(≧0)のルートをとります。 √[距離^2 - {(x0-x1)^2+(y0-y1)^2}] = | z0-z1 |  ← √(a^2)=|a|を用いました。 つまり,(ここから両辺を入れ替えて書きますが) z0≧z1のときは z0-z1=√なんとか ∴ z1=z0-√なんとか z0<z1のときは z1-z0=√なんとか ∴ z1=√なんとか-z0 まとめて書くと, z1 = | z0-√[距離^2 - {(x0-x1)^2+(y0-y1)^2}] | あってるかなあ。

  • debut
  • ベストアンサー率56% (913/1604)
回答No.2

>距離 = (X0+√(-2X0X1)+X1)+(Y0+√(-2Y0Y1)+Y1)+(Z0+√(-2Z0Z1)+Z1) はできません。 たとえば、√(a^2+b)とあるとき、a+√bにはなりません。注意してください。 変形の仕方は、(距離をDとします) 最初の式 距離 = √((X0-X1)^2+(Y0-Y1)^2+(Z0-Z1)^2) の両辺を2乗 して、D^2=(X0-X1)^2+(Y0-Y1)^2+(Z0-Z1)^2 とし、(X0-X1)^2+(Y0-Y1)^2 を移項しますと、  (Z0-Z1)^2=D^2-(X0-X1)^2-(Y0-Y1)^2 となり、Z0-Z1について解くと  Z0-Z1=±√{D^2-(X0-X1)^2-(Y0-Y1)^2} となり、さらにZ1について  解く(Z0を移項)と出したい式が得られるかと思います。

gotyan
質問者

お礼

有り難うございます。 やはり違ってましたか...orz 助かります。

  • theisman
  • ベストアンサー率47% (56/119)
回答No.1

距離をLとおけば、両辺を2乗して、 (X0-X1)^2+(Y0-Y1)^2+(Z0-Z1)^2 = L^2 (Z0-Z1)^2 = L^2 - (X0-X1)^2 - (Y0-Y1)^2 と、変形してしまえばいいのでは?

gotyan
質問者

お礼

有り難うございます。 もう片方に変化させるという手があるんですね(^^;

関連するQ&A

専門家に質問してみよう