7章 平面図形の干渉処理

RUNI.BAS

7.1 プログラム RUNI.BAS の解説

目次へ戻る

以上がハッチングのアルゴリズムですが、交点を求める計算で問題が起きます。ハッチングの線分が、領域の頂点をちょうど通ると、線分を引く判定に困ります。このように判定が困難になるときは、ハッチングの線分と辺とが重なる場合にも起こります。数値計算の処理においても、計算誤差の影響が大きく現われます。これを避けるため、このハッチングの線分を、僅かに平行移動して交点の再計算をします。これによって、頂点との交差を外すことができます。僅かに平行移動した線分が、眼に見えるほど大きく動いて作図されることはありません。


10 REM ====== Interference Test ========
20 CMINIT
30 DIM POSA(2),POSB(2)
40 READ POSB : DATA 20 20
50 RECT "A",20.,20.
60 RECTM "B",POSA,POSB
70 COPY "A","A1","A2","A3"
80 COPY "B","B1","B2","B3"
90 CLS : HDISP "A" : HDISP "B"
100 HATCHR "A",1,2.,45.
110 HATCHR "B",1,2.,-45.
120 PRINT"Two Absolute Regions --hit enter for next--":PAUSE 10
130 RUNI "A","B" : CLS : HDISP "A"
140 HATCHR "A",1,2.,45.
150 PRINT"Unify Two Regions --hit enter for next--":PAUSE 10
160 ROVL "A1","B1" : CLS : HDISP "A1"
170 HATCHR "A1",1,2.,45.
180 HATCHR "A1",2,2.,-45.
190 PRINT"One is Overlaid to Another --hit enter for next--"
191 PAUSE 10
200 RSUB "A2","B2" : CLS : HDISP "A2"
210 HATCHR "A2",1,2.,45.
220 PRINT"One is Subtracted from Another --hit enter--":PAUSE 10
230 RINT "A3","B3" : CLS : HDISP "A3"
240 HATCHR "A3",1,2.,45.
250 PRINT "Logical AND between two Regions"
260 END

目次へ戻る