Mine
public text v1 · immutablevoid Ball::snap(double precision)
{
double prev, next;
double x_matissa, y_matissa;
x_matissa = x - floor(x);
y_matissa = y - floor(y);
for (next = 0; next < x_matissa; next += precision)
prev = next;
x = floor(x) + ((x_matissa > (prev + precision / 2)) ? next : prev);
prev = 0;
for (next = 0; next < y_matissa; next += precision)
prev = next;
y = floor(y) + ((y_matissa > (prev + precision / 2)) ? next : prev);
}