• ベストアンサー

遠近法の計算方法を教えてください。

50m×60mのグランドを高さ5m、20mから離れたところから写真を撮り、1m×1mごとに座標軸を引きたいと考えています。 やりたいことを画像にまとめました。 どうやら遠近法(減衰比)らしいのですが、線を引く座標の求め方がよくわかりませんでした。 どなたか、座標の求め方についてアドバイスをください。 よろしくお願いします。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

カメラからグランドの各点を見たときの、横方向の角度と、縦方向の角度を求め、それをX座標、Y座標にしたらどうですか。 3次元座標で考えて、 グランドの4隅を(-30,50,0),(-30,0,0),(30,0,0),(-30,50,0) カメラの位置を(0,-20,5)とすると、 グランド上の座標(x,y)に対し、 横方向の角度 X=arctan(x/(y+20)) 縦方向の角度 Y=arctan((y+20)/5)

pukukozo
質問者

お礼

早速の回答、ありがとうございます。 Excelで検証してみました。 イメージ通りのものができそうです。 ネットで調べていたら、今回質問した内容は一点透視図法って言うらしいですね。 上記のやり方で二点透視図法についても確認してみます。

その他の回答 (1)

  • moumougoo
  • ベストアンサー率38% (35/90)
回答No.2

視点vから物体上の点Rを結ぶ線とスクリーン平面の交点を求めればよいです。 スクリーン上の原点をp,座標を与える基底ベクトルをex, eyとするとき、 平面上の点qはある(a,b)の組があって q=p+a*ex+b*ey で与えられます。 一方、視点vから物体上の点Rを結ぶ線上の点qはある値kがあって q=v+k(R-v) で与えられます。この2つのqが一致するような、a,b,kを求めれば良い分けです。つまり、 p+a*ex+b*ey=v+k(R-v) ・・・(☆) をとけばよいわけです。 でも良く考えてください。スクリーンの基底ベクトルex, eyの取り方は自由です。 なので、それにはよらず点が決められるはずです。 ということは、aとかbとは関係なく、kだけが決められそう=簡単な計算がありそうです。 実際、外積×を使ってスクリーンの法線ベクトルを ez=ex×ey とすると☆の両辺にこれを掛けて内積・を取ると p・ez=v・ez+k(R-v)・ez よって、 k=(p-v)・ez/{(R-v)・ez} が求められます。 q=v+k(R-v) なので、kにこの値を代入すれば座標が求められます。 蛇足ですが、射影する平面の法線成分に着目すると、 kは、vからpへのベクトルとvからRへのベクトルの 射影する平面の法線成分の比になることが分かります。これは図面を書いてみるとよく分かります。 といった感じです。どうでしょうか?

pukukozo
質問者

お礼

ご丁寧な回答、ありがとうございました。 ただ、いまの私の知識では内容が難しく、理解するのに時間がかかりそうですが、確認させていただきます。

関連するQ&A