From 2ba8d90815a621d263cd198fe2da8579e46e732d Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Fri, 17 Sep 2021 00:45:07 +0200 Subject: Added function to calculate a next pointer step on the field --- pkg/field/step.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 pkg/field/step.go (limited to 'pkg/field/step.go') diff --git a/pkg/field/step.go b/pkg/field/step.go new file mode 100644 index 0000000..50147d2 --- /dev/null +++ b/pkg/field/step.go @@ -0,0 +1,20 @@ +package field + +func (f Field) Step(x, y, dx, dy int) (int, int) { + x2, y2 := x+dx, y+dy + if f.IsIn(x2, y2) { + return x2, y2 + } + // We are stepping outside, we need to wrap the Lahey-space + for { + x2, y2 := x-dx, y-dy + if !f.IsIn(x2, y2) { + return x, y + } + x, y = x2, y2 + } +} + +func (f Field) IsIn(x, y int) bool { + return x >= f.x && x < f.x+f.lx && y >= f.y && y < f.y+f.ly +} -- cgit v1.2.3