From a629eab2ca5a958f30f3633e330dfd9e2afd6a4e Mon Sep 17 00:00:00 2001 From: bloeys Date: Fri, 5 Nov 2021 05:28:33 +0400 Subject: [PATCH] Mat equality+small optimization --- gglm/mat2.go | 4 ++++ gglm/mat3.go | 4 ++++ gglm/mat4.go | 18 ++++++++++++++---- main.go | 1 + 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/gglm/mat2.go b/gglm/mat2.go index 6c8954d..dee75ff 100755 --- a/gglm/mat2.go +++ b/gglm/mat2.go @@ -63,6 +63,10 @@ func (m *Mat2) Scale(x float32) { m.Data[3] *= x } +func (m *Mat2) Eq(m2 *Mat2) bool { + return m.Data == m2.Data +} + //AddMat2 m3 = m1 + m2 func AddMat2(m1, m2 *Mat2) *Mat2 { return &Mat2{ diff --git a/gglm/mat3.go b/gglm/mat3.go index 48a8ae4..d225f31 100755 --- a/gglm/mat3.go +++ b/gglm/mat3.go @@ -102,6 +102,10 @@ func (m *Mat3) Scale(x float32) { m.Data[8] *= x } +func (m *Mat3) Eq(m2 *Mat3) bool { + return m.Data == m2.Data +} + //AddMat3 m3 = m1 + m2 func AddMat3(m1, m2 *Mat3) *Mat3 { return &Mat3{ diff --git a/gglm/mat4.go b/gglm/mat4.go index 369a4fb..3e3f2ac 100755 --- a/gglm/mat4.go +++ b/gglm/mat4.go @@ -143,6 +143,10 @@ func (m *Mat4) Scale(x float32) { m.Data[15] *= x } +func (m *Mat4) Eq(m2 *Mat4) bool { + return m.Data == m2.Data +} + //AddMat4 m3 = m1 + m2 func AddMat4(m1, m2 *Mat4) *Mat4 { return &Mat4{ @@ -199,24 +203,30 @@ func SubMat4(m1, m2 *Mat4) *Mat4 { //MulMat4 m3 = m1 * m2 func MulMat4(m1, m2 *Mat4) *Mat4 { + + a := m2.Data[0] + b := m2.Data[4] + c := m2.Data[8] + d := m2.Data[12] + return &Mat4{ Data: [16]float32{ - m1.Data[0]*m2.Data[0] + m1.Data[1]*m2.Data[4] + m1.Data[2]*m2.Data[8] + m1.Data[3]*m2.Data[12], + m1.Data[0]*a + m1.Data[1]*b + m1.Data[2]*c + m1.Data[3]*d, m1.Data[0]*m2.Data[1] + m1.Data[1]*m2.Data[5] + m1.Data[2]*m2.Data[9] + m1.Data[3]*m2.Data[13], m1.Data[0]*m2.Data[2] + m1.Data[1]*m2.Data[6] + m1.Data[2]*m2.Data[10] + m1.Data[3]*m2.Data[14], m1.Data[0]*m2.Data[3] + m1.Data[1]*m2.Data[7] + m1.Data[2]*m2.Data[11] + m1.Data[3]*m2.Data[15], - m1.Data[4]*m2.Data[0] + m1.Data[5]*m2.Data[4] + m1.Data[6]*m2.Data[8] + m1.Data[7]*m2.Data[12], + m1.Data[4]*a + m1.Data[5]*b + m1.Data[6]*c + m1.Data[7]*d, m1.Data[4]*m2.Data[1] + m1.Data[5]*m2.Data[5] + m1.Data[6]*m2.Data[9] + m1.Data[7]*m2.Data[13], m1.Data[4]*m2.Data[2] + m1.Data[5]*m2.Data[6] + m1.Data[6]*m2.Data[10] + m1.Data[7]*m2.Data[14], m1.Data[4]*m2.Data[3] + m1.Data[5]*m2.Data[7] + m1.Data[6]*m2.Data[11] + m1.Data[7]*m2.Data[15], - m1.Data[8]*m2.Data[0] + m1.Data[9]*m2.Data[4] + m1.Data[10]*m2.Data[8] + m1.Data[11]*m2.Data[12], + m1.Data[8]*a + m1.Data[9]*b + m1.Data[10]*c + m1.Data[11]*d, m1.Data[8]*m2.Data[1] + m1.Data[9]*m2.Data[5] + m1.Data[10]*m2.Data[9] + m1.Data[11]*m2.Data[13], m1.Data[8]*m2.Data[2] + m1.Data[9]*m2.Data[6] + m1.Data[10]*m2.Data[10] + m1.Data[11]*m2.Data[14], m1.Data[8]*m2.Data[3] + m1.Data[9]*m2.Data[7] + m1.Data[10]*m2.Data[11] + m1.Data[11]*m2.Data[15], - m1.Data[12]*m2.Data[0] + m1.Data[13]*m2.Data[4] + m1.Data[14]*m2.Data[8] + m1.Data[15]*m2.Data[12], + m1.Data[12]*a + m1.Data[13]*b + m1.Data[14]*c + m1.Data[15]*d, m1.Data[12]*m2.Data[1] + m1.Data[13]*m2.Data[5] + m1.Data[14]*m2.Data[9] + m1.Data[15]*m2.Data[13], m1.Data[12]*m2.Data[2] + m1.Data[13]*m2.Data[6] + m1.Data[14]*m2.Data[10] + m1.Data[15]*m2.Data[14], m1.Data[12]*m2.Data[3] + m1.Data[13]*m2.Data[7] + m1.Data[14]*m2.Data[11] + m1.Data[15]*m2.Data[15], diff --git a/main.go b/main.go index 4bfdd10..d3676b4 100755 --- a/main.go +++ b/main.go @@ -49,4 +49,5 @@ func main() { m4.Mul(m5) println(m4.String()) println(m6.String()) + println(m4.Eq(m6)) }