So you're given this weird case:
You know the top-left corner
(x, y)of a rotated rectangle, along with its widthw, heighth, and rotation anglerotation.
The question is: how do you find the center of that rotated rectangle?
At first glance, this looks like a total brain-buster.
But here's a little trick:
Think backwards.
🤯 Flip Your Perspective
Imagine the rectangle before it was rotated.
It was perfectly upright, right?
So you had a regular rectangle sitting at (x, y), and then it got rotated around its top-left corner by some angle.
Now ask yourself:
Where would the center of the original rectangle have moved to after that rotation?
Exactly — if we can figure out where the original center ended up, that's our answer.
📐 So What's the Original Center?
If we treat (x, y) as the origin (0,0), then the upright rectangle’s center is just:
(dx, dy) = (w / 2, h / 2)
Now we rotate that point around the origin using basic 2D rotation formulas:
rotatedX = dx * cos(θ) - dy * sin(θ)
rotatedY = dx * sin(θ) + dy * cos(θ)
Then we shift everything back by adding x and y to those results.
✅ Final Formula
So the rotated center becomes:
{
  x: x + dx * cos(θ) - dy * sin(θ),
  y: y + dx * sin(θ) + dy * cos(θ)
}
Where θ is the angle in radians.
🧪 Full Working Code
function getRotatedRectCenter(
  x: number,
  y: number,
  w: number,
  h: number,
  angle: number // in degrees
) {
  const dx = w / 2
  const dy = h / 2
  const radian = (angle * Math.PI) / 180
  const cos = Math.cos(radian)
  const sin = Math.sin(radian)
  return {
    x: x + dx * cos - dy * sin,
    y: y + dx * sin + dy * cos,
  }
}
🔚 TL;DR
- The rectangle was rotated around its top-left corner.
 - So rotate the center of the upright rectangle using basic 2D rotation math.
 - Then just shift it back by 
(x, y). 
Clean, neat, and totally doable 🧼
              



    
Top comments (0)