MATH GIRLS
梅
解説
SET WINDOW -5,5,-1,9
SET COLOR 17
PLOT AREA:-50,50;-50,-50;50,-50;50,50
DRAW grid
SET LINE STYLE 1
SET LINE COLOR 21
SET LINE width 3
PLOT LINES: -5,0;5,0
SET COLOR 21
PLOT AREA:-5,1;-5,-1;5,-1;5,1
PICTURE DCurve(n)
OPTION ANGLE DEGREES
SET LINE STYLE 1
SET LINE COLOR 12
SET LINE width n+5
PLOT LINES: 0,0;0,1
IF n=0 THEN
EXIT PICTURE
ELSE
SET LINE STYLE 1
SET LINE COLOR 12
DRAW DCurve(n-1) WITH SCALE(r)*ROTATE(alfa)*SHIFT(0,1)
SET LINE width n+1
DRAW DCurve(n-1) WITH SCALE(r)*ROTATE(-alfa)*SHIFT(0,1)
SET LINE width n+1
END IF
END PICTURE
LET r=0.8
LET alfa=20
DRAW DCurve(5) WITH SCALE(2)*SHIFT(0,1)
PICTURE ume
OPTION BASE 0
DIM x(360), y(360)
FOR t=0 TO 270
LET x(t)=COS(10*t/3)*COS(2*t)*0.3
LET y(t)=COS(10*t/3)*SIN(2*t)*0.3
NEXT t
SET AREA COLOR 38
MAT PLOT AREA: x,y
SET LINE STYLE 1
SET LINE COLOR 27
SET LINE width 1
FOR s=0 TO 360 STEP 30
PLOT LINES: 0,0;0.1*COS(s),0.1*SIN(s)
NEXT s
END PICTURE
FOR a=35 TO 145 STEP 7
DRAW ume WITH SHIFT(RND*COS(a)*5,RND*SIN(a)*4+5)
NEXT a
FOR a=40 TO 140 STEP 10
DRAW ume WITH SHIFT(RND*COS(a)*5+2,RND*SIN(a)*4+5)
NEXT a
FOR a=40 TO 140 STEP 10
DRAW ume WITH SHIFT(RND*COS(a)*5-2,RND*SIN(a)*4+5)
NEXT a
END
SET WINDOW -5,5,-1,9 “x座標の範囲を-5~5,y座標の範囲を‐1~9にする。”
SET COLOR 17 “17番(水色)の色を使う”
PLOT AREA:-50,50;-50,-50;50,-50;50,50 “(-50 ,50),(-50 ,-50),(50 ,-50),(50 ,50)を順に結んでできる四角形の周と内部を塗りつぶす。”
DRAW grid “x軸方向 間隔1,y軸方向 間隔1の格子を描く(座標をかく)”
SET COLOR 21 “色を21(黄緑)に設定”
PLOT AREA:-5,1;-5,-1;5,-1;5,1 “この範囲を塗りつぶす”
“枝を描く関数”
PICTURE DCurve(n)
OPTION ANGLE DEGREES “三角関数の角の大きさの単位を度にする。”
SET LINE STYLE 1
SET LINE COLOR 12
SET LINE width n+5 “描く線の太さをn+5にする”
PLOT LINES: 0,0;0,1 “線を点(0,0)から(0,1)まで引く”
IF n=0 THEN
EXIT PICTURE “nが0ならば描くのをやめる”
ELSE “nが0以外なら以下を行う”
SET LINE STYLE 1
SET LINE COLOR 12 “線の太さを12(茶色)に設定”
DRAW DCurve(n-1) WITH SCALE(r)*ROTATE(alfa)*SHIFT(0,1)
SET LINE width n+1
“DCurve(n)はnを1減らしてr倍で角度alfa傾かせx方向に1ずらしてかく、太さはn+1”
DRAW DCurve (n-1) WITH SCALE(r)*ROTATE(-alfa)*SHIFT(0,1)
SET LINE width n+1
END IF “IF文の終わり”
END PICTURE
LET r=0.8 “rに0.8を代入”
LET alfa=20 “rに20を代入”
DRAW DCurve(5) WITH SCALE(2)*SHIFT(0,1) “DCurveをn=5,2倍の大きさ、(0,1)ずらしてかく”
“梅を描く関数”
PICTURE ume
OPTION BASE 0 “配列宣言で添字の下限の指定を省略したときの値を0にする”
DIM x(360), y(360) “xとyの次元を1とし,添字の上限を360とする。”
FOR t=0 TO 270 “tが0から270まで以下を行う「花びらを描く」”
LET x(t)=COS(10*t/3)*COS(2*t)*0.3
LET y(t)=COS(10*t/3)*SIN(2*t)*0.3
NEXT t
SET AREA COLOR 38
MAT PLOT AREA: x,y
SET LINE STYLE 1
SET LINE COLOR 27
SET LINE width 1
FOR s=0 TO 360 STEP 30
PLOT LINES: 0,0;0.1*COS(s),0.1*SIN(s) “「おしべをかく」”
NEXT s
END PICTURE
FOR a=35 TO 145 STEP 7 “梅の花を乱数RNDを使って枝の上に散らす”
DRAW ume WITH SHIFT(RND*COS(a)*5,RND*SIN(a)*4+5) “35度から145度の扇形の範囲にランダムに散らして拡大、移動”
NEXT a
FOR a=40 TO 140 STEP 10 “梅の花を乱数RNDを使ってさっきとずらして散らす”
DRAW ume WITH SHIFT(RND*COS(a)*5+2,RND*SIN(a)*4+5)
NEXT a
FOR a=40 TO 140 STEP 10 “梅の花を乱数RNDを使ってさっきとずらして散らす”
DRAW ume WITH SHIFT(RND*COS(a)*5-2,RND*SIN(a)*4+5)
NEXT a
END