From 5f43d7da880c87a47d26cf06281bce61299538e4 Mon Sep 17 00:00:00 2001 From: bloeys Date: Fri, 5 Nov 2021 06:43:17 +0400 Subject: [PATCH] Vec normalize funcs --- gglm/vec2.go | 6 ++++++ gglm/vec3.go | 7 +++++++ gglm/vec4.go | 8 ++++++++ main.go | 13 +++++++++++++ 4 files changed, 34 insertions(+) diff --git a/gglm/vec2.go b/gglm/vec2.go index 761ffc7..99b1664 100755 --- a/gglm/vec2.go +++ b/gglm/vec2.go @@ -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{ diff --git a/gglm/vec3.go b/gglm/vec3.go index f943a59..16cbe8d 100755 --- a/gglm/vec3.go +++ b/gglm/vec3.go @@ -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{ diff --git a/gglm/vec4.go b/gglm/vec4.go index 89ecfd9..f1ce105 100755 --- a/gglm/vec4.go +++ b/gglm/vec4.go @@ -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{ diff --git a/main.go b/main.go index 25a1abe..e9e7770 100755 --- a/main.go +++ b/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()) }