怎么求旋转矩形的中心点

怎么求旋转矩形的中心点

已知矩形的旋转后的左上角 x,y, 矩形宽高 w,h, 和旋转角度 rotation, 求旋转后的矩形中心点

这个乍一看, 好像有点无从下手, 但是我们可以换个角度思考

想象一下, 你的这个矩形是从一个端正的矩形绕着左上角旋转过来的, 那么旋转后的矩形中心点不就是这个端正的矩形中心点绕着左上角旋转后的点吗?

现在我们把矩形左上角当坐标原点, 则其"原始"中心坐标(dx, dy)(w/2, h/2)

其旋转后的中心点坐标为 (dx * Math.cos(radian) - dy * Math.sin(radian), dx * Math.sin(radian) + dy * Math.cos(radian))

现在我们再把坐标系偏移回来, 横偏移量就是 x, 纵偏移量就是 y

把我们计算出来的中心点坐标给同步偏移回来, 即把之前所得中心点坐标分别加上 x 和 y, 就得到了旋转后的矩形中心点

最后, 完整代码如下

tsx 复制代码
function getRotatedRectCenter(
  x: number,
  y: number,
  w: number,
  h: number,
  angle: number
) {
  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,
  }
}
相关推荐
IT_陈寒3 分钟前
Redis性能提升30%的秘密:5个被低估的高级命令实战解析
前端·人工智能·后端
excel25 分钟前
全面解析 JavaScript 内置 Symbol 方法(含示例)
前端
excel27 分钟前
一文搞懂 Vue 的双向绑定
前端
卡布叻_星星5 小时前
前端JavaScript笔记之父子组件数据传递,watch用法之对象形式监听器的核心handler函数
前端·javascript·笔记
开发加微信:hedian1166 小时前
短剧小程序开发全攻略:从技术选型到核心实现(前端+后端+运营干货)
前端·微信·小程序
YCOSA20259 小时前
ISO 雨晨 26200.6588 Windows 11 企业版 LTSC 25H2 自用 edge 140.0.3485.81
前端·windows·edge
小白呀白9 小时前
【uni-app】树形结构数据选择框
前端·javascript·uni-app
吃饺子不吃馅9 小时前
深感一事无成,还是踏踏实实做点东西吧
前端·svg·图形学
90后的晨仔10 小时前
Mac 上配置多个 Gitee 账号的完整教程
前端·后端
少年阿闯~~10 小时前
CSS——实现盒子在页面居中
前端·css·html