当前位置: 首页>>代码示例>>C++>>正文


C++ box2d::intersects方法代码示例

本文整理汇总了C++中box2d::intersects方法的典型用法代码示例。如果您正苦于以下问题:C++ box2d::intersects方法的具体用法?C++ box2d::intersects怎么用?C++ box2d::intersects使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在box2d的用法示例。


在下文中一共展示了box2d::intersects方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: query

 const_iterator query(const box2d<double>& box)
 {
     if (box.intersects(info_.envelope()))
     {
         return begin();
     }
     return end();
 }
开发者ID:ParveenArora,项目名称:mapnik,代码行数:8,代码来源:raster_featureset.hpp

示例2: query_node

 void query_node(box2d<double> const& box, result_t & result, node * node_) const
 {
     if (node_)
     {
         box2d<double> const& node_extent = node_->extent();
         if (box.intersects(node_extent))
         {
             for (auto & n : *node_)
             {
                 result.push_back(std::ref(n));
             }
             for (int k = 0; k < 4; ++k)
             {
                 query_node(box,result,node_->children_[k]);
             }
         }
     }
 }
开发者ID:gischen,项目名称:mapnik,代码行数:18,代码来源:quad_tree.hpp

示例3: query_node

 void query_node(box2d<double> const& box, result_t & result, node * node_) const
 {
     if (node_)
     {
         box2d<double> const& node_extent = node_->extent();
         if (box.intersects(node_extent))
         {
             node_data_iterator i=node_->begin();
             node_data_iterator end=node_->end();
             while ( i!=end)
             {
                 result.push_back(&(*i));
                 ++i;
             }
             for (int k = 0; k < 4; ++k)
             {
                 query_node(box,result,node_->children_[k]);
             }
         }
     }
 }
开发者ID:Blaxxun,项目名称:mapnik,代码行数:21,代码来源:quad_tree.hpp

示例4: pass

 bool pass(const box2d<double>& extent) const
 {
     return extent.intersects(box_);
 }
开发者ID:ParveenArora,项目名称:mapnik,代码行数:4,代码来源:geom_util.hpp

示例5: prj_trans

void feature_style_processor<Processor>::prepare_layer(layer_rendering_material & mat,
                                                       feature_style_context_map & ctx_map,
                                                       Processor & p,
                                                       double scale,
                                                       double scale_denom,
                                                       unsigned width,
                                                       unsigned height,
                                                       box2d<double> const& extent,
                                                       int buffer_size,
                                                       std::set<std::string>& names)
{
    layer const& lay = mat.lay_;

    std::vector<std::string> const& style_names = lay.styles();

    std::size_t num_styles = style_names.size();
    if (num_styles == 0)
    {
        MAPNIK_LOG_DEBUG(feature_style_processor)
            << "feature_style_processor: No style for layer=" << lay.name();
        return;
    }

    mapnik::datasource_ptr ds = lay.datasource();
    if (!ds)
    {
        MAPNIK_LOG_DEBUG(feature_style_processor)
            << "feature_style_processor: No datasource for layer=" << lay.name();
        return;
    }

    processor_context_ptr current_ctx = ds->get_context(ctx_map);
    proj_transform prj_trans(mat.proj0_,mat.proj1_);

    box2d<double> query_ext = extent; // unbuffered
    box2d<double> buffered_query_ext(query_ext);  // buffered

    double buffer_padding = 2.0 * scale;
    boost::optional<int> layer_buffer_size = lay.buffer_size();
    if (layer_buffer_size) // if layer overrides buffer size, use this value to compute buffered extent
    {
        buffer_padding *= *layer_buffer_size;
    }
    else
    {
        buffer_padding *= buffer_size;
    }
    buffered_query_ext.width(query_ext.width() + buffer_padding);
    buffered_query_ext.height(query_ext.height() + buffer_padding);

    // clip buffered extent by maximum extent, if supplied
    boost::optional<box2d<double> > const& maximum_extent = m_.maximum_extent();
    if (maximum_extent)
    {
        buffered_query_ext.clip(*maximum_extent);
    }

    box2d<double> layer_ext = lay.envelope();
    const box2d<double> buffered_query_ext_map_srs = buffered_query_ext;
    bool fw_success = false;
    bool early_return = false;

    // first, try intersection of map extent forward projected into layer srs
    if (prj_trans.forward(buffered_query_ext, PROJ_ENVELOPE_POINTS) && buffered_query_ext.intersects(layer_ext))
    {
        fw_success = true;
        layer_ext.clip(buffered_query_ext);
    }
    // if no intersection and projections are also equal, early return
    else if (prj_trans.equal())
    {
        early_return = true;
    }
    // next try intersection of layer extent back projected into map srs
    else if (prj_trans.backward(layer_ext, PROJ_ENVELOPE_POINTS) && buffered_query_ext_map_srs.intersects(layer_ext))
    {
        layer_ext.clip(buffered_query_ext_map_srs);
        // forward project layer extent back into native projection
        if (! prj_trans.forward(layer_ext, PROJ_ENVELOPE_POINTS))
        {
            MAPNIK_LOG_ERROR(feature_style_processor)
                << "feature_style_processor: Layer=" << lay.name()
                << " extent=" << layer_ext << " in map projection "
                << " did not reproject properly back to layer projection";
        }
    }
    else
    {
        // if no intersection then nothing to do for layer
        early_return = true;
    }

    std::vector<feature_type_style const*> & active_styles = mat.active_styles_;

    if (early_return)
    {
        // check for styles needing compositing operations applied
        // https://github.com/mapnik/mapnik/issues/1477
        for (std::string const& style_name : style_names)
        {
//.........这里部分代码省略.........
开发者ID:CartoDB,项目名称:mapnik,代码行数:101,代码来源:feature_style_processor_impl.hpp


注:本文中的box2d::intersects方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。