Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
- function line(x0, y0, x1, y1)
- real deltax := x1 - x0
- real deltay := y1 - y0
- real deltaerr := abs(deltay / deltax) // Assume deltax != 0 (line is not vertical),
- // note that this division needs to be done in a way that preserves the fractional part
- real error := 0.0 // No error at start
- int y := y0
- for x from x0 to x1
- plot(x, y)
- error := error + deltaerr
- if error ≥ 0.5 then
- y := y + sign(deltay) * 1
- error := error - 1.0
- */
- // int32_t x0, int32_t y0, int32_t x1, int32_t y1
- float deltax = x1 - x0;
- float deltay = y1 - y0;
- float deltaerr = abs( deltay / deltax );
- float error = 0.0f;
- int32_t y = y0;
- for ( int32_t x = x0; x < x1; ++x )
- {
- PlotPoint( x, y );
- //error = error + deltaerr;
- error += deltaerr;
- if ( error >= 0.5f )
- {
- y += deltay < 0 ? (-1) : 1;
- //error = error - 1.0f;
- error -= 1.0f;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment