Skip to content

Commit

Permalink
Move rope and grid in component package
Browse files Browse the repository at this point in the history
  • Loading branch information
polldo committed Aug 7, 2022
1 parent 748654d commit e5573cb
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 32 deletions.
20 changes: 11 additions & 9 deletions grid.go → component/grid.go
Original file line number Diff line number Diff line change
@@ -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,
}
Expand All @@ -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))
Expand All @@ -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]
}
Expand Down
25 changes: 25 additions & 0 deletions component/rope.go
Original file line number Diff line number Diff line change
@@ -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
}
23 changes: 0 additions & 23 deletions rope.go

This file was deleted.

0 comments on commit e5573cb

Please sign in to comment.