Re:An Interactive Explanation of Quadtrees
by hobs on Tuesday February 14, 2023 @06:43PM
(#34797882)
Why cant you use an N tree, what's special about 4?
[ Parent
| on HN ]
Re:An Interactive Explanation of Quadtrees
by ShredKazoo on Tuesday February 14, 2023 @09:06PM
(#34799137)
Maybe having the struct size be constant allows for better space locality in memory? You never have to reallocate nodes, you can pack everything into an array.
Re:An Interactive Explanation of Quadtrees
by taeric on Tuesday February 14, 2023 @09:29PM
(#34799271)
I'm now very curious on this. My gut was more that it is 2^(number of dimensions) that is important here. As such, for a single dimensional storage of data, standard binary tree. Add in another dimension, but still want to halve the search space with every comparison, add another branch factor to the tree.
That said, this implies that for 3d space, you would want 8 way trees? But, I don't think I've ever heard of that being done/used.
Re:An Interactive Explanation of Quadtrees
by ShredKazoo on Tuesday February 14, 2023 @09:40PM
(#34799344)
A B-tree does in fact have >2 children for only a single dimension.
Re:An Interactive Explanation of Quadtrees
by taeric on Tuesday February 14, 2023 @11:49PM
(#34800217)
Right. But that is more to optimize cache/block reads, right? Been way too long since I've looked at many of those details. :)
Re:An Interactive Explanation of Quadtrees
by ShredKazoo on Wednesday February 15, 2023 @03:46AM
(#34801482)
Yeah pretty much, a node in a B-Tree is designed to fill a single page of memory
Re:An Interactive Explanation of Quadtrees
by EliasLittle on Tuesday February 14, 2023 @09:38PM
(#34799326)
8 way trees are used for 3D, they’re called Octrees.
Re:An Interactive Explanation of Quadtrees
by taeric on Wednesday February 15, 2023 @08:30AM
(#34803520)
I'm now super amused with myself for not looking for "oct." Which, yeah, would have been the obvious prefix to look for.
Re:An Interactive Explanation of Quadtrees
by corysama on Tuesday February 14, 2023 @10:29PM
(#34799733)
In ray-tracing, people debate back and forth between kd-trees, octrees, quad-AABB trees, oct-AABB trees, and I’m sure there are a few more.
I think quad-AABB has been the most popular option for a while now.
Re:An Interactive Explanation of Quadtrees
by sudosysgen on Wednesday February 15, 2023 @01:40AM
(#34800797)
Generally the most popular is a BVH system between objects and a kd-Tree within objects, in my experience.
Re:An Interactive Explanation of Quadtrees
by boppo1 on Wednesday February 15, 2023 @05:31AM
(#34802068)
I'm a noob to DS&A, but I'm writing a little add-on for Blender and have come up against BVH and kd-trees. What makes one more popular for 'within objects' and the other for 'between'?
Re:An Interactive Explanation of Quadtrees
by sudosysgen on Wednesday February 15, 2023 @12:17PM
(#34807153)
BVHes handle sparsity and very large scenes with variable density very well, so they are good to be able to see which objects you might intersect. kd-Trees are much better for objects because they handle the high density of geometry very well and are thus very effective if you want to test against a million triangles in close proximity, for example.
Re:An Interactive Explanation of Quadtrees
by boppo1 on Thursday February 16, 2023 @12:52PM
(#34822416)
Thanks!
Re:An Interactive Explanation of Quadtrees
by taeric on Wednesday February 15, 2023 @08:31AM
(#34803525)
So many things to read up on, now! :D Thanks for the pointers!