Fix waveform graph drifting on zoom changes
Fix waveform graph drifting on zoom changes

The waveform graph had a tendency of seemingly randomly drifting back
and forth on zoom changes. This was due to an overlooked shortcoming in
the point generation algorithm, which resulted in floating-point errors.

The root cause of that was a for-loop in the point-generating routine.
The fractional index `i` was kept to determine the neighbourhood from
which to sample the next generated point. However, it was being
incremented in each iteration of said for-loop by
`pointsPerGeneratedPoint`. At larger zoom levels this could result in
accumulating floating-point precision errors, causing the visible
jitters back and forth.

Resolve by keeping two indices; one fractional for the sampling
neighbourhood, and one integral for the point which is being generated.
Instead of incrementing by `pointsPerGeneratedPoint`, multiplication is
used to avoid accumulating errors.

ppy/osu-framework,smoogipooo/osu-framework,peppy/osu-framework,ZLima12/osu-framework,smoogipooo/osu-framework,ZLima12/osu-framework,peppy/osu-framework,ppy/osu-framework,ppy/osu-framework,peppy/osu-framework