4.2 ウインドウ・ビューポート変換

  次のページ

図形を CRTモニター上にグラフィックス表示する処理は、1.3 節でも説明したように、カメラで写真を撮影し、そのフィルムを印画紙に焼き付ける手順を考えるのが説明に便利です。ここでは、フイルムを焼き付ける手順について説明を補います。画像を表示する装置で、プロッターなどのように用紙を使う場合、画像の描ける範囲は余白などを見込むので、用紙の全寸法にはなりません。この範囲のことを、ビューポート(viewport)と呼びます。ファックスで使うロール状の用紙では、長手方向にビューポートの寸法を変えることができます。 CRTモニターでは、矩形画面の最大寸法が固定されていますが、その中で適当に区切った矩形領域を設定して画像を表示します。これがビューポートです。カメラのファインダーを覗いて見える、区域の限られた景色は、ウインドウで区切られた景色といいます。これをビューポートにはめ込むように表示させます。この処理をウインドウ・ビューポート変換と呼びます。WindowsのOSでは、ビューポートの概念をウインドウと呼ぶので一般のユーザーは混乱を起こしています。

ビューポートを指定するとき、グラフィックス装置(デバイス)の作画範囲を知る必要があります。これは、面倒なことに、装置ごとに仕様が異なっていますし、作図命令の方式も違ったりします。そのため、デバイスが変っても、変更が最小限になるような方法が考えられています。作図命令は、デバイスドライバ(device driver) を介して間接的にグラフィックス装置に伝えられます。装置が変れば、デバイスドライバを変えるだけで済むようにします。GEOMAPの開発においても、この考え方が取られていて、作図命令が仮想のファイルへの書き出しの形に作ってあります。このとき、最初に発信される情報がコマンド DPWIND です。これがウインドウ・ビューポート変換を行ないます。

DPWIND
xcen,
ycen,
hsize
 グラフィック装置に、適当な矩形領域(ビューポート)を決めて、そこにフィルム座標系(ウインドウ)を設定します。矩形領域の中心座標を(xcen, ycenn) とし、横全幅を hsizeに定めます。この指定ではビューポートの縦横比を決めてありませんので、横長のビューポートを指定すると別の画面の画像に比べて天地が切れることがあります。GEOMAPが最初に立ち上がったときのデフォールトの設定値は、DPWIND 0, 0, 100. になっています。処理の途中で、コマンドCMINITで初期化しても、その前の設定値が生きています。
DPCAM
pos(3),
th,
iproj
 三次元の世界座標の中にあって、人間の眼をモデル化します。カメラを手に持って、対象物を狙うのです。世界座標の中でどの位置に立って、どの点を狙い、カメラをどう傾けるか(縦に構えるか、横に構えるかの角度)などを考えると、かなり面倒です。そこで、最もやさしい方法として、世界座標の原点から離れた場所から、いつでも世界座標の原点を見ることにしました。カメラで得られる画像は中心投影、つまり透視投影です。これを投影モード iproj =0 としてデフォルトの設定にしてあります。投影モ−ド1〜7は平行投影モ−ドです。35mmカメラのレンズには、標準・望遠・ワイドなどの呼び方がありますが、これはレンズの焦点距離f とフィルムの横幅w の比 th=w/f によって決まる性質です。コマンドDPCAM は、この仮想のカメラのフィルム寸法の領域を、DPWINDで設定されているビューポートいっぱいにはめこみます。

次のページ