geom.go
func (g *GeoM) Rotate(theta float64) {
	if theta == 0 {
		return
	}

	sin64, cos64 := math.Sincos(theta)
	sin, cos := float32(sin64), float32(cos64)

	a := cos*(g.a_1+1) - sin*g.c
	b := cos*g.b - sin*(g.d_1+1)
	tx := cos*g.tx - sin*g.ty
	c := sin*(g.a_1+1) + cos*g.c
	d := sin*g.b + cos*(g.d_1+1)
	ty := sin*g.tx + cos*g.ty

	g.a_1 = a - 1
	g.b = b
	g.c = c
	g.d_1 = d - 1
	g.tx = tx
	g.ty = ty
}
func (g *GeoM) Rotate(theta float64) {
	if theta == 0 {
		return
	}

	sin64, cos64 := math.Sincos(theta)
	sin, cos := float32(sin64), float32(cos64)

	a := cos*(g.a_1+1) - sin*g.c
	b := cos*g.b - sin*(g.d_1+1)
	tx := cos*g.tx - sin*g.ty
	c := sin*(g.a_1+1) + cos*g.c
	d := sin*g.b + cos*(g.d_1+1)
	ty := sin*g.tx + cos*g.ty

	g.a_1 = a - 1
	g.b = b
	g.c = c
	g.d_1 = d - 1
	g.tx = tx
	g.ty = ty
}
// Rotate rotates the matrix by theta.
// The unit is radian.