mirror of
https://github.com/bloeys/gglm.git
synced 2025-12-29 13:38:20 +00:00
DotVec3+Cross product
This commit is contained in:
@ -1,5 +1,35 @@
|
|||||||
package gglm
|
package gglm
|
||||||
|
|
||||||
func DotVec2(v1 *Vec2, v2 *Vec2) float32 {
|
import "gonum.org/v1/gonum/blas/blas32"
|
||||||
|
|
||||||
|
func DotVec2(v1, v2 *Vec2) float32 {
|
||||||
return v1.X()*v2.X() + v1.Y()*v2.Y()
|
return v1.X()*v2.X() + v1.Y()*v2.Y()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DotVec3(v1, v2 *Vec3) float32 {
|
||||||
|
return v1.X()*v2.X() + v1.Y()*v2.Y() + v1.Z()*v2.Z()
|
||||||
|
}
|
||||||
|
|
||||||
|
func Cross(v1, v2 *Vec3) *Vec3 {
|
||||||
|
|
||||||
|
// x = a[1]*b[2] - a[2]*b[1]
|
||||||
|
// y = a[2]*b[0] - a[0]*b[2]
|
||||||
|
// z = a[0]*b[1] - a[1]*b[0]
|
||||||
|
|
||||||
|
//Note: It's done this way to get inlining. Any small changes
|
||||||
|
//break inlining so check before any changes.
|
||||||
|
f := [3]float32{
|
||||||
|
v1.Arr[1]*v2.Arr[2] - v1.Arr[2]*v2.Arr[1],
|
||||||
|
v1.Arr[2]*v2.Arr[0] - v1.Arr[0]*v2.Arr[2],
|
||||||
|
v1.Arr[0]*v2.Arr[1] - v1.Arr[1]*v2.Arr[0],
|
||||||
|
}
|
||||||
|
|
||||||
|
return &Vec3{
|
||||||
|
Arr: f,
|
||||||
|
Vector: &blas32.Vector{
|
||||||
|
N: 3,
|
||||||
|
Inc: 1,
|
||||||
|
Data: f[:],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
15
main.go
15
main.go
@ -23,12 +23,19 @@ func main() {
|
|||||||
0, 0, 0, 0,
|
0, 0, 0, 0,
|
||||||
}
|
}
|
||||||
m2 := gglm.NewMat4(f)
|
m2 := gglm.NewMat4(f)
|
||||||
|
|
||||||
println("m1:", m1.String())
|
|
||||||
println("m2:", m2.String())
|
|
||||||
|
|
||||||
m3 := gglm.AddMat4(m1, m2)
|
m3 := gglm.AddMat4(m1, m2)
|
||||||
|
|
||||||
|
m2.Add(m3)
|
||||||
|
|
||||||
println("m1:", m1.String())
|
println("m1:", m1.String())
|
||||||
println("m2:", m2.String())
|
println("m2:", m2.String())
|
||||||
println("m3:", m3.String())
|
println("m3:", m3.String())
|
||||||
|
|
||||||
|
v1 := gglm.NewVec3([]float32{5, 4, 2})
|
||||||
|
v2 := gglm.NewVec3([]float32{32, 10, 9})
|
||||||
|
cp := gglm.Cross(v1, v2)
|
||||||
|
dp := gglm.DotVec3(v1, v2)
|
||||||
|
println(cp.String())
|
||||||
|
println(dp)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user