From 68842de56ed701b91e2865ee201a0dfdeb8aa5b1 Mon Sep 17 00:00:00 2001 From: Fraser Graham Date: Thu, 8 Aug 2013 23:14:18 -0700 Subject: [PATCH] Correct normalization of 0 vector --- govector_test.go | 8 ++++++++ vectorpoint.go | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/govector_test.go b/govector_test.go index d38e232..42d066f 100644 --- a/govector_test.go +++ b/govector_test.go @@ -58,4 +58,12 @@ func TestNormalize(t *testing.T) { if vn.Mag() != 1 { t.Errorf("Normalize Error") } + + v0 := Vector2d{0, 0} + vn0 := v0.Normalize() + + if vn0.Mag() != 0 { + t.Errorf("Normalize Error") + } + } diff --git a/vectorpoint.go b/vectorpoint.go index 60b84fc..450323a 100644 --- a/vectorpoint.go +++ b/vectorpoint.go @@ -44,6 +44,10 @@ func (v Vector2d) Scale(s float64) Vector2d { } func (v Vector2d) Normalize() Vector2d { + if v.X == 0 && v.Y == 0 { + return v + } + m := v.Mag() return Vector2d{v.X / m, v.Y / m} }