C ++将bo数据提升为float数组

时间:2016-07-13 11:11:43

标签: c++ arrays boost boost-geometry

如何将geometry::pointgeometry::box等结构之间的数据传输到简单的浮点数组?

我发现的唯一方法是get方法。对于每次转移,我需要使用它吗?

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point.hpp>
#include <boost/geometry/geometries/box.hpp>
#include <iostream>
#include <vector>

namespace bg = boost::geometry;
namespace bgi = boost::geometry::index;

typedef bg::model::point<float, 2, bg::cs::cartesian> point;
typedef bg::model::box<point> box;

int main()
{
    box B(point(10,10), point(20,20));
    float VertexQuad[4][2];

    VertexQuad[0][0] = bg::get<bg::min_corner, 0>(B);
    VertexQuad[0][1] = bg::get<bg::min_corner, 1>(B);
    VertexQuad[1][0] = bg::get<bg::min_corner, 0>(B);
    VertexQuad[1][1] = bg::get<bg::max_corner, 1>(B);
    VertexQuad[2][0] = bg::get<bg::max_corner, 0>(B);
    VertexQuad[2][1] = bg::get<bg::max_corner, 1>(B);
    VertexQuad[3][0] = bg::get<bg::max_corner, 0>(B);
    VertexQuad[3][1] = bg::get<bg::min_corner, 1>(B);

    return 0;
}

1 个答案:

答案 0 :(得分:0)

你这样做的方式并没有错,但是你可以通过创建一个结构来简化这个过程,其中包含box变量的构造函数:

struct VertexQuad
{
    float array[2][2];

    VertexQuad(box B)
    {
      array[0][0] = bg::get<bg::min_corner, 0>(B);
      array[0][1] = bg::get<bg::min_corner, 1>(B);
      array[1][0] = bg::get<bg::max_corner, 0>(B);
      array[1][1] = bg::get<bg::max_corner, 1>(B);
    };
};

这样,每次要将值与数组一起使用时,都不必分配值。

编辑:box只有2个角(2 point s) - &gt;您的数组大小应为float array[2][2],您可以删除其他分配。