diff --git a/govector_test.go b/govector_test.go new file mode 100644 index 0000000..cbcae74 --- /dev/null +++ b/govector_test.go @@ -0,0 +1,29 @@ +package govector + +import ( + // "fmt" + "testing" +) + +func TestSub(t *testing.T) { + p1 := point2d{10, 10} + p2 := point2d{5, 5} + + v := p1.sub(p2) + + if v != (vector2d{5, 5}) { + t.Errorf("Sub Error") + } +} + +func TestMag(t *testing.T) { + p1 := point2d{10, 10} + p2 := point2d{7, 6} + + v := p1.sub(p2) + m := v.mag() + + if m != 5 { + t.Errorf("Mag Error") + } +} diff --git a/vectorpoint.go b/vectorpoint.go new file mode 100644 index 0000000..9990343 --- /dev/null +++ b/vectorpoint.go @@ -0,0 +1,26 @@ +package govector + +import ( + "math" +) + +type vector2d struct { + X float64 `json:"x"` + Y float64 `json:"y"` +} + +type point2d struct { + X float64 `json:"x"` + Y float64 `json:"y"` +} + +const epsilon = 1e-7 + +func (p1 point2d) sub(p2 point2d) vector2d { + v := vector2d{p1.X - p2.X, p1.Y - p2.Y} + return v +} + +func (v vector2d) mag() float64 { + return math.Abs(math.Sqrt(v.X*v.X + v.Y*v.Y)) +}