Vec normalize funcs

This commit is contained in:
bloeys
2021-11-05 06:43:17 +04:00
parent 4a7e66c0b9
commit 5f43d7da88
4 changed files with 34 additions and 0 deletions

View File

@ -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{

View File

@ -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{

View File

@ -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
View File

@ -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())
}