2013-05-10 2 views

ответ

0

Перевести так, чтобы центр прямоугольника (0,0). Просмотрите каждую точку как не часть прямоугольника, а как часть круга, и отрезок линии от центра прямоугольника как центр этого круга. Тогда вы решаете другую проблему: если задать круг в начале координат и точку на этом круге (или сегменте линии), каковы точки (угол) градусов, вращающихся вокруг круга. Я оставлю поиск подходящего алгоритма для этого:

2

Примените rotation matrix к вершинам.

Например, если начало координат находится в центре прямоугольника, а координаты вершины задаются значениями v.x и v.y. Тогда новые координаты этой вершины задаются:

v_new.x=v.x*cos(angle)-v.y*sin(angle) 
v_new.y=v.x*sin(angle)+v.y*cos(angle) 

(при условии, counter clockwise rotation)

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