You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算绕中心旋转的矩形的包围盒并适配拐角原点的现有方案

你当前代码的问题出在computeAABBCenter函数的坐标基准不匹配:函数内部逻辑默认传入的x、y是矩形中心点坐标,但你调用时传入的是矩形左上角的坐标,最终导致包围盒计算偏移。

修正方案

下面是优化后的实现,不需要计算四个顶点再取最值,运算量更低,性能优于顶点枚举方案,完全满足你的性能需求:

function computeAABBCenter(x, y, w, h, theta) {
  // 从传入的左上角坐标计算矩形实际中心点
  const centerX = x + w / 2;
  const centerY = y + h / 2;
  const halfWidth = w / 2;
  const halfHeight = h / 2;

  const absCos = Math.abs(Math.cos(theta));
  const absSin = Math.abs(Math.sin(theta));

  // 利用投影原理直接计算旋转后包围盒的半宽半高
  const bboxHalfWidth = halfWidth * absCos + halfHeight * absSin;
  const bboxHalfHeight = halfWidth * absSin + halfHeight * absCos;

  return {
    x1: centerX - bboxHalfWidth,
    y1: centerY - bboxHalfHeight,
    x2: centerX + bboxHalfWidth,
    y2: centerY + bboxHalfHeight,
  };
}

直接替换你代码中的computeAABBCenter函数即可得到正确的包围盒结果。

内容的提问来源于stack exchange,提问作者Ryan Peschel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:54:00