仮想画面という設定も考えてみる。
255×211がサイズならば10倍の
2550×2110というサイズに設定する方法もある。
DEFINTA-Zを使って整数にしなければ小数点単位で計測はできる。
10倍では画面枠が25×21ドットと小さくなり実用的ではない。
やはり、3分の1程度の仮想図面、768×636が実用的だろうと思う。
まぁBlueMSXだから10倍速にもできるし、できなくもない。
と前回は少し長くなったが、仮に考えてみた。
2点透視図で左右を消失点にした。そして、
MSXで表示する画面の範囲がマゼンタで表示されている。
白い線が実線になる。これは壁のイメージだ。
たしかに小さい画面だが、
カメラアングルを設定するにはよい画面と思う。
といいながら、やってみたが座標変換がかなり面倒だとわかった。
これがたたき台のようなプログラムでMSXの画面外の点(仮想点)をつくるには
MSX画面を20%に縮小(W=.2)させることで仮想座標がわかれば傾きから
MSX画面内の終点座標を出すことができる。誤差はあるが±2程度で許容範囲になる
210行は画面の解像度と原点にする仮想座標(0,0)~(1024,1024)を指定することができるから
傾きによって画面を移動させることもできる。
計測するにはPX(1),PY(1)=始点でPX(2),PY(2)=終点(仮想点)になる
235行は実際に画面では指定できない座標になっているのがわかる。
描画するとMSX画面ではこのようなLINEが描かれるシミュレーションとなる。
そして元のパースとラインがあっているか仮想点である消失点があっているかを
見ることができる。
消失点ができればそれにならっていけばいい。