mirror of
https://github.com/bloeys/gglm.git
synced 2025-12-29 13:38:20 +00:00
Vec normalize funcs
This commit is contained in:
@ -87,6 +87,12 @@ func (v *Vec2) Set(x, y float32) {
|
||||
v.Data[1] = y
|
||||
}
|
||||
|
||||
func (v *Vec2) Normalize() {
|
||||
mag := v.Mag()
|
||||
v.Data[0] /= mag
|
||||
v.Data[1] /= mag
|
||||
}
|
||||
|
||||
//AddVec2 v3 = v1 + v2
|
||||
func AddVec2(v1, v2 *Vec2) *Vec2 {
|
||||
return &Vec2{
|
||||
|
||||
@ -105,6 +105,13 @@ func (v *Vec3) Set(x, y, z float32) {
|
||||
v.Data[2] = z
|
||||
}
|
||||
|
||||
func (v *Vec3) Normalize() {
|
||||
mag := float32(math.Sqrt(float64(v.X()*v.X() + v.Y()*v.Y() + v.Z()*v.Z())))
|
||||
v.Data[0] /= mag
|
||||
v.Data[1] /= mag
|
||||
v.Data[2] /= mag
|
||||
}
|
||||
|
||||
//AddVec3 v3 = v1 + v2
|
||||
func AddVec3(v1, v2 *Vec3) *Vec3 {
|
||||
return &Vec3{
|
||||
|
||||
@ -125,6 +125,14 @@ func (v *Vec4) Set(x, y, z, w float32) {
|
||||
v.Data[3] = w
|
||||
}
|
||||
|
||||
func (v *Vec4) Normalize() {
|
||||
mag := float32(math.Sqrt(float64(v.Data[0]*v.Data[0] + v.Data[1]*v.Data[1] + v.Data[2]*v.Data[2] + v.Data[3]*v.Data[3])))
|
||||
v.Data[0] /= mag
|
||||
v.Data[1] /= mag
|
||||
v.Data[2] /= mag
|
||||
v.Data[3] /= mag
|
||||
}
|
||||
|
||||
//AddVec4 v3 = v1 + v2
|
||||
func AddVec4(v1, v2 *Vec4) *Vec4 {
|
||||
return &Vec4{
|
||||
|
||||
13
main.go
13
main.go
@ -60,6 +60,10 @@ func main() {
|
||||
v2.Set(1, 2)
|
||||
println(v1.Eq(v2))
|
||||
|
||||
println("V1: " + v1.String())
|
||||
v1.Normalize()
|
||||
println("V1 Normal: " + v1.String())
|
||||
|
||||
//Vec3
|
||||
v3 := &gglm.Vec3{Data: [3]float32{1, 2, 3}}
|
||||
v4 := &gglm.Vec3{Data: [3]float32{4, 5, 6}}
|
||||
@ -71,6 +75,11 @@ func main() {
|
||||
println(v3.Eq(v4))
|
||||
|
||||
println(gglm.DotVec3(v3, v4))
|
||||
println(gglm.Cross(v3, v4).String())
|
||||
|
||||
println("V3: " + v3.String())
|
||||
v3.Normalize()
|
||||
println("V3 Normal: " + v3.String())
|
||||
|
||||
//Vec4
|
||||
v5 := &gglm.Vec4{Data: [4]float32{1, 2, 3, 4}}
|
||||
@ -83,4 +92,8 @@ func main() {
|
||||
println(v5.Eq(v6))
|
||||
|
||||
println(gglm.DotVec4(v5, v6))
|
||||
|
||||
println("V6: " + v6.String())
|
||||
v6.Normalize()
|
||||
println("V6 Normal: " + v6.String())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user