- ベストアンサー
立方体の透視投影時の辺の長さを算出する方法
- 立方体をディスプレイに透視投影したときの辺の長さを算出する方法について質問させていただきます。
- 直方体を真正面から見た状態で投影すると正方形が表示され、その各辺は10cmです。
- 右辺を軸として水平方向に回転させると2つの長方形が表示され、回転角度によって上辺の長さが異なります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
再度訂正です。 立方体の頂点の位置が#3で書いたものだと、視点が立方体の上面と同じ高さになります。 図bのようにするには、視点の高さが立方体の中央になっているので、 視点までの距離が60cmより少し長くなりますが、立方体の位置を5cm上に上げて、 (0,0,5),(-10,0,5),(-10,-10,5),(0,-10,5),(0,0,-5),(-10,0,-5),(-10,-10,-5),(0,-10,-5) としたほうがいいでしょう。
その他の回答 (3)
- nag0720
- ベストアンサー率58% (1093/1860)
#2です。訂正です。 点(x1,y1,z1)を、x軸を回転軸としてθ回転させると、 (x1,y1*cosθ+z1*sinθ,y1*sinθ-z1*cosθ) ↓ (x1,y1*cosθ-z1*sinθ,y1*sinθ+z1*cosθ) 視点の位置が立方体の中心と正面の正方形の中心とを通る直線上にないと、投影図は正確な正方形にはならないと書きましたが、大丈夫みたいです。 立方体の頂点の位置を、 (0,0,0),(-10,0,0),(-10,-10,0),(0,-10,0),(0,0,-10),(-10,0,-10),(-10,-10,-10),(0,-10,-10) とすれば正しく計算できるかもしれません。
- nag0720
- ベストアンサー率58% (1093/1860)
計算は面倒なので、考え方だけ書きます。 3次元座標で、視点(x0,y0,z0)から物体上の点(x1,y1,z1)を平面y=0に投影する場合を考えてみます。 2点(x0,y0,z0),(x1,y1,z1)を通る直線の式は、 (x-x0)/(x1-x0)=(y-y0)/(y1-y0)=(z-z0)/(z1-z0) この直線と平面y=0との交点の(x,z)座標が投影座標になります。 x=(x0y1-x1y0)/(y1-y0) z=(z0y1-z1y0)/(y1-y0) 点(x1,y1,z1)を、z軸を回転軸としてθ回転させると、 (x1*cosθ-y1*sinθ,x1*sinθ+y1*cosθ,z1) 点(x1,y1,z1)を、x軸を回転軸としてθ回転させると、 (x1,y1*cosθ+z1*sinθ,y1*sinθ-z1*cosθ) 視点を立方体の中心から60cm、回転軸を立方体の中心を通る垂直線と水平線、とすると、 立方体の頂点の位置を、 (5,5,5),(-5,5,5),(-5,-5,5),(5,-5,5),(5,5,-5),(-5,5,-5),(-5,-5,-5),(5,-5,-5) 視点を、(0,-60,0) として、上述の式から投影座標を計算すれば、2点間の長さが計算できますね。 立方体の最初の位置を変えることによって、回転軸を自由に設定できます。 なお、図aで、視点の位置が立方体の中心と正面の正方形の中心とを通る直線上にないと、投影図は正確な正方形にはなりません。 なので、視点の位置が正面右上の頂点から60cmとのことですが、どの方向からなのかがまだあいまいです。
- nag0720
- ベストアンサー率58% (1093/1860)
投影したときの辺の長さは視点の位置によって変わります。 視点が立方体からどのくらい離れているのか、または、無限遠点なのか。 図bを見ると、両端の縦の辺より中央の辺のほうが長く見えるので無限遠点ではないようですが。 (無限遠点の場合は縦の辺は全部同じ長さになります) 立方体の中心と視点との距離がわからないと辺の長さは計算できません。
お礼
早速ご回答いただき、ありがとうございました。 また、情報が足りず、失礼いたしました。 視点は、正面右上の頂点を、60cmの距離から見た場合とお考えください。 また、できれば無限遠点(平行投影)の場合の求め方につきましても ご教授いただけますと、大変助かります。
お礼
急用が入ったため、お礼を申し上げるのが遅くなりました。申し訳ございません。 何度も丁寧に解説を頂き、ありがとうございました。大変勉強になりました。 ご回答の内容をもとに、計算させていただきたいと思います。 その過程で、もしまた不明な点がございましたら、再度この掲示板で質問させていただきます。 ありがとうございました。