4.5 例題プログラム HIDDEN.BAS の解説
目次へ戻る
- 例題に使った三次元の幾何モデルは、滑らかな表面を持たせた、くびれた回転体としてPREVLを使い、icurvの指定を生かして滑らかな円柱モデルを作成しました。ユーザーは、PREVLの使い方にも注目して下さい。このモデルの特徴は、曲面を近似させる辺があること、凹(concave) な接続を持った面があること、の二つの性質です。
- コマンド HEDISP は、すべての辺を投影したワイヤーフレームモデルを描きます。
- コマンド HFDISP は、簡易隠れ線処理による作図をします。不可視の辺は、idashのパラメータを生かして、破線で表示させたものです。ただしモデルは円柱の組み合わせとして作りましたので、多角形の構成要素となる側面の縦の線は、見える線の性質を持ってはいますが、作図されません。円柱や円錐の側面が見える側から裏の見えない側に移るところでは、側面を構成する面が、一つは見える面、もう一つが見えない面となって、且つ、凸の接続になっていますので、見える辺として作図されます。このモデルは中央でくびれていますので、側面の接続が縦方向では凹の部分ができています。そのため、HFDISPでは完全な隠れ線処理の作図になりません。
- 次に完全隠れ線処理の指定である、コマンドHLDISPで作図させます。破線の指定をしましたので、少し見にくいのですが、HFDISPの作図例と比べて、隠れ線処理が実行された図であることを確かめることができます。
- 3Dモデルを2Dモデルに変換するコマンド HLIMAG で3Dモデル"A" から2Dモデル"B" を作ります。このコマンドは作図命令を持っていませんので、作図コマンドHDISP を使って2Dモデル"B" を描かせます。見えない線を描かないと、すっきりとした透視図になります。
- この例題ではコマンドHMIMAGを使用しませんが、HLIMAGと置き換えても同じ作図が得られます。内部のデータ構造はHLIMAGの場合よりも整理された形になります。このようにしたHLIMAGとHMIMAGとの2Dモデルの相違は、領域にハッチングをするときに差が表れます。
10 PRINT "GEOMAP Demonstration Program"
20 PRINT "--- Hidden Lines Elimination ---"
30 DIM APOS(2,7) : READ APOS
40 DATA -30 30 -20 30 -20 20 -10 20 -10 30 0 30 20 0
50 CAM(1)=400 : CAM(2)=10 : CAM(3)=-80 : TH=0.25
60 DPWIND 0,0,100. : DPCAM CAM,TH
70 REM === TEST BODY ================ PREVL
80 CMINIT
90 NP=7 : ANG=360 : MREV=12 : ICURV=1
100 PREVL "A", APOS, NP, MREV, ANG, ICURV
110 REM === DISPLAY EDGES AS A WIRE STRUCTURE ===== HEDISP
120 CLS
130 HEDISP "A" : PAUSE 5
140 REM === FAST HIDDEN LINES ELIMATION =========== HFDISP
150 IDASH=0
160 HFDISP "A", 0, IDASH : PAUSE 5
170 CLS
180 REM --- HIDDEN LINES BY DASHED LINES ---
190 IDASH=3
200 HFDISP "A", 0, IDASH
210 PAUSE 5 : CLS
220 REM === COMPLETE HIDDEN LINES ELIMINATION ===== HLDISP
230 PRINT "Wait a moment during hidden lines are removed"
240 REM HLDISP "A", 0, IDASH
250 REM === COMPLETE HIDDEN LINES ELIMINATION ===== HLIMAG
260 IDASH=4 : ITREE=0
270 HLIMAG "A", "B", ITREE, IDASH
280 HDISP "B", ITREE, IDASH
290 PAUSE 5: CLS
300 HDISP "B"
310 END
目次へ戻る