From dd925a7b838e477ae8584b1d1564abdff9d536b4 Mon Sep 17 00:00:00 2001 From: Eric H Date: Sat, 17 Aug 2024 14:39:25 -0400 Subject: [PATCH] add String functions for better printing/debugging (#40) --- geom/geometry.go | 9 +++++++++ geom3d/geometry.go | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/geom/geometry.go b/geom/geometry.go index 481b301..28f2b3b 100644 --- a/geom/geometry.go +++ b/geom/geometry.go @@ -1,6 +1,7 @@ package geom import ( + "fmt" "math" ) @@ -55,6 +56,10 @@ type Vector2 struct { X, Y float64 } +func (v *Vector2) String() string { + return fmt.Sprintf("{%0.3f,%0.3f}", v.X, v.Y) +} + func (v *Vector2) Add(v2 *Vector2) *Vector2 { v.X += v2.X v.Y += v2.Y @@ -101,6 +106,10 @@ type Line struct { X1, Y1, X2, Y2 float64 } +func (l *Line) String() string { + return fmt.Sprintf("{%0.3f,%0.3f->%0.3f,%0.3f}", l.X1, l.Y1, l.X2, l.Y2) +} + // Angle gets the angle of the line func (l *Line) Angle() float64 { return math.Atan2(l.Y2-l.Y1, l.X2-l.X1) diff --git a/geom3d/geometry.go b/geom3d/geometry.go index 1eb60c1..03cbf01 100644 --- a/geom3d/geometry.go +++ b/geom3d/geometry.go @@ -1,6 +1,7 @@ package geom3d import ( + "fmt" "math" ) @@ -11,6 +12,10 @@ type Vector3 struct { X, Y, Z float64 } +func (v *Vector3) String() string { + return fmt.Sprintf("{%0.3f,%0.3f,%0.3f}", v.X, v.Y, v.Z) +} + func (v *Vector3) Add(v3 *Vector3) *Vector3 { v.X += v3.X v.Y += v3.Y @@ -38,6 +43,10 @@ type Line3d struct { X1, Y1, Z1, X2, Y2, Z2 float64 } +func (l *Line3d) String() string { + return fmt.Sprintf("{%0.3f,%0.3f,%0.3f->%0.3f,%0.3f,%0.3f}", l.X1, l.Y1, l.Z1, l.X2, l.Y2, l.Z2) +} + // Heading gets the XY axis angle of the 3-dimensional line func (l *Line3d) Heading() float64 { return math.Atan2(l.Y2-l.Y1, l.X2-l.X1)