mirror of
https://github.com/bloeys/gglm.git
synced 2025-12-29 13:38:20 +00:00
Mat2 mul
This commit is contained in:
21
gglm/mat2.go
21
gglm/mat2.go
@ -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
25
main.go
@ -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)
|
||||
}
|
||||
|
||||
12
main_test.go
12
main_test.go
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user