速度を変えて動かしてみる(オートシェイプ)
昨日まで、ユーザーフォーム上に散らばせたコマンドボタンを、じわじわと整列させて遊んでいた。
infoment.hatenablog.com
各ボタンは、いわゆる「等速直線運動」で動かしていた。
しかし、もっと何か別の動かし方はできないものか。ということで、今回はそれに挑戦するための下準備に挑戦する。
さて、どんな動かし方にしてみようか。そもそも、どんな動きだと面白くなる?
この辺り、実はほとんど知識が無い。ということで、安易に「等加速度直線運動」っぽいものにすることにした。
距離=初速度×時間+加速度×時間の二乗÷2
これを応用して、シート上の〇をフワフワと動かしてみた。
上下だけだと味気ないので、右に等速運動させてみる。
Sub MoveTest() Dim myShape Set myShape = ActiveSheet.Shapes.Range(Array("Oval 1")) Dim i As Long Dim j As Long For j = 1 To 2 For i = 1 To 50 myShape.Top = myShape.Top - 1 / (0.01 * i + 0.5 * 0.01 * i ^ 2) myShape.Left = myShape.Left + 1 Application.Wait [now()+"0:00:00.1"] Next i For i = 1 To 50 myShape.Top = myShape.Top + 1 / (0.01 * i + 0.5 * 0.01 * i ^ 2) myShape.Left = myShape.Left + 1 Application.Wait [now()+"0:00:00.1"] Next i Next j End Sub
結果はこちら↓。目的地付近まで急速接近して、じわっと目的地に到着。返す刀で、次の目的に素早く移動開始。のようなイメージだ。
なお、移動距離は上式の逆数を用いているため、これを等加速度運動と呼んでよいかどうかは分からない。
さて、どう応用したものか。
今日はここで時間切れ。明日また考えてみます。
参考まで。