【问题标题】:Calculation of dimensions for a 3D bounding Box计算 3D 边界框的尺寸
【发布时间】:2017-08-20 22:20:23
【问题描述】:

编辑:我正在尝试使用三个向量来计算 3D 边界框的尺寸,这些向量包含表示我的框的 3 个坐标的元素,即 Cluster_x、Cluster_y 和 Cluster_z。我用于查找中心值的算法如下。我不知道我哪里错了。

            tFloat32 x_max = *std::max_element(Cluster_x.begin(), Cluster_x.end());
            tFloat32 x_min = *std::min_element(Cluster_x.begin(), Cluster_x.end());

            tFloat32 y_max = *std::max_element(Cluster_y.begin(), Cluster_y.end());
            tFloat32 y_min = *std::min_element(Cluster_y.begin(), Cluster_y.end());

            tFloat32 z_max = *std::max_element(Cluster_z.begin(), Cluster_z.end());
            tFloat32 z_min = *std::min_element(Cluster_z.begin(), Cluster_z.end());


                //Center//

            tFloat32 c_x = (x_max - x_min) / 2;
            tFloat32 c_y = (y_max - y_min) / 2;
            tFloat32 c_z = (z_max - z_min) / 2;

            cetuc::BoundingBox NewBox(cetuc::Point3D(c_x,c_y,c_z), cetuc::Point3D(8, 8, 10), cetuc::Point3D(0, 0, 0));

【问题讨论】:

  • 如果您使用 3 个向量来描述一个框,我只能假设其中一个已经是它的中心。
  • 您使用 C 还是 C++ 工作?做好决定!向量末端的物体是否同样重?这将影响质心计算。您将需要了解轮换的含义。
  • 如果只有三个向量来描述盒子,那么其中一个向量必须是对角线,并且该向量的中点是中心。
  • 这三个向量包含代表一个对象的点云簇中所有点的维度。所以这三个向量具有单独向量中所有点的所有 x、y 和 z 值。我正在研究 C++,但我添加了 C,因为它可以覆盖更多人。我对计算盒子尺寸背后的基本逻辑感到困惑。我的教授也可以 0 旋转。但程度是我迷失的地方。
  • @Brandon 盒子中心的 x、y 和 z 坐标是通过找到相应向量的中心来计算的。但是,为了找到范围,我是简单地使用向量的最大和最小元素找到边缘的长度,还是应该计算从中心到角落或从中心到盒子表面中心的距离。这是我的主要困惑。

标签: c++ visual-studio vector bounding-box point-clouds


【解决方案1】:

要使std::max_element 工作,您必须为元素类型tFloat32 提供operator< 重载或用于比较的谓词。在你的情况下,最好使用std::minmax_element

【讨论】:

  • 我也一直在努力。我希望用minimax解决它。我基本上需要最小值和最大值来计算封闭边界框的中心和范围。知道我应该在这个范围内使用什么公式吗?我相信我已经用 (max-min)/2 计算出 x、y 和 z 的中心。
  • minmax_element 是返回所述元素的值还是仅返回位置?您在评论中提到的链接只有一个提到该职位的示例。
  • @DamienArt1234 它返回一对迭代器。你可以从中找到位置和价值。
  • 我尝试使用极小极大值,但我收到错误消息说它需要 3 个参数,但只提供了 2 个。我用错了吗?
  • 我当前创建边界框和分离簇的算法是这样的。请告诉我我在哪里犯了错误。我相信它要么循环错误,要么计算最小值和最大值:
猜你喜欢
  • 1970-01-01
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多