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

Eigen库AlignedBox3d两种1.5倍缩放代码结果不一致问题咨询

结论

两段代码的缩放逻辑完全不同,运行结果不一致属于正常现象。

差异原因

第一种实现逻辑

以边界框自身的几何中心为缩放锚点:

  • 先计算得到边界框的中心坐标,再基于半对角线长度放大1.5倍,向中心两侧对称延伸得到新的min、max坐标
  • 缩放后边界框的中心和原边界框中心完全重合,所以会出现负的min坐标,和你得到的第一种输出结果一致。

第二种实现逻辑

以全局坐标原点(0,0,0)为缩放锚点:

  • 你构造的Eigen::Affine变换仅包含UniformScaling(1.5)纯缩放分量,没有平移分量
  • Eigen::AlignedBox::transform方法会直接对边界框的两个顶点(min、max)应用变换,原min点为(0,0,0),缩放后坐标不变,原max点每个分量乘以1.5,得到的就是你看到的第二种输出结果。

修正方案

如果要让第二种实现和第一种实现效果一致,需要构造带平移的缩放变换,将缩放锚点指定为边界框自身中心,代码如下:

Eigen::Vector3d center = bb.center();
Eigen::Transform<double, 3, Eigen::Affine> transform;
transform.setIdentity();
// 变换执行顺序:先将点平移到以bb中心为原点的坐标系 → 执行缩放 → 平移回原全局坐标系
transform.translate(center);
transform.scale(1.5);
transform.translate(-center);
bb.transform(transform);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:24:01