MIRA
Classes | Namespaces | Functions
Bresenham.h File Reference

This header provides a set of functions to iterate over lines with the Bresenham or Bresenham Run-Slice Algorithm. More...

#include <cstdlib>
#include <algorithm>
#include <geometry/Point.h>
Include dependency graph for Bresenham.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  BresenhamLineIterator
 Implements an iterator that is able to iterate over a Bresenham line point by point using the prefix ++operator and –operator. More...
 
class  GeneralBresenhamLineIteratorCommonBase
 
struct  GeneralBresenhamLineIteratorCommonBase::AxisBase
 Data structure containing the numtype-independent relevant variables for one axis (dimension) of the line. More...
 
class  GeneralBresenhamLineIteratorBase< Drive, DrivenByLongestAxis >
 Guaranteeing longest axis as drive axis allows some simplification/optimization in step. More...
 
class  GeneralBresenhamLineIteratorBase< Drive, false >
 Specialization for DrivenByLongestAxis=false (driving axis given explicitly: No need to determine the drive axis, but stepping is a little more complex. More...
 
class  GeneralBresenhamLineIterator< D, T, Drive, Res >
 This more general iterator basically follows the design of BresenhamLineIterator, but works on an arbitrary-dimensional line and handles real-valued start and end positions. More...
 
struct  GeneralBresenhamLineIterator< D, T, Drive, Res >::Axis
 Add the type-dependent start and end value to the axis data struct. More...
 

Namespaces

 mira
 specialize cv::DataType for our ImgPixel and inherit from cv::DataType<Vec>
 

Functions

template<typename Visitor >
void bresenham (int x0, int y0, int x1, int y1, Visitor &&visitor)
 Rasterizes a Bresenham line point by point starting at coordinate (x0,y0) and ending in (x1,y1). More...
 
template<typename Visitor >
void bresenham (Point2i p0, Point2i p1, Visitor &&visitor)
 Different interface for standard Bresenham Algorithm. More...
 
template<typename Visitor >
void bresenhamRunSlice (int x0, int y0, int x1, int y1, Visitor &&visitor)
 Rasterizes a Bresenham line starting at coordinate (x0,y0) and ending in (x1,y1). More...
 
template<typename Visitor >
void bresenhamRunSlice (Point2i p0, Point2i p1, Visitor &&visitor)
 Different interface for Bresenham Run-Slice Algorithm. More...
 

Detailed Description

This header provides a set of functions to iterate over lines with the Bresenham or Bresenham Run-Slice Algorithm.

It uses the visitor concept (see documentation examples) to implement the iteration.

Author
Erik Einhorn, Christof Schroeter
Date
2010/10/15