From 330dd82a2a7a5fc4a0257bd3cd95ad2b1cdf7758 Mon Sep 17 00:00:00 2001 From: silva guimaraes Date: Sat, 19 Aug 2023 00:12:11 -0300 Subject: [PATCH] quadtree implementada --- main.go | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/main.go b/main.go index 76ed088..9147559 100644 --- a/main.go +++ b/main.go @@ -42,13 +42,24 @@ func (q *quadtree) isOccupied() (bool, *magnet) { } } +func (q *quadtree) hasChildNodes() bool { + return q.nodes != nil +} + func (q *quadtree) insertMagnet(magnets ...*magnet) { for _, magnet := range magnets { + if magnet.pos.X == 156 { + fmt.Println("foo!") + } for _, node := range q.nodes { if node.isOutside(magnet.pos) { continue } + if node.hasChildNodes() { + node.insertMagnet(magnet) + continue + } if occupied, occupyingMagnet := node.isOccupied(); occupied { node.subdivide() node.magnet = nil @@ -127,7 +138,7 @@ func (q *quadtree) drawBoundaries() { } // parà‚metros -const initalMagnetCount = 5 +const initalMagnetCount = 50 const windowWidth = 700 const windowHeight = 700 const magnetRadius = 5 @@ -192,6 +203,7 @@ func (m *magnet) update(magnets []*magnet) { m.pos = newPos } +// debug func (q *quadtree) parents() []*quadtree { if q.parent == nil { return nil @@ -199,6 +211,7 @@ func (q *quadtree) parents() []*quadtree { return append(q.parent.parents(), q.parent) } +// debug func (q *quadtree) printMagnets() { for _, node := range q.nodes { node.printMagnets() @@ -244,15 +257,15 @@ func main() { defer rl.CloseWindow() rl.SetTargetFPS(60) - // magnets := randomMagnets(initalMagnetCount) + magnets := randomMagnets(initalMagnetCount) - magnets := []*magnet{ - newMagnet(383, 130, 1), - newMagnet(540, 291, 1), - newMagnet(122, 490, 1), - newMagnet(324, 370, 1), - newMagnet(156, 482, 1), - } + // magnets := []*magnet{ + // newMagnet(383, 130, 1), + // newMagnet(540, 291, 1), + // newMagnet(122, 490, 1), + // newMagnet(324, 370, 1), + // newMagnet(156, 482, 1), + // } quadtree := newQuadTreeRoot() quadtree.insertMagnet(magnets...)