Если ось star
имеет вращение phi
относительно оси OX, то вектор направления для нее равен
sx, sy = cos(phi), sin(phi) //don't forget about radians and degrees
перпендикулярный (bow
направление) вектор равен
bx, by = -sy, sx
Итак, самая верхняя вершина на картинке имеет координаты
tx = px + star * sx + bow * bx
ty = py + star * sy + bow * by
Нижняя вершина:
ux = px - port * sx - stern * bx
uy = py - port * sy - stern * by
Центр прямоугольника находится в середине этих вершин
cx = px + sx * (star - port) / 2 + bx * (bow - stern) / 2
cy = py + sy * (star - port) / 2 + by * (bow - stern) / 2
И возвращение b*
переменные в sx, sy
: и с учетом желаемого направления угла:
cx = px + sx * (star - port) / 2 + sy * (bow - stern) / 2
cy = py - sy * (star - port) / 2 + sx * (bow - stern) / 2