2013-08-09 2 views
1

Я создаю пользовательское интерактивное колесо с использованием javascript и html5 холста, которые, когда swiped будут вращать колесо. Однако я пытаюсь работать над «силой/силой» салфеткиРассчитать мощность/силу прокрутки

Что такое хорошая формула для расчета этого?

+0

Почему бы не измерить _distance^2 = x^2 + y^2_, где _x, y_ - движение «курсора» в определенное (небольшое) время во время вашего салфетки? –

+0

Я использую dist = Math.sqrt (Math.pow ((_x1 - _x2), 2) + Math.pow ((_ y1 - _y2), 2)); speed = dist/(gettime() - время); // начало салфетки - конец времени прокрутки мощность = Math.abs ((1,5 * угол) * скорость); // Я не уверен в этой части targetAngle = (мощность * 360); // оценочное количество оборотов – Kendall

+0

Я получаю странное чтение иногда, когда я нахожусь в круговом движении ... – Kendall

ответ

1

Я думаю, что это может быть решение:

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); 

Остальная часть вашего уравнения для скорости является правильным, просто используйте разность углов вместо расстояния.

+0

hmmm Я использовал это 'angle = function direction (_x1, _y1, _x2, _y2) {return Math.atan2 (_y2 - _y1, _x2 - _x1) * RAD_2_DEG; } 'для получения углов из центра, но когда i ' speed = end.angle - start.angle/((end.time - start.time)/1000); \t \t \t \t \t, если (Math.abs (end.angle - start.angle)> 180) скорость = скорость * -1; 'Направление спина довольно облажался в зависимости от того, как я салфетки P.S. я вычисляю в градусах, а затем конвертирую в радианы при рисовании на холст. – Kendall

+0

Другими словами, он идет против часовой стрелки, мне нужно, чтобы он по часовой стрелке – Kendall

+0

Можете ли вы поместить то, что у вас есть в jsfiddle, и я посмотрю? – michaeltheory

Смежные вопросы