Узнать координаты центра прямоугольника после поворота и смещения
У меня есть координаты прямоугольника ABCD и его угол поворота. у меня есть координата клика - точка g. По клику рисуется зеленый прямоугольник с известными координатами и добавляется к черному прямоугольнику левым верхним углом - точкой g. Мне нужно добиться прилегания зеленого прямоугольника к черному, как это нарисовано голубым. Позиционирование прямоугольника происходит через его центр - в зеленом это точка P.
вопрос - как найти точку X?
Спасибо за подсказки, советы и направления, в какую сторону копать)
Ответы (2 шт):
В векторном виде:
x = g + (d-a) / |d-a| * половину высоты голубого
(из описания неясно, как задаются размеры голубого и зеленого, возможно, нужная величина - (g.y-p.y) )
Сначала надо найти точку отсчета. Пусть она будет по середине между точками C и D
ox = cx + (dx - cx) / 2
oy = cy + (dy - cy) / 2
Дальше нужно получить угол поворота относительно прямоугольника
ang = Math.atan2(dx - cx, dy - cy) + Math.PI / 2
Здесь + Math.PI / 2 - это прямой угол от наклоненной линии. Там он либо + либо -. Попробовать оба варианта.
Дальше посчитаем полу-высоту прямоугольника:
radix = (gy - my) / 2
И посчитаем саму точку центра прямоугольника:
centerX = ox + radix * Math.sin(ang)
centerY = oy - radix * Math.cos(ang)
Если не запутался нигде, то вроде все верно