Я согласен с Harviz - проблема не решена.Это должно быть решено на уровне операционной системы путем записи движений мыши в приоритетном потоке, но ни одна из известных мне операционных систем этого не делает.Однако разработчик приложения также может обойти это ограничение операционной системы, интерполируя лучше, чем линейный.
Поскольку события перемещения мыши не всегда происходят достаточно быстро, линейной интерполяции не всегда достаточно.
Я немного поэкспериментировал с идеей сплайна, выдвинутой Rocketmagnet.
Вместо того, чтобы провести линию между двумя точками A и D, посмотрите на точку P, предшествующую A, и используйте кубический сплайн со следующими контрольными точками.B = A + v 'и C = D - w', где
v = A - P,
w = D - A,
w' = w / 4 and
v' = v * |w| / |v| / 4.
Это означает, что мы попадаем во вторую точку с тем же углом, что и при интерполяции линии, но выходим из начальной точки впод тем же углом вошел предыдущий сегмент, делая край гладким.Мы используем длину сегмента для обоих расстояний контрольной точки, чтобы размер изгиба соответствовал его пропорции.
На следующем рисунке показан результат с очень небольшим числом точек данных (обозначено серым).
Последовательность начинается слева вверху и заканчивается посередине.
Здесь все еще есть некоторый уровень беспокойства, который можно ослабить, если использовать как предыдущий, так иСледующая точка, чтобы отрегулировать для обоих углов, но это также означало бы нарисовать одну точку меньше, чем у того, кто получил.Я нахожу этот результат уже удовлетворительным, поэтому я не пытался.