28 #include "WBresenhamDBL.h"
29 #include "core/common/math/WLine.h"
30 #include "core/common/math/linearAlgebra/WPosition.h"
31 #include "core/dataHandler/WGridRegular3D.h"
47 int dx = gridEndPos[0] - gridStartPos[0];
48 int dy = gridEndPos[1] - gridStartPos[1];
49 int dz = gridEndPos[2] - gridStartPos[2];
50 int l = std::abs( dx );
51 int m = std::abs( dy );
52 int n = std::abs( dz );
53 int x_inc = ( dx < 0 ) ? -1 : 1;
54 int y_inc = ( dy < 0 ) ? -1 : 1;
55 int z_inc = ( dz < 0 ) ? -1 : 1;
62 gridOffset[0] = start[0] - gridStartPos[0];
63 gridOffset[1] = start[1] - gridStartPos[1];
64 gridOffset[2] = start[2] - gridStartPos[2];
66 if( ( l >= m ) && ( l >= n ) )
68 err_1 = dy2 - l + gridOffset[1];
69 err_2 = dz2 - l + gridOffset[2];
70 for( i = 0; i < l; i++ )
89 else if( ( m >= l ) && ( m >= n ) )
91 err_1 = dx2 - m + gridOffset[0];
92 err_2 = dz2 - m + gridOffset[2];
93 for( i = 0; i < m; i++ )
113 err_1 = dy2 - n + gridOffset[1];
114 err_2 = dx2 - n + gridOffset[0];
115 for( i = 0; i < n; i++ )
virtual ~WBresenhamDBL()
Finishes this raster algo.
WBresenhamDBL(std::shared_ptr< WGridRegular3D > grid, bool antialiased=true)
Initializes new raster algo.
void rasterSegment(const WPosition &start, const WPosition &stop)
Scans a line segment for voxels which are hit.
Implements basic Bresenham algorithm for rasterization.
virtual void markVoxel(const WVector3i &voxel, const int axis, const WPosition &start, const WPosition &end)
Marks the given voxel as a hit.
A fixed size matrix class.
This only is a 3d double vector.
std::shared_ptr< WGridRegular3D > m_grid
The grid is used for the following purposes: