examples/airship/main.go
func updateGroundImage(ground *ebiten.Image) {
	ground.Clear()

	x16, y16 := thePlayer.Position()
	a := thePlayer.Angle()
	gw, gh := ground.Size()
	w, h := gophersImage.Size()
	op := &ebiten.DrawImageOptions{}
	op.GeoM.Translate(float64(-x16)/16, float64(-y16)/16)
	op.GeoM.Translate(float64(-w*2), float64(-h*2))
	op.GeoM.Rotate(float64(-a)*2*math.Pi/maxAngle + math.Pi*3.0/2.0)
	op.GeoM.Translate(float64(gw)/2, float64(gh)-32)
	ground.DrawImage(repeatedGophersImage, op)
}
func updateGroundImage(ground *ebiten.Image) {
	ground.Clear()

	x16, y16 := thePlayer.Position()
	a := thePlayer.Angle()
	gw, gh := ground.Size()
	w, h := gophersImage.Size()
	op := &ebiten.DrawImageOptions{}
	op.GeoM.Translate(float64(-x16)/16, float64(-y16)/16)
	op.GeoM.Translate(float64(-w*2), float64(-h*2))
	op.GeoM.Rotate(float64(-a)*2*math.Pi/maxAngle + math.Pi*3.0/2.0)
	op.GeoM.Translate(float64(gw)/2, float64(gh)-32)
	ground.DrawImage(repeatedGophersImage, op)
}
func updateGroundImage ( ground * ebiten . Image ) { ground . Clear ( ) x16 , y16 := thePlayer . Position ( ) a := thePlayer . Angle ( ) gw , gh := ground . Size ( ) w , h := gophersImage . Size ( ) op := & ebiten . DrawImageOptions { } op . GeoM . Translate ( float64 ( - x16 ) / 16 , float64 ( - y16 ) / 16 ) op . GeoM . Translate ( float64 ( - w * 2 ) , float64 ( - h * 2 ) ) op . GeoM . Rotate ( float64 ( - a ) * 2 * math . Pi / maxAngle + math . Pi * 3.0 / 2.0 ) op . GeoM . Translate ( float64 ( gw ) / 2 , float64 ( gh ) - 32 ) ground . DrawImage ( repeatedGophersImage , op ) }
// updateGroundImage updates the ground image according to the current player's position.
updateGroundImage updates the ground image according to the current player s position .