- ドリトルでちょっと複雑な図を描かせてみる - 無限ブログ
aTurtle =Turtle ! create (blue) linecolor 1 linewidth。 aTurtle ! penup 200 200 moveto pendown. [ | i | aTurtle ! 5 forward (90 * sin(i)) rightturn. ] ! 3000 repeat.
なんだこれは???
● 2013年3月4日月曜日 - | [ドリトル] 三角関数で謎な図形 |
● 2013年3月3日日曜日 - | [ドリトル] 直線延長 |
● 2012年8月29日水曜日 - | [ドリトル] ドリトルのマウス |
● 2012年8月16日木曜日 - | [ドリトル] サイクロイド曲線 |
● 2012年8月15日水曜日 - | [ドリトル] 放物線の反射 |
● 2012年8月14日火曜日 - | [ドリトル] 花火 |
● 2012年7月31日火曜日 - | [ドリトル] センサー |
● 2012年7月30日月曜日 - | [ドリトル] 平方数を求める |
● 2012年7月29日日曜日 - | [ドリトル] 円周率を求める |
● 2012年7月26日木曜日 - | [ドリトル] リサージュ図形を描く(三角関数禁止) |
● 2012年7月24日火曜日 - | [ドリトル] キーボード操作でドリフト亀 |
● 2012年7月22日日曜日 - | [ドリトル] self |
● 2012年7月20日金曜日 - | [ドリトル] 図形の回転 |
● 2012年7月18日水曜日 - | [ドリトル] QIX |
● 2012年7月17日火曜日 - | [ドリトル] 跳ね返り (四角形) |
● 2012年7月16日月曜日 - | [ドリトル] 跳ね返り (円) |
● 2012年7月15日日曜日 - | [ドリトル] 跳ね返り |
● 2012年7月14日土曜日 - | [ドリトル] 回転するカメ その2 |
● 2012年7月12日木曜日 - | [ドリトル] 回転するカメ |
● 2012年7月11日水曜日 - | [ドリトル] Timerを使う |
aTurtle =Turtle ! create (blue) linecolor 1 linewidth。 aTurtle ! penup 200 200 moveto pendown. [ | i | aTurtle ! 5 forward (90 * sin(i)) rightturn. ] ! 3000 repeat.
// create axes t1 = Turtle ! create. t1 ! 1 linewidth (red) linecolor. t1 ! penup -1000 -1000 moveto pendown. xLine = t1 ! 1000 -1000 moveto makeFigure. t1 ! penup -1000 -1000 moveto pendown. yLine = t1 ! -1000 1000 moveto makeFigure. t1 ! hide. // create value fields txtField1 = TextField ! create. txtField2 = TextField ! create. timer1 = Timer ! create. timer1 ! 0.01 interval 600 duration. timer1 ! [ txtField1 ! ( Screen ! xPosition? ) set. txtField2 ! ( Screen ! yPosition? ) set. xLine ! -1000 (Screen ! yPosition?) moveto. yLine ! (Screen ! xPosition?) -1000 moveto. ] execute.
サイクロイド (cycloid) とは、円がある規則にしたがって回転するときの円上の定点が描く軌跡として得られる平面曲線の総称である。
-- by ウィキペディア
VALUE_RANGE = 5. // x = -5 to + 5 RESOLUTION = 100. DRAW_SCALE = 200. OFFSET_Y = -200. t1 = Turtle ! create. t1 ! 1 linewidth (blue) linecolor. t1 ! penup. [ | n ; x y | x = (n - RESOLUTION / 2) / RESOLUTION * VALUE_RANGE. y = x * x. t1 ! (DRAW_SCALE * x) (DRAW_SCALE * y + OFFSET_Y) moveto. t1 ! pendown. t1 ! makeFigure. ] ! (RESOLUTION) repeat.
SCALE = 100. t1 = Turtle ! create. t1 ! 45 leftturn (SCALE) forward 90 rightturn (SCALE) forward. Label ! ((t1 ! xPosition?) / (SCALE)) create.
ふと思いついたのでやってよう。
タートルを使って円周率を求めてみる。
forward と rightturn で円を描けば周長がわかるので、「周長=直径×PI」より半円を描いた時の座標から円周率がわかる。
SCALE = 1. APEX = 360. t1 = Turtle!create hide. [t1 ! (SCALE) forward (360.0/APEX) leftturn ] ! (APEX/2) repeat. TextField ! (SCALE*APEX) create. TextField ! (t1 ! yPosition?) create nextline. TextField ! ((SCALE*APEX) / (t1 ! yPosition?)) create nextline.
「円周率=3.1416725」。おお、それなりの値が。
button1 = Button ! "button" "UP" create. button1:action = [self! "hoge" set].
label1 = Label ! "label" create. button1 = Button ! "button" "UP" create hide. button1:action = [label1! "hoge" set].
lblResult = Label ! "result" create. lblResult2 = Label ! "result2" create nextline. t1 = Turtle ! create. t1Child = t1 ! create. t1:value = 1. t1Child:test1 = [ lblResult ! (value) set ]. t1Child:test2 = [ lblResult2 ! (self:value) set ]. t1Child!test1. t1Child!test2.
t1 = Turtle ! create. t1 ! 50 circle. shape1 = t1 ! makefigure. // mark initial position shapeOrg = shape1 ! create (blue) paint. // rotate shape. [ shape1 ! create. shape1 ! 60 rightturn. ] ! 6 repeat. t1 ! penup movetocenter.
t1 = Turtle ! create. t1 ! penup -100 100 moveto pendown. t1 ! 100 4 polygon. shape1 = t1 ! makefigure. t1:collision = t1:bounce. t1:go = [ | length | [ ! 1 forward ] ! (length) repeat ]. t1 ! (red) linecolor. t1 ! penup 0 200 moveto -120 direction pendown 300 go. t1 ! penup 100 200 moveto -120 direction pendown 300 go. t1 ! penup -100 -100 moveto 60 direction pendown 300 go. t1 ! penup -200 -100 moveto 60 direction pendown 300 go.
t1 = Turtle ! create. // ターゲット作成 t1 ! penup -100 100 moveto pendown. t1 ! 100 circle. t1 ! penup 0 direction movetocenter. shape1 = t1 ! makefigure. t1:collision = t1:bounce. // 一歩づつ進める。 t1:go = [ | length | [ ! 1 forward ] ! (length) repeat. ]. // 初期位置を下にずらしながらターゲットに当てる。 // (100, -100) - ( 100, 100) t1 ! 1 linewidth (red) linecolor. [ | count | y = 100 - (count * 10). t1 ! penup 150 (y) moveto 180 direction pendown. t1 ! 600 go. ] ! 20 repeat.
t1 = Turtle ! create. // ターゲット作成 t1 ! penup -200 100 moveto pendown 45 rightturn. t1 ! (100 * sqrt(2)) forward 90 rightturn (100 * sqrt(2)) forward. t1 ! penup 0 direction movetocenter. shape1 = t1 ! makefigure. // Collision 動作を bounce動作に置き換える。 t1:collision = t1:bounce. // 一歩づつ進める。 t1:go = [ | length | [ ! 1 forward ] ! (length) repeat. ]. // 初期位置を下にずらしながらターゲットに当てる。 t1 ! 1 linewidth (red) linecolor. [ | count | y = 100 - (count * 10). t1 ! penup 100 (y) moveto 180 direction pendown. t1 ! 600 go. ] ! 20 repeat.
t1 = Turtle ! create penup 150 back pendown. slider1 = Slider ! create. label1 = Label ! (slider1!value?) create. timer1 = Timer ! create. slider1:action = [ label1 ! ( self ! value?) set. timer1 ! (0.1 * ( self ! value?) / 50) interval. ]. timer1 ! 0.1 interval 360 times. timer1 ! [ t1 ! 10 leftturn 15 forward.] execute.