2012年7月20日金曜日

[ドリトル] 図形の回転

少し思うところがあったので、図形を回転させる際の中心について確認しておこう。
まずはシンプルに ( 0, 0 ) に円を描いて回転させる。

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 ! 100 forward 50 4 circle.
...

直線部分の描き始めである ( 0, 0 ) を中心に回転している。
次は、最初の直線部はペン上げして移動するだけにする。

t1 = Turtle ! create.
t1 ! penup 100 forward pendown 50 4 circle.
...

ペン上げして移動した部分は無視されて、ペン下げして円を描き始めた時の位置 ( 100, 0 ) が中心になっている。
次は、ペン下げしたまま移動し、ペン上げしてさらに移動してからペン下げして円を描く。

t1 = Turtle ! create.
t1 ! 100 forward penup 100 forward pendown 50 4 circle.
...

今度は最初の線の描き始めの位置 ( 0, 0 ) が中心になり、途中のペン上げ部分を含めて全体が回転している。
つまり、
  • 最初にペン下げして描き始めたところが回転中心になる。
  • 途中にペン上げ区間があっても描き始めから makeFigure するまでが1図形
となっている。
ダメ押しで、ペン上げ移動→ペン下げ移動→ぺン上げ移動→円描画。

t1 = Turtle ! create.
t1 ! penup 50 forward 50 pendown 50 forward penup 50 forward pendown 50 4 circle.
...

やはり最初にペン下げして描画した位置(今回は ( 50, 0 ) )を中心に回転していることがわかる。

0 件のコメント:

コメントを投稿