Known data: bounding box width W
, height H
, rotation angle Fi
Wanted: coordinates of rotated rectangle vertices.
Unknown source rectangle size: w x h
Bounding box size for this dimension and rotation angle:
H = w * Abs(Sin(Fi)) + h * Abs(Cos(Fi))
W = w * Abs(Cos(Fi)) + h * Abs(Sin(Fi))
denote
as = Abs(Sin(Fi))
cs = Abs(Cos(Fi))
so we can solve linear equation system and get (note singularity for Pi/4
angle)
h = (H * cs - W * as) / (cs^2 - as^2)
w = -(H * as - W * cs) / (cs^2 - as^2)
Vertex coordinates:
XatTopEdge = w * cs (AE at the picture)
YatRightEdge = h * cs (DH)
XatBottomEdge = h * as (BG)
YatLeftEdge = w * as (AF)
Note that with given data we cannot differ between angles Fi
and 90+Fi
but this fact perhaps does not influence on solution (w
and h
will exchange each other too)