Quote
A first chance exception of type 'System.OutOfMemoryException' occurred in QuadTree.exe
public enum Slot
{
NW = 0,
NE = 1,
SW = 2,
SE = 3
}
class QuadTree<T> where T : class
{
private byte _maxLevels;
private QuadNode _root = null;
public QuadTree(byte maxLevels)
{
_maxLevels = maxLevels;
_root = new QuadNode(null, -100.0, -100.0, 200.0, 0, _maxLevels);
}
class QuadNode
{
private QuadNode[] _children = null;
private QuadNode _parent = null;
private List<T> _content = new List<T>();
private byte _level;
private double _x, _y, _size;
public QuadNode(QuadNode parent, double x, double y, double size, byte level, byte maxLevels)
{
_parent = parent;
_level = level;
_x = x;
_y = y;
_size = size;
if (_level < maxLevels)
{
_children = new QuadNode[4];
_buildChildren(maxLevels);
}
}
private bool _buildChildren(byte maxLevels)
{
double size = _size / 2;
double x = _x;
double y = _y;
byte newLevel = _level;
newLevel++;
_children[(int)Slot.NW] = new QuadNode(this, x - (size / 2), y + (size / 2), size, newLevel, maxLevels);
_children[(int)Slot.NE] = new QuadNode(this, x + (size / 2), y + (size / 2), size, newLevel, maxLevels);
_children[(int)Slot.SW] = new QuadNode(this, x - (size / 2), y - (size / 2), size, newLevel, maxLevels);
_children[(int)Slot.SE] = new QuadNode(this, x + (size / 2), y - (size / 2), size, newLevel, maxLevels);
return true;
}
}
}


Sign In
Create Account

Back to top









