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
}
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.
Rotate rotates the matrix by theta . The unit is radian .