Affine transformation on a pixel grid I'm implementing affine transformations on images. Currently I'm doing rotation, but general transformation will be added later.

Basically each pixel is mapped by the rotation matrix R:

$\begin{bmatrix} cos(a) &amp; -sin(a) \\ sin(a)  &amp; cos(a) \end{bmatrix} $

The problem is that mapping back does not always come back to a grid point, so I basically rounding it using a brute force approach. What is a better approach (similarly to Bresenham's line drawing algorithm)?
What you need is an interpolation method. 

The method you described is called nearest-neighbor, because you pick the pixel that is nearest to the place you actually wanted.

Other methods include:


bi-linear interpolation (Select 4 nearest points, interpolate by x and y according to distance) (see here)
barycentric interpolation (Select 3 nearest points, interpolate in the system of coordinates of the triangle)
bi-cubic interpolation (see here)