Mat equality+small optimization

This commit is contained in:
bloeys
2021-11-05 05:28:33 +04:00
parent a28976286e
commit a629eab2ca
4 changed files with 23 additions and 4 deletions

View File

@ -63,6 +63,10 @@ func (m *Mat2) Scale(x float32) {
m.Data[3] *= x m.Data[3] *= x
} }
func (m *Mat2) Eq(m2 *Mat2) bool {
return m.Data == m2.Data
}
//AddMat2 m3 = m1 + m2 //AddMat2 m3 = m1 + m2
func AddMat2(m1, m2 *Mat2) *Mat2 { func AddMat2(m1, m2 *Mat2) *Mat2 {
return &Mat2{ return &Mat2{

View File

@ -102,6 +102,10 @@ func (m *Mat3) Scale(x float32) {
m.Data[8] *= x m.Data[8] *= x
} }
func (m *Mat3) Eq(m2 *Mat3) bool {
return m.Data == m2.Data
}
//AddMat3 m3 = m1 + m2 //AddMat3 m3 = m1 + m2
func AddMat3(m1, m2 *Mat3) *Mat3 { func AddMat3(m1, m2 *Mat3) *Mat3 {
return &Mat3{ return &Mat3{

View File

@ -143,6 +143,10 @@ func (m *Mat4) Scale(x float32) {
m.Data[15] *= x m.Data[15] *= x
} }
func (m *Mat4) Eq(m2 *Mat4) bool {
return m.Data == m2.Data
}
//AddMat4 m3 = m1 + m2 //AddMat4 m3 = m1 + m2
func AddMat4(m1, m2 *Mat4) *Mat4 { func AddMat4(m1, m2 *Mat4) *Mat4 {
return &Mat4{ return &Mat4{
@ -199,24 +203,30 @@ func SubMat4(m1, m2 *Mat4) *Mat4 {
//MulMat4 m3 = m1 * m2 //MulMat4 m3 = m1 * m2
func MulMat4(m1, m2 *Mat4) *Mat4 { func MulMat4(m1, m2 *Mat4) *Mat4 {
a := m2.Data[0]
b := m2.Data[4]
c := m2.Data[8]
d := m2.Data[12]
return &Mat4{ return &Mat4{
Data: [16]float32{ 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[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[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[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[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[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[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[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[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[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[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[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], m1.Data[12]*m2.Data[3] + m1.Data[13]*m2.Data[7] + m1.Data[14]*m2.Data[11] + m1.Data[15]*m2.Data[15],

View File

@ -49,4 +49,5 @@ func main() {
m4.Mul(m5) m4.Mul(m5)
println(m4.String()) println(m4.String())
println(m6.String()) println(m6.String())
println(m4.Eq(m6))
} }