@@ -148,10 +148,10 @@ <h2><a href="#sample-code" name="sample-code">Sample Code</a></h2>
148148</ aside >
149149
150150< h3 > < a href ="#a-sheet-of-graph-paper " name ="a-sheet-of-graph-paper "> A sheet of graph paper</ a > </ h3 >
151- < p > Here’s the basic idea: imagine the entire field of battle. Now superimpose a
152- grid of fixed-size squares onto it like a sheet of graph paper. Instead of
153- storing our units in a single array, we put them in the cells of this grid. Each
154- cell stores the list of units whose positions are within that cell’s boundary.</ p >
151+ < p > Imagine the entire field of battle. Now superimpose a grid of fixed-size squares
152+ onto it like a sheet of graph paper. Instead of storing our units in a single
153+ array, we put them in the cells of this grid. Each cell stores the list of units
154+ whose positions are within that cell’s boundary.</ p >
155155< p > < img src ="images/spatial-partition-grid.png " alt ="A grid with Units occupying different cells. Some cells have multiple Units. " /> </ p >
156156< p > When we handle combat, we only consider units within the same cell. Instead of
157157comparing each unit in the game with every other unit, we’ve < em > partitioned</ em > the
@@ -242,7 +242,7 @@ <h3><a href="#entering-the-field-of-battle" name="entering-the-field-of-battle">
242242< p > The first thing we need to do is make sure new units are actually placed into
243243the grid when they are created. We’ll make < code > Unit</ code > handle this in its
244244constructor:</ p >
245- < div class ="codehilite "> < pre > < span class ="n "> Unit</ span > < span class ="p "> (</ span > < span class ="n "> Grid</ span > < span class ="o "> *</ span > < span class ="n "> grid</ span > < span class ="p "> ,</ span > < span class ="kt "> double</ span > < span class ="n "> x</ span > < span class ="p "> ,</ span > < span class ="kt "> double</ span > < span class ="n "> y</ span > < span class ="p "> )</ span >
245+ < div class ="codehilite "> < pre > < span class ="n "> Unit</ span > < span class ="o " > :: </ span > < span class =" n " > Unit </ span > < span class =" p "> (</ span > < span class ="n "> Grid</ span > < span class ="o "> *</ span > < span class ="n "> grid</ span > < span class ="p "> ,</ span > < span class ="kt "> double</ span > < span class ="n "> x</ span > < span class ="p "> ,</ span > < span class ="kt "> double</ span > < span class ="n "> y</ span > < span class ="p "> )</ span >
246246< span class ="o "> :</ span > < span class ="n "> grid_</ span > < span class ="p "> (</ span > < span class ="n "> grid</ span > < span class ="p "> ),</ span >
247247 < span class ="n "> x_</ span > < span class ="p "> (</ span > < span class ="n "> x</ span > < span class ="p "> ),</ span >
248248 < span class ="n "> y_</ span > < span class ="p "> (</ span > < span class ="n "> y</ span > < span class ="p "> ),</ span >
@@ -291,9 +291,9 @@ <h3><a href="#a-clash-of-swords" name="a-clash-of-swords">A clash of swords</a><
291291this:</ p >
292292< div class ="codehilite "> < pre > < span class ="kt "> void</ span > < span class ="n "> Grid</ span > < span class ="o "> ::</ span > < span class ="n "> handleMelee</ span > < span class ="p "> ()</ span >
293293< span class ="p "> {</ span >
294- < span class ="k "> for</ span > < span class ="p "> (</ span > < span class ="kt "> int</ span > < span class ="n "> y </ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span > < span class ="p "> ;</ span > < span class ="n "> y </ span > < span class ="o "> <</ span > < span class ="n "> NUM_CELLS</ span > < span class ="p "> ;</ span > < span class ="n "> y </ span > < span class ="o "> ++</ span > < span class ="p "> )</ span >
294+ < span class ="k "> for</ span > < span class ="p "> (</ span > < span class ="kt "> int</ span > < span class ="n "> x </ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span > < span class ="p "> ;</ span > < span class ="n "> x </ span > < span class ="o "> <</ span > < span class ="n "> NUM_CELLS</ span > < span class ="p "> ;</ span > < span class ="n "> x </ span > < span class ="o "> ++</ span > < span class ="p "> )</ span >
295295 < span class ="p "> {</ span >
296- < span class ="k "> for</ span > < span class ="p "> (</ span > < span class ="kt "> int</ span > < span class ="n "> x </ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span > < span class ="p "> ;</ span > < span class ="n "> x </ span > < span class ="o "> <</ span > < span class ="n "> NUM_CELLS</ span > < span class ="p "> ;</ span > < span class ="n "> x </ span > < span class ="o "> ++</ span > < span class ="p "> )</ span >
296+ < span class ="k "> for</ span > < span class ="p "> (</ span > < span class ="kt "> int</ span > < span class ="n "> y </ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span > < span class ="p "> ;</ span > < span class ="n "> y </ span > < span class ="o "> <</ span > < span class ="n "> NUM_CELLS</ span > < span class ="p "> ;</ span > < span class ="n "> y </ span > < span class ="o "> ++</ span > < span class ="p "> )</ span >
297297 < span class ="p "> {</ span >
298298 < span class ="n "> handleCell</ span > < span class ="p "> (</ span > < span class ="n "> cells_</ span > < span class ="p "> [</ span > < span class ="n "> x</ span > < span class ="p "> ][</ span > < span class ="n "> y</ span > < span class ="p "> ]);</ span >
299299 < span class ="p "> }</ span >
@@ -646,7 +646,7 @@ <h3><a href="#does-the-partitioning-depend-on-the-set-of-objects" name="does-the
646646 performance, but < em > consistent</ em > performance: if each partition has the
647647 same number of objects, you ensure that all queries in the world will
648648 take about the same amount of time. When you need to maintain a stable
649- frame- rate, this consistency may be more important than raw performance.</ p >
649+ frame rate, this consistency may be more important than raw performance.</ p >
650650</ li >
651651< li >
652652< p > < em > It’s more efficient to partition an entire set of objects at once.</ em >
@@ -665,8 +665,8 @@ <h3><a href="#does-the-partitioning-depend-on-the-set-of-objects" name="does-the
665665name ="quad "> quadtrees</ span > .</ p >
666666< aside name ="quad ">
667667
668- < p > A quadtree partitions 2D space. Its 3D analogue is the < em > octree</ em > : it takes a
669- < em > volume</ em > and partitions it into eight < em > cubes</ em > . Aside from the extra
668+ < p > A quadtree partitions 2D space. Its 3D analogue is the < em > octree</ em > , which takes
669+ a < em > volume</ em > and partitions it into eight < em > cubes</ em > . Aside from the extra
670670dimension, it works the same as its flatter sibling.</ p >
671671</ aside >
672672
0 commit comments