2010-12-16 6 views
5

Как бы я получил 4 точки, повернутые в определенной степени вокруг указателя, чтобы сформировать прямоугольник? Я могу вращать точку вокруг точки, но я не могу ее компенсировать, чтобы создать прямоугольник, который не искажен.Поворот прямоугольника вокруг точки

+2

вы пытались сделать это до сих пор? какой-то код? спасибо – Trufa 2010-12-16 22:26:40

+3

Перевести свои четыре точки, чтобы вы обрабатывали указатель как центр, делали поворот с помощью стандартного метода матрицы вращения, а затем переводили точки назад. [Объяснение здесь] (http://www.euclideanspace.com/maths/geometry/affine/aroundPoint/index.htm) – Michal 2010-12-16 23:45:03

ответ

23

Если вы можете вращать точку вокруг точки, то ее нужно легко поворачивать, вы просто вращаете 4 точки.

Вот функция JS для вращения вокруг некоторой точки происхождения:

function rotate_point(pointX, pointY, originX, originY, angle) { 
    angle = angle * Math.PI/180.0; 
    return { 
     x: Math.cos(angle) * (pointX-originX) - Math.sin(angle) * (pointY-originY) + originX, 
     y: Math.sin(angle) * (pointX-originX) + Math.cos(angle) * (pointY-originY) + originY 
    }; 
} 

И тогда вы можете сделать это в каждой точке. Вот пример: http://jsfiddle.net/dahousecat/4TtvU/

Изменить угол и ударил бежать, чтобы увидеть результат ...

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