SISCone 3.0.5
|
Implementation of a 2D quadtree. More...
#include <quadtree.h>
Public Member Functions | |
Cquadtree () | |
default ctor | |
Cquadtree (double _x, double _y, double _half_size_x, double _half_size_y) | |
ctor with initialisation (see init for details) | |
~Cquadtree () | |
default destructor at destruction, everything is destroyed except physical values at the leaves | |
int | init (double _x, double _y, double _half_size_x, double _half_size_y) |
init the tree. | |
int | add (Cmomentum *v_add) |
adding a particle to the tree. | |
Creference | circle_intersect (double cx, double cy, double cR2) |
circle intersection. | |
int | save (FILE *flux) |
output a data file for drawing the grid. | |
int | save_leaves (FILE *flux) |
output a data file for drawing the tree leaves. | |
Public Attributes | |
double | centre_x |
x-position of the centre of the cell | |
double | centre_y |
y-position of the centre of the cell | |
double | half_size_x |
HALF size of the cell. | |
double | half_size_y |
HALF size of the cell. | |
Cmomentum * | v |
physical contents | |
Cquadtree * | children [2][2] |
sub-cells ( 0,1->left-right; 0,1->bottom,top) | |
bool | has_child |
true if not a leaf | |
Implementation of a 2D quadtree.
This class implements the traditional two-dimensional quadtree. The elements at each node are of 'Cmomentum' type.
Definition at line 43 of file quadtree.h.
siscone::Cquadtree::Cquadtree | ( | ) |
siscone::Cquadtree::~Cquadtree | ( | ) |
default destructor at destruction, everything is destroyed except physical values at the leaves
Definition at line 69 of file quadtree.cpp.
adding a particle to the tree.
This method adds one vector to the quadtree structure which is updated consequently.
v_add | vector to add |
Definition at line 111 of file quadtree.cpp.
References add(), centre_x, centre_y, children, Cquadtree(), siscone::Cmomentum::eta, half_size_x, half_size_y, has_child, siscone::Cmomentum::phi, and v.
Referenced by add().
Creference siscone::Cquadtree::circle_intersect | ( | double | cx, |
double | cy, | ||
double | cR2 | ||
) |
circle intersection.
computes the intersection with a circle of given centre and radius. The output takes the form of a quadtree with all squares included in the circle.
cx | circle centre x coordinate |
cy | circle centre y coordinate |
cR2 | circle radius SQUARED |
Definition at line 176 of file quadtree.cpp.
References centre_x, centre_y, children, circle_intersect(), siscone::Cmomentum::eta, half_size_x, half_size_y, has_child, siscone::Cmomentum::phi, siscone::Cmomentum::ref, and v.
Referenced by circle_intersect().
init the tree.
By initializing the tree, we mean setting the cell parameters and preparing the object to act as a seed for a new tree.
_x | x-position of the center |
_y | y-position of the center |
_half_size_x | x-size of the cell |
_half_size_y | y-size of the cell |
Definition at line 91 of file quadtree.cpp.
References centre_x, centre_y, half_size_x, half_size_y, and v.
Referenced by Cquadtree().
output a data file for drawing the grid.
This can be used to output a data file containing all the grid subdivisions. The file contents is as follows: first and second columns give center of the cell, the third gives the size.
flux | opened stream to write to |
Definition at line 261 of file quadtree.cpp.
References centre_x, centre_y, children, half_size_x, half_size_y, has_child, and save().
Referenced by save().
output a data file for drawing the tree leaves.
This can be used to output a data file containing all the tree leaves. The file contents is as follows: first and second columns give center of the cell, the third gives the size.
flux | opened stream to write to |
Definition at line 287 of file quadtree.cpp.
References centre_x, centre_y, children, half_size_x, half_size_y, has_child, and save_leaves().
Referenced by save_leaves().
double siscone::Cquadtree::centre_x |
x-position of the centre of the cell
Definition at line 112 of file quadtree.h.
Referenced by add(), circle_intersect(), init(), save(), and save_leaves().
double siscone::Cquadtree::centre_y |
y-position of the centre of the cell
Definition at line 113 of file quadtree.h.
Referenced by add(), circle_intersect(), init(), save(), and save_leaves().
Cquadtree* siscone::Cquadtree::children[2][2] |
sub-cells ( 0,1->left-right; 0,1->bottom,top)
Definition at line 119 of file quadtree.h.
Referenced by add(), circle_intersect(), Cquadtree(), Cquadtree(), save(), save_leaves(), and ~Cquadtree().
double siscone::Cquadtree::half_size_x |
HALF size of the cell.
Definition at line 114 of file quadtree.h.
Referenced by add(), circle_intersect(), init(), save(), and save_leaves().
double siscone::Cquadtree::half_size_y |
HALF size of the cell.
Definition at line 115 of file quadtree.h.
Referenced by add(), circle_intersect(), init(), save(), and save_leaves().
bool siscone::Cquadtree::has_child |
true if not a leaf
Definition at line 120 of file quadtree.h.
Referenced by add(), circle_intersect(), Cquadtree(), Cquadtree(), save(), save_leaves(), and ~Cquadtree().
Cmomentum* siscone::Cquadtree::v |
physical contents
Definition at line 117 of file quadtree.h.
Referenced by add(), circle_intersect(), Cquadtree(), Cquadtree(), init(), and ~Cquadtree().