2012-07-04 4 views
1

У кого-нибудь есть функция перевода для позиций x/y после вращения в javascript?javascript вращение перевод функции

, например:

this.mousex = event.clientX - this.el.offsetLeft; 
this.mousey = event.clientY - this.el.offsetTop; 

дает мне позицию мыши, однако мой родительский DIV повернут рентгеновскими градусов, что, конечно, означает, что mousex/мышиный не являются правильными. У javascript есть функция для этого встроенного (не то, что я видел его, но ...)?

благодаря очень

+0

Ну, у него есть 'Math.sin()', 'Math.cos()' и 'Math.tan()', чтобы помочь вам, но математика должна быть выполнена вами. – Matt

+0

черт возьми, мне придется идти по моей школе триггер .. надеялся, что js может добавить простой перевод – Alex

ответ

1

Я только что написал для вас следующее: я проверил его с (1,0,Math.PI/2) и (0,1,Math.PI/2), и он работает.

function rotatePoints(x,y,angle){ 
    var point={}; 
    point.x = x*Math.cos(angle)- y*Math.sin(angle); 
    point.y = x*Math.sin(angle) + y*Math.cos(angle); 
    return point; 
} 

Должно работать, см Rotation Matrix in Wikipedia

Конечно, угол должен быть в радианах. Вы можете преобразовать градусы в радианы, умножив их на Math.PI и разделив их на 180. Угол против часовой стрелки, если вы хотите повернуть по часовой стрелке, чтобы перейти или поменять значение sin на -sin.

1

Предположим, что ваш DIV повернут на t радианах по часовой стрелке. Тогда преобразованные координаты:

х '= соз (т) * х - грех (т) * у

у' = sin (т) * х + соз (т) * у

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