Bläddra i källkod

Fix and improve math

Daniel Salvadori 6 år sedan
förälder
incheckning
afe309ef98
3 ändrade filer med 16 tillägg och 37 borttagningar
  1. 9 16
      math32/matrix3.go
  2. 6 20
      math32/matrix4.go
  3. 1 1
      math32/vector4.go

+ 9 - 16
math32/matrix3.go

@@ -254,14 +254,14 @@ func (m *Matrix3) GetInverse(src *Matrix3) error {
 	detInv := 1 / det
 
 	m[0] = t11 * detInv
-	m[1] = ( n31 * n23 - n33 * n21 ) * detInv
-	m[2] = ( n32 * n21 - n31 * n22 ) * detInv
+	m[1] = (n31*n23 - n33*n21) * detInv
+	m[2] = (n32*n21 - n31*n22) * detInv
 	m[3] = t12 * detInv
-	m[4] = ( n33 * n11 - n31 * n13 ) * detInv
-	m[5] = ( n31 * n12 - n32 * n11 ) * detInv
+	m[4] = (n33*n11 - n31*n13) * detInv
+	m[5] = (n31*n12 - n32*n11) * detInv
 	m[6] = t13 * detInv
-	m[7] = ( n21 * n13 - n23 * n11 ) * detInv
-	m[8] = ( n22 * n11 - n21 * n12 ) * detInv
+	m[7] = (n21*n13 - n23*n11) * detInv
+	m[8] = (n22*n11 - n21*n12) * detInv
 
 	return nil
 }
@@ -270,16 +270,9 @@ func (m *Matrix3) GetInverse(src *Matrix3) error {
 // Returns pointer to this updated matrix.
 func (m *Matrix3) Transpose() *Matrix3 {
 
-	var tmp float32
-	tmp = m[1]
-	m[1] = m[3]
-	m[3] = tmp
-	tmp = m[2]
-	m[2] = m[6]
-	m[6] = tmp
-	tmp = m[5]
-	m[5] = m[7]
-	m[7] = tmp
+	m[1], m[3] = m[3], m[1]
+	m[2], m[6] = m[6], m[2]
+	m[5], m[7] = m[7], m[5]
 	return m
 }
 

+ 6 - 20
math32/matrix4.go

@@ -410,26 +410,12 @@ func (m *Matrix4) Determinant() float32 {
 // Returns pointer to this updated matrix.
 func (m *Matrix4) Transpose() *Matrix4 {
 
-	var tmp float32
-	tmp = m[1]
-	m[1] = m[4]
-	m[4] = tmp
-	tmp = m[2]
-	m[2] = m[8]
-	m[8] = tmp
-	tmp = m[6]
-	m[6] = m[9]
-	m[9] = tmp
-
-	tmp = m[3]
-	m[3] = m[12]
-	m[12] = tmp
-	tmp = m[7]
-	m[7] = m[13]
-	m[13] = tmp
-	tmp = m[11]
-	m[11] = m[14]
-	m[14] = tmp
+	m[1], m[4] = m[4], m[1]
+	m[2], m[8] = m[8], m[2]
+	m[6], m[9] = m[9], m[6]
+	m[3], m[12] = m[12], m[3]
+	m[7], m[13] = m[13], m[7]
+	m[11], m[14] = m[14], m[11]
 	return m
 }
 

+ 1 - 1
math32/vector4.go

@@ -89,7 +89,7 @@ func (v *Vector4) SetComponent(index int, value float32) *Vector4 {
 	case 2:
 		v.Z = value
 	case 3:
-		v.Z = value
+		v.W = value
 	default:
 		panic("index is out of range")
 	}