Я думаю, что это может быть решение:
var deltaX = CENTER_OF_CANVAS_WIDTH - Mouse.x;
var deltaY = CENTER_OF_CANVAS_HEIGHT - Mouse.y;
var angle = Math.atan2(deltaY, deltaX);
angle
даст вам угол в радианах оси Х вектора, созданного между этими двумя точками. Короче говоря, это позволит вам тянуться круговым движением и дать вам ожидаемые результаты.
Вращение в полотне в радианах, так что это должно быть хорошо идти, но если вам нужно, чтобы преобразовать это в градусах вы можете сделать:
var degrees = angle * (180/Math.PI);
Остальная часть вашего уравнения для скорости является правильным, просто используйте разность углов вместо расстояния.
Почему бы не измерить _distance^2 = x^2 + y^2_, где _x, y_ - движение «курсора» в определенное (небольшое) время во время вашего салфетки? –
Я использую dist = Math.sqrt (Math.pow ((_x1 - _x2), 2) + Math.pow ((_ y1 - _y2), 2)); speed = dist/(gettime() - время); // начало салфетки - конец времени прокрутки мощность = Math.abs ((1,5 * угол) * скорость); // Я не уверен в этой части targetAngle = (мощность * 360); // оценочное количество оборотов – Kendall
Я получаю странное чтение иногда, когда я нахожусь в круговом движении ... – Kendall