Consider an axis like so:
Now consider an atom placed on the axis at position: double pos;
with 0.0 < pos < 1.0
. The position may be displaced by double dt;
which can be any (+ve/-ve) double thus double newPos = pos + dt;
could possibly not lie within the range 0.0 < newPos < 1.0
.
Is there any way to implement a wrap around eg. if atom leaves on the right side re-insert on the left without resulting to fmod
(which may be too slow for my case)?
I have a feeling there should be a straight-forward way since when dt
is an integer (in the sense that there is no fractional part) the position remains unchanged (with wraparound) ie. adding 0.2 + 1.0
is still 0.2
(or 2.0,3.0...
) and I can extract the fractional part quickly enough using double frac = myDouble - ((long) myDouble);
but anything I try doesn't really work on all cases.
Any ideas on this?