<対象学年>

中学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