<対象学年>
中学1年図形(発展した学習)
1つの円Aの内側をその円よりも半径の小さい円Bが内接しながら、すべることなく回転するとき、円A上の点Pの描く図形を考える。
まずは、生徒にどのような図形を描くか紙にかかせるなどしてじっくり考えさせたい。
その後、解答をするときの補助的な教具として利用する。
黒板にかくだけではなかなか説明できない事柄であるので、実際にコンピューターの中で動かせてみることにより理解させる。
できれば、半径を自分たちでいろいろ変化させてみることによって、半径の比によって描かれる図がどう変化するのか、というところまで話を進めたい。
たとえば、半径の比が4:1ならば1回転すると点Pが元の位置に戻ってくる、など。
さらに、
半径が100と35ならば最大公約数5との積、
100=5×20 の20が頂点の数
35=5×7の7が回転数であるということなども話をして興味をもたせたい。
今回のこのプログラムでは、小さな半径の方の円が点Pの移動によって一緒に動いていかないので、動かせるとさらにわかりやすくなる。
さらに、ボタンをつくり、ボタンをおして次に進むようにしたり、また半径を代入させるボックスをつくると、操作がしやすくなる。
このような点を改良していきたい。
to hypo :a :b
remove "ページ1
newturtle "k1
cg st
penup
setc "black
circle :a
circle2 :a :b
setc "red
setpos ( list :a 0 )
walk :a :b 0 :a 0
end
to walk :c :d :theta :x :y
setpos ( list :x :y )
pendown
make "nextx calcx :c :d :theta
make "nexty calcy :c :d :theta
time_goes_by ( :nextx - :x ) ( :nexty - :y )
walk :c :d ( :theta + 1 ) :nextx :nexty
if :theta = 360 [stop]
end
to calcx :r1 :r2 :th1
output ( ( :r1 - :r2 ) * ( cos ( :r2 * :th1
/ :r1 ) ) + :r2 * ( cos ( ( :r1 - :r2 ) * :th1 / :r1 ) ) )
end
to calcy :r3 :r4 :th2
output ( ( :r3 - :r4 ) * ( sin ( :r4 * :th2
/ :r3 ) ) - :r4 * ( sin ( ( :r3 - :r4 ) * :th2 / :r3 ) ) )
end
to time_goes_by :vx :vy
set_head :vx :vy
forward sqrt ( :vx * :vx + :vy * :vy )
end
to set_head :vx :vy
if :vy > 0 [ seth arctan :vx / :vy ]
if :vy < 0 [ seth arctan :vx / ( :vy +
180 ) ]
end
to penup
pu
end
to pendown
pd
end
to circle :m
local "th3
pu setpos ( list :m 0 ) pd
make "th3 0
repeat 360 [ make "th3 ( :th3 + 1 )
setpos (list :m * cos :th3
:m * sin :th3 ) ]
pu setpos [ 0 0 ]
end
to circle2 :k :l
local "th4
pu setpos ( list :k 0 ) pd
make "th4 0
repeat 360 [ make "th4 ( :th4 + 1 )
setpos (list ( :l * cos :th4 ) + :k - :l
:l * sin :th4 ) ]
pu setpos ( list :k - :l 0 )
end