Ejemplo n.º 1
0
        optional<Dimensions> getDimensions() const
        {
            if (polylines.empty())
                return optional<Dimensions>();

            optional<Point> min = getMinPoint(polylines[0].points);
            optional<Point> max = getMaxPoint(polylines[0].points);
            for (unsigned i = 0; i < polylines.size(); ++i) {
                if (getMinPoint(polylines[i].points)->x < min->x)
                    min->x = getMinPoint(polylines[i].points)->x;
                if (getMinPoint(polylines[i].points)->y < min->y)
                    min->y = getMinPoint(polylines[i].points)->y;
                if (getMaxPoint(polylines[i].points)->x > max->x)
                    max->x = getMaxPoint(polylines[i].points)->x;
                if (getMaxPoint(polylines[i].points)->y > max->y)
                    max->y = getMaxPoint(polylines[i].points)->y;
            }

            return optional<Dimensions>(Dimensions(max->x - min->x, max->y - min->y));
        }
Ejemplo n.º 2
0
std::vector<Geo::Point> SquareObstacle::getVertexList() const
{
    std::vector<Geo::Point> vertex_list;

    Geo::Point min = getMinPoint();
    Geo::Point max = getMaxPoint();

    // 各辺の生成に利用するため、頂点は隣り合う順で追加する
    vertex_list.push_back( Geo::Point(min.x(), min.y()) );
    vertex_list.push_back( Geo::Point(min.x(), max.y()) );
    vertex_list.push_back( Geo::Point(max.x(), max.y()) );
    vertex_list.push_back( Geo::Point(max.x(), min.y()) );

    return vertex_list;
}