quadtree implementada
This commit is contained in:
parent
e69cbb5622
commit
330dd82a2a
1 changed files with 22 additions and 9 deletions
31
main.go
31
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...)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue