计算3D边界框的尺寸

时间:2017-03-28 02:07:26

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

编辑:我正在尝试使用三个向量来计算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));

1 个答案:

答案 0 :(得分:0)

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