diff --git a/examples/rotate/main.go b/examples/rotate/main.go index 61e407dc6..7464ca549 100644 --- a/examples/rotate/main.go +++ b/examples/rotate/main.go @@ -31,7 +31,7 @@ const ( ) var ( - count int + count = 0 gophersImage *ebiten.Image ) @@ -42,8 +42,17 @@ func update(screen *ebiten.Image) error { } w, h := gophersImage.Size() 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) + + // 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) + + // Move the image to the screen's center. op.GeoM.Translate(screenWidth/2, screenHeight/2) screen.DrawImage(gophersImage, op) return nil