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