前のページの続きです
さて、計算式の説明です。(キョーミない人は、無視してくださいね)
図(1)
まず、被写体 X が 画角 aθ にみえる 視点 P を設定してここを「原画 A」 とします。
同じ 被写体 X が 画角 bθ に見える点まで移動したとして、「原画 B」 を考えます。
視点 P から任意の距離に置いた仮想投影面 を考えると、ここに投影された 画角
aθ および bθ が、それぞれの原画の寸法 a b となります。
図(2)
任意の中間地点「 原画(または動画) C 」の 寸法 c が欲しいので、
以下の様な計算式を立てます。
前提条件として
原画 A のサイズ = a
原画 B のサイズ = b
A-B 間の分割数 = K
(A-B 間の中枚数 = K-1)
求める原画 C のポイント = P :( P は A から近い順に 1.2.3...K-1.)
:( P=0 で A P=K で B に なる。 )
求める原画 C のサイズ = c
被写体の仮想の寸法 = X
仮想投影面迄の距離 = D
仮想投影面から被写体までの距離
原画 A に対して = Za
原画 B に対して = Zb
原画 C に対して = Zc
と、仮定します。
-----------------------------------------------------------------------------
原画の寸法は、共通の仮想投影面で切り取った被写体の画角の寸法なので
以下の様な式にできる。(* これが、厳密に成立するのは単点透視の場合のみです)
(1) a=(D*X)/(D+Za)
(2) b=(D*X)/(D+Zb)
(3) c=(D*X)/(D+Zc)
ここで、仮想投影面と原画 C の間の距離は仮定から、以下の様に導かれる。
(4) Zc=P*(Zb-Za)/K+Za
式(4) を 式(3) に代入して以下の 式(6)が得られる
(6) c=(D*X)/(D+P*(Zb-Za)/K+Za)
-----------------------------------------------------------------------------
式(1) を移項して Za に代入できる 式(7) にする
(1) a=(D*X)/(D+Za)
a*(D+Za)=(D*X)
a*D+A*Za=(D*X)
a*Za=(D*X)-(a*D)
a*Za=D*(X-a)
(7) Za=D*(X-a)/a
-----------------------------------------------------------------------------
同様の手順で Zb に代入できる 式(8) を得る
(8) Zb=D*(X-b)/b
-----------------------------------------------------------------------------
式(6) に 式(7) および 式(8)で、得られた Za Zb を代入してみると・・・
c=(D*X)/(D+P*((D*(X-b)/b)-(D*(X-a)/a))/K+(D*(X-a)/a))
=(D*X)/(D+P*(((D*X-D*b)/b)-((D*X-D*a)/a))/K+((D*X-D*a)/a))
=(D*X)/(D+P*((D*X/b-D)-(D*X/a-D))/K+(D*X/a-D))
=(D*X)/(D+P*(D*X/b-D*X/a)/K+(D*X/a-D))
=(D*X)/(D+P*(a*D*X-b*D*X)/(a*b*K)+(D*X/a-D))
=(D*X)/(D+(a*D*P*X-b*D*P*X)/(a*b*K)+(D*X/a-D))
=(D*X)/((a*b*D*K+a*D*P*X-b*D*P*X+b*D*K*X-a*b*D*K)/(a*b*K))
=(a*b*D*K*X)/(a*b*D*K+a*D*P*X-b*D*P*X+b*D*K*X-a*b*D*K)
~ ~ ~ ~ ~ ~
=(a*b*K*X)/(a*b*K+a*P*X-b*P*X+b*K*X-a*b*K)
~~~~~ ~ ~ ~ ~~~~~
=(a*b*K*X)/X*(a*P-b*P+b*K)
(9) =(a*b*K)/(a*P+b*(K-P))
あら不思議、未知数だった X と D は すっぱりと消えてなくなって
式(9) が、あらわれました。
-----------------------------------------------------------------------------
よって、 求める原画 C の サイズは、
c = (a * b * K) / (a * P + b * (K-P))
と なります。
-----------------------------------------------------------------------------
おまけ ですが、同様の計算で画面上の位置も求める事ができます。
(*これが成立するのは、被写体の軌道が直線移動のときだけです)
A 点の座標 = (Xa,Ya)
B 点の座標 = (Xb,Yb)
C 点の座標 = (Xc,Yc)
と、おくと
-----------------------------------------------------------------------------
Xc = Xa * Xb * K / ( Xa * P + Xb * (K-P))
Yc = Ya * Yb * K / ( Ya * P + Yb * (K-P))
-----------------------------------------------------------------------------
以上の式は、 「 単点透視 」 及び 「 視線方向に垂直な長さ 」 に のみ、
正確な値が得られる式です。
それ以外の場合には近似値として扱ってください。
|