Defined in File QuadNode.hpp
Public Functions
Construct a QuadNode for polar coordinates.
leftAngle – Minimal angular coordinate of region, in radians from 0 to 2\pi
minR – Minimal radial coordinate of region, between 0 and 1
rightAngle – Maximal angular coordinate of region, in radians from 0 to 2\pi
maxR – Maximal radial coordinate of region, between 0 and 1
capacity – Number of points a leaf cell can store before splitting
minDiameter – Minimal diameter of a quadtree node. If the node is already smaller, don’t split even if over capacity. Default is 0
splitTheoretical – Whether to split in a theoretically optimal way or in a way to decrease measured running times
alpha – dispersion Parameter of the point distribution. Only has an effect if theoretical split is true
diagnostics – Count how many necessary and unnecessary comparisons happen in leaf cells? Will cause race condition and false sharing in parallel use
Add a point at polar coordinates (angle, R) with content input. May split node if capacity is full
input – arbitrary content, in our case an index
angle – angular coordinate of point, between 0 and 2 pi.
R – radial coordinate of point, between 0 and 1.
Remove content at polar coordinates (angle, R). May cause coarsening of the quadtree
input – Content to be removed
angle – Angular coordinate
R – Radial coordinate
True if content was found and removed, false otherwise
Check whether the region managed by this node lies outside of an Euclidean circle.
query – Center of the Euclidean query circle, given in Cartesian coordinates
radius – Radius of the Euclidean query circle
True if the region managed by this node lies completely outside of the circle
Check whether the region managed by this node lies outside of an Euclidean circle. Functionality is the same as in the method above, but it takes polar coordinates instead of Cartesian ones
angle_c – Angular coordinate of the Euclidean query circle’s center
r_c – Radial coordinate of the Euclidean query circle’s center
radius – Radius of the Euclidean query circle
True if the region managed by this node lies completely outside of the circle
phi – Angular coordinate of query point
r_h – radial coordinate of query point in poincare disk
Does the point at (angle, r) fall inside the region managed by this QuadNode?
angle – Angular coordinate of input point
r – Radial coordinate of input points
True if input point lies within the region of this QuadNode
Get all Elements in this QuadNode or a descendant of it
vector of content type T
Don’t use this! Code is still in here for a unit test.
Get copy of the leaf cell responsible for a point at (angle, r). Expensive because it copies the whole subtree, causes assertion failure if called with the wrong arguments
angle – Angular coordinate of point
r – Radial coordinate of point
Copy of leaf cell containing point, or dummy cell not responsible for point
Main query method, get points lying in a Euclidean circle around the center point. Optional limits can be given to get a different result or to reduce unnecessary comparisons
Elements are pushed onto a vector which is a required argument. This is done to reduce copying
Safe to call in parallel if diagnostics are disabled
center – Center of the query circle
radius – Radius of the query circle
result – Reference to the vector where the results will be stored
minAngle – Optional value for the minimum angular coordinate of the query region
maxAngle – Optional value for the maximum angular coordinate of the query region
lowR – Optional value for the minimum radial coordinate of the query region
highR – Optional value for the maximum radial coordinate of the query region
Shrink all vectors in this subtree to fit the content. Call after quadtree construction is complete, causes better memory usage and cache efficiency