このサイトはお使いのブラウザでは正常に動作しません。Google Chromeなど、別のブラウザを使用してください。
3次元 角度から座標を求めたい
直方体の1つの角を原点oとし、そこから伸びる3辺をx,y,zとする。
原点oから反対側の頂点までの長さcは
たぶん c = √( x*x + y*y + z*z )
そして zx面とcのなす∠Y, zy面とcのなす∠X はそれぞれ
∠Y = acos( √( x*x + z*z ) / c )
∠X = acos( √( y*y + z*z ) / c )
ではなかろうか? 合っているなら逆を求めたい。
つまり 長さc, ∠Y, ∠X の3つの数値から、
x,y,z を算出する式は作成可能でしょうか?
趣味的な問題なのでそれほど重要ではありませんが、
もし簡単に解けるのであればよろしくお願いします。
回答
こんにちは。
趣味で数学を考えるのは楽しいことです。
全部答えてしまったら楽しみがなくなってしまいそうなので、途中まで。
$ x^2 + z^2 = ( c \cos X )^2 $
$ y^2 + z^2 = ( c \cos Y )^2 $
$ x^2 + y^2 + z^2 = c^2 $
ですから、この3元連立方程式を解けば、∠X,∠Y,cの値からx、y、zが求まります。
これでわかりますか?結果がでたらコメント欄に書いてくれるとうれしいです!
式の意味がわからないとか、連立方程式がうまく解けないとかがあったら、コメント欄で聞いてください。
出来ました。 ①式と②式を③式に組み込んだら何故かz*zが求まる式になりました。 プログラム言語pythonで正しく逆算出来ることを確認しました。 自分は数学はあまり得意ではないので最初の数式(x,y,zから角度を求める式)を作るのに2週間以上もかかってしまいました。 この逆算式はほとんど諦めていたのでたいへん助かりました。 ありがとうございます。
お役にたてたのなら良かったです。またどうぞ!
すみません。今気が付いた。ので補足します。 よく見たらpythonの結果でxとyが逆だと気が付きました。 なのでもしかしたら、 ① x^2 + z^2 = (c*cos(Y))^2 ② y^2 + z^2 = (c*cos(X))^2 ③ x^2 + y^2 + z^2 = c^2 ではないかと考えた。 私の勘違いの可能性もあり、実際のところ結果が合っていればさほど問題ではないことなので投稿に躊躇してしまいますが、 他の方が見る可能性も考慮して一応念のため。 ちなみに、人間視点で本来見える周囲の景色は曲がっているだろう(高角レンズのように)というのを、3次元的に表現する方法として暫定で角度を求めてはどうか?というような個人研究です。 また質問する可能性は大いにあります。 それでは、ありがとうございました。
あ、言われて気が付きましたが、そうですね、XとYが逆でした。私のうっかり間違いです。てっきりはじめがX、あとがYと思い込んでしまってました。失礼しました。