examples/rotate: Refactoring

This commit is contained in:
Hajime Hoshi 2018-01-30 04:05:01 +09:00
parent 52a753a12f
commit 6ba0e6d373

View File

@ -31,7 +31,7 @@ const (
) )
var ( var (
count int count = 0
gophersImage *ebiten.Image gophersImage *ebiten.Image
) )
@ -42,8 +42,17 @@ func update(screen *ebiten.Image) error {
} }
w, h := gophersImage.Size() w, h := gophersImage.Size()
op := &ebiten.DrawImageOptions{} op := &ebiten.DrawImageOptions{}
// Move the image's center to the screen's upper-left corner.
// This is a prepartion for rotating. When geometry matrices are applied,
// the origin point is the upper-left corner.
op.GeoM.Translate(-float64(w)/2, -float64(h)/2) op.GeoM.Translate(-float64(w)/2, -float64(h)/2)
// Rotate the image. As a result, the anchor point of this rotate is
// the center of the image.
op.GeoM.Rotate(float64(count%360) * 2 * math.Pi / 360) op.GeoM.Rotate(float64(count%360) * 2 * math.Pi / 360)
// Move the image to the screen's center.
op.GeoM.Translate(screenWidth/2, screenHeight/2) op.GeoM.Translate(screenWidth/2, screenHeight/2)
screen.DrawImage(gophersImage, op) screen.DrawImage(gophersImage, op)
return nil return nil