パースペクティブにそった作画 2
前のページの続きです さて、計算式の説明です。(キョーミない人は、無視してくださいね) 図(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)) ----------------------------------------------------------------------------- 以上の式は、 「 単点透視 」 及び 「 視線方向に垂直な長さ 」 に のみ、 正確な値が得られる式です。 それ以外の場合には近似値として扱ってください。 |
page-BACK | sub-INDEX | NEXT-page |
Nekomataya/kiyo 2001