立体感の ある球 課題 立体感のある球 円 の 中 心 (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 -
© Copyright 2024 ExpyDoc