DEF ha(f)=MOD(f,cEps*10) !評価関数
SUB hatch(t, x,y,c) !ハッチ形状なら点(x,y)を描く
LET flg=0
IF (t=1 OR t=5) AND ha(y)<cEps THEN LET flg=1 !横
IF (t=2 OR t=5) AND ha(x)<cEps THEN LET flg=1 !縦
IF (t=3 OR t=6) AND ha(x+y)<cEps THEN LET flg=1 !左斜め
IF (t=4 OR t=6) AND ha(x-y)<cEps THEN LET flg=1 !右斜め
IF t=0 OR flg=1 THEN !t=0はベタ塗り
SET POINT COLOR c
PLOT POINTS: x,y
END IF
END SUB
!条件を満たす領域を描く
SET POINT STYLE 1 !ドット形式
FOR j=1 TO h !画面全体を走査する
LET y=WORLDY(j) !ドットをxy座標に変換する
FOR i=1 TO w
LET x=WORLDX(i)
WHEN EXCEPTION IN
!不等式が示す領域 ※y>f(x)はf(x)>0、y<f(x)はf(x)<0を意味する
IF y>f(x) THEN CALL hatch(4, x,y,4) !条件を満たすなら
IF g(x,y)<0 THEN CALL hatch(3, x,y,2)
!連立不等式が示す領域
!IF y>f(x) AND g(x,y)<0 THEN CALL hatch(5, x,y,2) !条件を満たすなら
USE
END WHEN
NEXT i
NEXT j
!曲線を描く ※y=f(x)
FOR x=a TO b STEP cEps
WHEN EXCEPTION IN
PLOT LINES: x,f(x); !折れ線で近似する
USE
PLOT LINES
END WHEN
NEXT x
PLOT LINES
PLOT TEXT ,AT -2,4: "f(x)"
!曲線を描く ※連続なf(x,y)=0
SET POINT COLOR 1
FOR y=c TO d STEP cEps
LET x=a
LET z=g(x,y)
FOR x=a TO b STEP cEps
LET z0=z
LET z=g(x,y)
IF z0*z<0 THEN PLOT POINTS: x,y !符号が変われば
NEXT x
NEXT y
PLOT TEXT ,AT -3,-3: "g(x)"
質問
投稿者:ゆう 投稿日:2008年10月19日(日)09時43分19秒2つの関数f(x)とg(x)によって囲まれた図形を塗りつぶしたいのですが、どうやってやったら出来ますか?回答お願いします。