resolve bug on transformation matrix
This commit is contained in:
parent
9ae0038d00
commit
d84ea36159
1 changed files with 14 additions and 17 deletions
|
@ -144,33 +144,30 @@ func (tr1 MatrixTransform) Multiply(tr2 MatrixTransform) MatrixTransform {
|
||||||
|
|
||||||
|
|
||||||
func (tr *MatrixTransform) Scale(sx, sy float64) *MatrixTransform {
|
func (tr *MatrixTransform) Scale(sx, sy float64) *MatrixTransform {
|
||||||
tr[0] = tr[0] * sx
|
tr[0] = sx*tr[0]
|
||||||
tr[1] = tr[1] * sx
|
tr[1] = sx*tr[1]
|
||||||
tr[4] = tr[4] * sx
|
tr[2] = sy*tr[2]
|
||||||
tr[2] = tr[2] * sy
|
tr[3] = sy*tr[3]
|
||||||
tr[3] = tr[3] * sy
|
|
||||||
tr[5] = tr[5] * sy
|
|
||||||
return tr
|
return tr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tr *MatrixTransform) Translate(tx, ty float64) *MatrixTransform {
|
func (tr *MatrixTransform) Translate(tx, ty float64) *MatrixTransform {
|
||||||
tr[4] = tr[4] + tx
|
tr[4] = tx*tr[0] + ty*tr[2] + tr[4]
|
||||||
tr[5] = tr[5] + ty
|
tr[5] = ty*tr[3] + tx*tr[1] + tr[5]
|
||||||
return tr
|
return tr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tr *MatrixTransform) Rotate(angle float64) *MatrixTransform {
|
func (tr *MatrixTransform) Rotate(angle float64) *MatrixTransform {
|
||||||
ca := math.Cos(angle)
|
c := math.Cos(angle)
|
||||||
sa := math.Sin(angle)
|
s := math.Sin(angle)
|
||||||
t0 := tr[0]*ca - tr[1]*sa
|
t0 := c*tr[0] + s*tr[2]
|
||||||
t2 := tr[1]*ca - tr[3]*sa
|
t1 := s*tr[3] + c*tr[1]
|
||||||
t4 := tr[4]*ca - tr[5]*sa
|
t2 := c*tr[2] - s*tr[0]
|
||||||
tr[1] = tr[0]*sa + tr[1]*ca
|
t3 := c*tr[3] - s*tr[1]
|
||||||
tr[3] = tr[2]*sa + tr[3]*ca
|
|
||||||
tr[5] = tr[4]*sa + tr[5]*ca
|
|
||||||
tr[0] = t0
|
tr[0] = t0
|
||||||
|
tr[1] = t1
|
||||||
tr[2] = t2
|
tr[2] = t2
|
||||||
tr[4] = t4
|
tr[3] = t3
|
||||||
return tr
|
return tr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue