課題 立体感のある球(pdfファイル)

立体感の ある球
課題
立体感のある球
円 の 中 心 (x,y)と 半 径 rを 少 し ず つ 変 化 さ せ る こ と に よ り 立 体 感 の あ る 球 を 描 画
す る 。 rmaxは 半 径 の 最 大 値 。
r
x 2 + y 2 +r ≦ rm ax
y
x
rmax
● プ ロ グ ラ ム ( KA641.bas)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
' << KA641.bas >>
' 立体感のある球
'
' グラフック画面の背景色を白に設定。
BackColor="White"
' グ ラ フ ィ ッ ク 画 面 の サ イ ズ ( 縦 200ピ ク セ ル 、 横 200ピ ク セ ル ) を 設 定 。
GScreen(300,300)
' 座 標 の 設 定 。 画 面 左 下 隅 の 座 標 を (-1.2,-1)、 右 上 隅 の 座 標 を (1,1.2)
' とする。
Window(-1.2,-1)-(1,1.2)
MathGraph On
'
' 初期設定。
' 中 心 (X,Y),最 大 半 径 RMAX,半 径 Rの 設 定 。
X=0: Y=0: RMAX=0.8: R=RMAX
' 中 心 x座 標 の 移 動 量 DX, 中 心 y座 標 の 移 動 量 DY、 半 径 Rの 変 化 量 DR。
DX=0.02: DY=0.04: DR=0.04
'
' 球の描画。
While R > 0
If Sqr(X*X+Y*Y)+R < RMAX Then
ForeColor="Black"
Circle(X,Y),R: ' (X,Y)を 中 心 と す る 半 径 Rの 円 を 黒 色 で 描 く 。
EndIf
'
' 移動量、変化量の更新。
DX=DX*0.8
- 1 -
立体感の ある球
30
31
32
33
34
35
36
37
DY=DY*0.9
DR=DR*1.1
' 中心、半径の更新。
X=X+DX
Y=Y+DY
R=R-DR
Wend
End
実行結果
グ ラ フ ィ ッ ク 画 面 の 点 (x,y)の 色 を 指 定 す る に は 、 RGB値 ( #RRGGBBの 形 )
を 使 う 方 法 が あ る 。 RR,GG,BBは 、 そ れ ぞ れ 16進 数 で 00~ FFの 値 を も つ 。
#RRGGBBは , #000000か ら #FFFFFFの 値 を 取 る 。
最 初 の 2桁 16進 数 は Red(赤 )の 輝 度 , 2番 目 の 2桁 16進 数 は Green(緑 )の 輝 度 ,
最 後 の 2桁 16進 数 は Blue(青 )の 輝 度 を 表 す 。
色
Black
Navy
Green
Teal
Maroon
Purple
Olive
Silver
Gray
Blue
Lime
Cyan
Red
Fuchsia
Yellow
White
RGB値
#000000
#000080
#008000
#008080
#800000
#800080
#808000
#C0C0C0
#808080
#0000FF
#00FF00
#00FFFF
#FF0000
#FF00FF
#FFFF00
#FFFFFF
- 2 -
立体感の ある球
● プ ロ グ ラ ム ( KA642.bas)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
' << KA642.bas >>
' 立体感のある球
'
' グラフック画面の背景色を白に設定。
BackColor="White"
' グ ラ フ ィ ッ ク 画 面 の サ イ ズ ( 縦 200ピ ク セ ル 、 横 200ピ ク セ ル ) を 設 定 。
GScreen(300,300)
' 座 標 の 設 定 。画 面 左 下 隅 の 座 標 を (-1,-1)、右 上 隅 の 座 標 を (1,1)と す る 。
Window(-1.2,-1)-(1,1.2)
MathGraph On
'
' 初期設定。
' 中 心 (X,Y),最 大 半 径 RMAX,半 径 Rの 設 定 。
X=0: Y=0: RMAX=0.8: R=RMAX
' 中 心 x座 標 の 移 動 量 DX, 中 心 y座 標 の 移 動 量 DY、 半 径 Rの 変 化 量 DR。
DX=0.02: DY=0.04: DR=0.04
'
' 色の初期値入力。
Input"赤 の 輝 度 初 期 値 (0~ 255[0])";RED$
If RED$ = "" Then RED$="0": RED=0 Else RED=Val(RED$)
Input"赤 の 輝 度 増 分 (0~ 255[0])";RI$
If RI$ = "" Then RI$="0": RI=0 Else RI=Val(RI$)
Input"緑 の 輝 度 初 期 値 (0~ 255[0])";GREEN$
If GREEN$ = "" Then GREEN$="0": GREEN=0 Else GREEN=Val(GREEN$)
Input"緑 の 輝 度 増 分 (0~ 255[0])";GI$
If GI$ = "" Then GI$="0": GI=0 Else GI=Val(GI$)
Input"青 の 輝 度 初 期 値 (0~ 255[0])";BLUE$
If BLUE$ = "" Then BLUE$="0": BLUE=0 Else BLUE=Val(BLUE$)
Input"青 の 輝 度 増 分 (0~ 255[0])";BI$
If BI$ = "" Then BI$="0": BI=0 Else BI=Val(BI$)
'
' パラメータの表示。
GLocate(-1.2,1.15): W$="立 体 感 の あ る 球 ": Gprint W$
GLocate(-1.2,1.05): W$="赤 の 輝 度 "+RED$+" 増 分 "+RI$: Gprint W$
GLocate(-1.2,0.95): W$="緑 の 輝 度 "+GREEN$+" 増 分 "+GI$: Gprint W$
GLocate(-1.2,0.85): W$="青 の 輝 度 "+BLUE$+" 増 分 "+BI$: Gprint W$
'
' 球の描画。
While R > 0
If Sqr(X*X+Y*Y)+R < RMAX Then
W=(RED*2^16+GREEN*2^8+BLUE)+2^24
W$=Right$(Hex$(W),6): ' 関 数 Hex$(W)で Wの 値 を 16進 数 の 文 字 列 に
' 変換する。
ForeColor="#"+W$
Circle(X,Y),R: ' (X,Y)を 中 心 と す る 半 径 Rの 円 を 前 景 色 で 描 く 。
- 3 -
立体感の ある球
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Paint(X,Y):
' (X,Y)を 含 む 境 界 色 で 囲 ま れ た 領 域 を 前 景 色 で 塗 り つ ぶ す 。
EndIf
'
' 移動量、変化量の更新。
DX=DX*0.8
DY=DY*0.9
DR=DR*1.1
' 色の輝度を増加する。
RED=(RED+RI) Mod 256
GREEN=(GREEN+GI) Mod 256
BLUE=(BLUE+BI) Mod 256
' 中心、半径の更新。
X=X+DX
Y=Y+DY
R=R-DR
Wend
End
- 4 -