optimize octree octant_determination function in c++

256 Views Asked by At

I am building a spacial octree. In order to determine in which branch/octant a certain point (x,y,z) should be placed, I use this function:

if (x>x_centre) {
    xsign = 1;
}
else {
    xsign = 0;
}

if (y>y_centre) {
    ysign = 1;
}
else {
    ysign = 0;
}

if (z>z_centre) {
    zsign = 1;
}
else {
    zsign = 0;
}

return xsign + 2*ysign + 4*zsign;

It returns a number between 0 and 7 unique for every octant. It turns out this snippet is called a big many times. It gets quite time consuming when building large trees.

Is there any easy way to speed this proces up?

This allready gives a 30 percent speed up:

xsign = x>x_centre;
ysign = y>y_centre;
zsign = z>y_centre;

return xsign + 2*ysign + 4*zsign;

Any other tips?

0

There are 0 best solutions below