This commit is contained in:
bloeys
2021-11-05 04:41:57 +04:00
parent 2b0373ea1b
commit 1d03d4c3ea
4 changed files with 46 additions and 5 deletions

View File

@ -44,11 +44,12 @@ func (m *Mat2) Sub(m2 *Mat2) {
m.Data[3] -= m2.Data[3]
}
//Add m *= m2
//Mul m *= m2
func (m *Mat2) Mul(m2 *Mat2) {
m.Data = [4]float32{
m.Data[0]*m2.Data[0] + m.Data[1]*m2.Data[2],
m.Data[0]*m2.Data[1] + m.Data[1]*m2.Data[3],
m.Data[2]*m2.Data[0] + m.Data[3]*m2.Data[2],
m.Data[2]*m2.Data[1] + m.Data[3]*m2.Data[3],
}
@ -86,11 +87,13 @@ func SubMat2(m1, m2 *Mat2) *Mat2 {
}
}
//MulMat2 m3 = m1 * m2
func MulMat2(m1, m2 *Mat2) *Mat2 {
return &Mat2{
Data: [4]float32{
m1.Data[0]*m2.Data[0] + m1.Data[1]*m2.Data[2],
m1.Data[0]*m2.Data[1] + m1.Data[1]*m2.Data[3],
m1.Data[2]*m2.Data[0] + m1.Data[3]*m2.Data[2],
m1.Data[2]*m2.Data[1] + m1.Data[3]*m2.Data[3],
},

View File

@ -63,6 +63,23 @@ func (m *Mat3) Sub(m2 *Mat3) {
m.Data[8] -= m2.Data[8]
}
//Mul m *= m2
func (m *Mat3) Mul(m2 *Mat3) {
m.Data = [9]float32{
m.Data[0]*m2.Data[0] + m.Data[1]*m2.Data[3] + m.Data[2]*m2.Data[6],
m.Data[0]*m2.Data[1] + m.Data[1]*m2.Data[4] + m.Data[2]*m2.Data[7],
m.Data[0]*m2.Data[2] + m.Data[1]*m2.Data[5] + m.Data[2]*m2.Data[8],
m.Data[3]*m2.Data[0] + m.Data[4]*m2.Data[3] + m.Data[5]*m2.Data[6],
m.Data[3]*m2.Data[1] + m.Data[4]*m2.Data[4] + m.Data[5]*m2.Data[7],
m.Data[3]*m2.Data[2] + m.Data[4]*m2.Data[5] + m.Data[5]*m2.Data[8],
m.Data[6]*m2.Data[0] + m.Data[7]*m2.Data[3] + m.Data[8]*m2.Data[6],
m.Data[6]*m2.Data[1] + m.Data[7]*m2.Data[4] + m.Data[8]*m2.Data[7],
m.Data[6]*m2.Data[2] + m.Data[7]*m2.Data[5] + m.Data[8]*m2.Data[8],
}
}
//Scale m *= x (element wise multiplication)
func (m *Mat3) Scale(x float32) {

21
main.go
View File

@ -1,4 +1,25 @@
package main
import "github.com/bloeys/gglm/gglm"
func main() {
m1 := &gglm.Mat3{
Data: [9]float32{
1, 2, 3,
4, 5, 6,
7, 8, 9,
},
}
m2 := &gglm.Mat3{
Data: [9]float32{
1, 2, 3,
1, 2, 3,
1, 2, 3,
},
}
m1.Mul(m2)
println(m1.String())
}

View File

@ -8,8 +8,8 @@ import (
func BenchmarkVec3Add(b *testing.B) {
v1 := gglm.NewMat2Id()
v2 := gglm.NewMat2Id()
v1 := gglm.NewMat3Id()
v2 := gglm.NewMat3Id()
for i := 0; i < b.N; i++ {
v1.Mul(v2)
@ -18,8 +18,8 @@ func BenchmarkVec3Add(b *testing.B) {
func BenchmarkVec3Add2(b *testing.B) {
v1 := gglm.NewMat2Id()
v2 := gglm.NewMat2Id()
v1 := gglm.NewMat3Id()
v2 := gglm.NewMat3Id()
for i := 0; i < b.N; i++ {
v1.Mul(v2)