Add a generalizedPlaneHit() that follows the mathematics presented by:
[Foley et al, 1996], [O'Rourke, 1998]. Another reference can be found [here](http://geomalgorithms.com/a05-_intersect-1.html#intersect2D_2Segments()). This code was then fitted to our algorithm by Ariel in #78.
Update angular hit to remove trigonometric and matrix calculations.
Update azimuthal hit to remove trigonometric and matrix calculations.
Remove use of tol. Uses KnEqual() instead with defaulted tolerances for absolute and relative epsilon. In this context, Kn is short for Donald Knuth, the author for which this algorithm is based upon. Reference:
Donald. E. Knuth, 1998, Addison-Wesley Longman, Inc., ISBN 0-201-89684-2, Addison-Wesley
Professional; 3rd edition. (The relevant equations are in §4.2.2, Eq. 36 and 37.)
Updated the initial traversal phase to remove atan2 when calculating initial theta and phi voxels.
Add calculateMinimumIntersection() to determine the correct minimum intersection voxel(s).
Attempt to increase readability of traversal phase with a switch case.
spherical_voxel_grid:
Fix bug in constructor that initializes variable incorrectly.
ray:
Add timeOfIntersectionAt(Vec3 p) function implementation for a given vector. This calculates the difference between p and the origin, and divides it by the ray's direction.
testing:
Update test suite to provide useful information when voxels do not match up. Add gmock to CMake.
Add simple spherical traversal tests for both cpp and Cythonized version.
all the above:
Update function arguments for cpp and Cythonized code to remove tolerance.
Change size_t to std::size_t since we're using C++11.
While this currently does not work even for the simplest case, I am pushing it in attempt to reduce PR sizes in the near future. My next PR will be actually fixing the code.
spherical_volume_rendering_util:
[Foley et al, 1996], [O'Rourke, 1998]
. Another reference can be found [here](http://geomalgorithms.com/a05-_intersect-1.html#intersect2D_2Segments()). This code was then fitted to our algorithm by Ariel in #78.tol
. Uses KnEqual() instead with defaulted tolerances for absolute and relative epsilon. In this context, Kn is short for Donald Knuth, the author for which this algorithm is based upon. Reference:atan2
when calculating initial theta and phi voxels.spherical_voxel_grid:
ray:
testing:
all the above:
size_t
tostd::size_t
since we're using C++11.