This commit is contained in:
bloeys
2021-11-05 04:26:49 +04:00
parent 8f03c11314
commit 2b0373ea1b
3 changed files with 27 additions and 31 deletions

View File

@ -44,6 +44,16 @@ func (m *Mat2) Sub(m2 *Mat2) {
m.Data[3] -= m2.Data[3]
}
//Add 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],
}
}
//Scale m *= x (element wise multiplication)
func (m *Mat2) Scale(x float32) {
m.Data[0] *= x
@ -76,6 +86,17 @@ func SubMat2(m1, m2 *Mat2) *Mat2 {
}
}
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],
},
}
}
//NewMat2Id returns the 2x2 identity matrix
func NewMat2Id() *Mat2 {
return &Mat2{

25
main.go
View File

@ -1,29 +1,4 @@
package main
import (
"github.com/bloeys/gglm/gglm"
)
func main() {
// v1 := gglm.NewVec2([]float32{4, 5})
// v2 := gglm.NewVec2([]float32{1, 1})
// println(v1.Mag())
// println(v1.SqrMag())
// v1 := gglm.NewVec2(nil)
// v2 := gglm.NewVec2(nil)
// v1.Add(v2)
m1 := &gglm.Mat4{}
m2 := &gglm.Mat4{
Data: [16]float32{
-10, 0, 100, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
},
}
m3 := gglm.AddMat4(m1, m2)
m2.Add(m3)
}

View File

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