36 #ifndef __PCL_LINE_ITERATOR__
37 #define __PCL_LINE_ITERATOR__
71 virtual void reset ();
151 LineIterator::init (
const Neighborhood& neighborhood)
155 index_ = x_ * width_ + y_;
158 int delta_x = x_end_ - x_start_;
159 int delta_y = y_end_ - y_start_;
161 int x_dir = ( (delta_x > 0) ? 1 : -1 ) ;
162 int y_dir = ( (delta_y > 0) ? 1 : -1 ) ;
167 if(delta_x >= delta_y)
171 error_max_ = delta_x - delta_y;
177 error_minus_ = -(delta_x * 2);
178 error_plus_ = (delta_y * 2);
182 error_max_ = delta_x - (delta_y * 2);
188 error_minus_ = (delta_y - delta_x) * 2;
189 error_plus_ = (delta_y * 2);
196 error_max_ = delta_y - delta_x;
202 error_minus_ = -(delta_y * 2);
203 error_plus_ = (delta_x * 2);
207 error_max_ = delta_y - (delta_x * 2);
213 error_minus_ = (delta_x - delta_y) * 2;
214 error_plus_ = (delta_x * 2);
218 index_minus_ = x_minus_ + y_minus_ * width_;
219 index_plus_ = x_plus_ + y_plus_ * width_;
226 if (error_ >= error_max_ )
230 error_ += error_minus_;
231 index_ += index_minus_;
237 error_ += error_plus_;
238 index_ += index_plus_;
260 return (x_ != x_end_ || y_ != y_end_);
270 index_ = x_ * width_ + y_;
275 #endif // __PCL_LINE_ITERATOR__