From e5573cb4fb02330c050d26e79dd3e41499848703 Mon Sep 17 00:00:00 2001 From: Paolo Calao Date: Sun, 7 Aug 2022 15:24:33 +0200 Subject: [PATCH] Move rope and grid in component package --- grid.go => component/grid.go | 20 +++++++++++--------- component/rope.go | 25 +++++++++++++++++++++++++ rope.go | 23 ----------------------- 3 files changed, 36 insertions(+), 32 deletions(-) rename grid.go => component/grid.go (55%) create mode 100644 component/rope.go delete mode 100644 rope.go diff --git a/grid.go b/component/grid.go similarity index 55% rename from grid.go rename to component/grid.go index 3d16250..9483a39 100644 --- a/grid.go +++ b/component/grid.go @@ -1,14 +1,16 @@ -package verlet +package component + +import "github.com/polldo/verlet" type Grid struct { - *Verlet - Origin *Point + *verlet.Verlet + Origin *verlet.Point Rows, Cols int } -func NewGrid(cols, rows int, distance float64, opts ...Opt) *Grid { +func NewGrid(cols, rows int, distance float64, opts ...verlet.Opt) *Grid { g := &Grid{ - Verlet: New(opts...), + Verlet: verlet.New(opts...), Rows: rows, Cols: cols, } @@ -19,14 +21,14 @@ func NewGrid(cols, rows int, distance float64, opts ...Opt) *Grid { for i := 0; i < cols; i++ { if i == 0 { - g.Origin = g.NewPoint(x, y, Radius(rad), Fix()) + g.Origin = g.NewPoint(x, y, verlet.Radius(rad), verlet.Fix()) } else { - g.NewPoint(x+float64(i)*distance, y, Radius(rad)) + g.NewPoint(x+float64(i)*distance, y, verlet.Radius(rad)) g.NewLine(g.Extract(i, 0), g.Extract(i-1, 0)) } for j := 1; j < rows; j++ { - g.NewPoint(x+float64(i)*distance, y-float64(j)*distance, Radius(rad)) + g.NewPoint(x+float64(i)*distance, y-float64(j)*distance, verlet.Radius(rad)) g.NewLine(g.Extract(i, j), g.Extract(i, j-1)) if i > 0 { g.NewLine(g.Extract(i, j), g.Extract(i-1, j)) @@ -37,7 +39,7 @@ func NewGrid(cols, rows int, distance float64, opts ...Opt) *Grid { return g } -func (g *Grid) Extract(col, row int) *Point { +func (g *Grid) Extract(col, row int) *verlet.Point { idx := g.MatrixToArray(col, row) return g.Points[idx] } diff --git a/component/rope.go b/component/rope.go new file mode 100644 index 0000000..667d11d --- /dev/null +++ b/component/rope.go @@ -0,0 +1,25 @@ +package component + +import "github.com/polldo/verlet" + +type Rope struct { + *verlet.Verlet + Head *verlet.Point +} + +func NewRope(units int, distance float64, opts ...verlet.Opt) *Rope { + r := &Rope{ + Verlet: verlet.New(opts...), + } + + x := r.Verlet.Bound.X / 2 + y := r.Verlet.Bound.Y / 2 + r.Head = r.NewPoint(x, y, verlet.Fix(), verlet.Radius(8.0)) + + for i := 1; i < units; i++ { + r.NewPoint(x, y-float64(i)*distance) + r.NewLine(r.Points[i], r.Points[i-1]) + } + + return r +} diff --git a/rope.go b/rope.go deleted file mode 100644 index 208af30..0000000 --- a/rope.go +++ /dev/null @@ -1,23 +0,0 @@ -package verlet - -type Rope struct { - *Verlet - Head *Point -} - -func NewRope(units int, distance float64, opts ...Opt) *Rope { - r := &Rope{ - Verlet: New(opts...), - } - - x := r.Verlet.Bound.X / 2 - y := r.Verlet.Bound.Y / 2 - r.Head = r.NewPoint(x, y, Fix(), Radius(8.0)) - - for i := 1; i < units; i++ { - r.NewPoint(x, y-float64(i)*distance) - r.NewLine(r.Points[i], r.Points[i-1]) - } - - return r -}