diff --git a/guide/03_moving_scaling_and_rotating_with_matrix/hiking.png b/guide/03_moving_scaling_and_rotating_with_matrix/hiking.png new file mode 100644 index 0000000..83496bc Binary files /dev/null and b/guide/03_moving_scaling_and_rotating_with_matrix/hiking.png differ diff --git a/guide/03_moving_scaling_and_rotating_with_matrix/main.go b/guide/03_moving_scaling_and_rotating_with_matrix/main.go new file mode 100644 index 0000000..df7c5f1 --- /dev/null +++ b/guide/03_moving_scaling_and_rotating_with_matrix/main.go @@ -0,0 +1,66 @@ +package main + +import ( + "image" + "os" + + _ "image/png" + + "github.com/faiface/pixel" + "github.com/faiface/pixel/pixelgl" + "golang.org/x/image/colornames" +) + +func loadPicture(path string) (pixel.Picture, error) { + file, err := os.Open(path) + if err != nil { + return nil, err + } + defer file.Close() + img, _, err := image.Decode(file) + if err != nil { + return nil, err + } + return pixel.PictureDataFromImage(img), nil +} + +func run() { + cfg := pixelgl.WindowConfig{ + Title: "Pixel Rocks!", + Bounds: pixel.R(0, 0, 1024, 768), + VSync: true, + } + win, err := pixelgl.NewWindow(cfg) + if err != nil { + panic(err) + } + + win.SetSmooth(true) + + pic, err := loadPicture("hiking.png") + if err != nil { + panic(err) + } + + sprite := pixel.NewSprite(pic, pic.Bounds()) + + angle := 0.0 + + for !win.Closed() { + angle += 0.05 + + win.Clear(colornames.Firebrick) + + mat := pixel.IM + mat = mat.Rotated(0, angle) + mat = mat.Moved(win.Bounds().Center()) + sprite.SetMatrix(mat) + sprite.Draw(win) + + win.Update() + } +} + +func main() { + pixelgl.Run(run) +}