Autoware.Auto
rotating_calipers.hpp File Reference

This file implements the rotating calipers algorithm for minimum oriented bounding boxes. More...

#include <geometry/convex_hull.hpp>
#include <geometry/common_2d.hpp>
#include <geometry/bounding_box/bounding_box_common.hpp>
#include <algorithm>
#include <cstring>
#include <limits>
#include <list>
Include dependency graph for rotating_calipers.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 autoware
 This file defines the lanelet2_map_provider_node class.
 
 autoware::common
 
 autoware::common::geometry
 
 autoware::common::geometry::bounding_box
 Functions and types for generating enclosing bounding boxes around a set of points.
 
 autoware::common::geometry::bounding_box::details
 

Functions

template<typename PointT >
uint32_t autoware::common::geometry::bounding_box::details::update_angles (const Point4< PointT > &edges, Point4< PointT > &directions)
 Find which (next) edge has smallest angle delta to directions, rotate directions. More...
 
template<typename IT , typename PointT >
void autoware::common::geometry::bounding_box::details::init_edges (const IT begin, const IT end, const Point4< IT > &support, Point4< PointT > &edges)
 Given support points i, find direction of edge: e = P[i+1] - P[i]. More...
 
template<typename IT >
void autoware::common::geometry::bounding_box::details::init_bbox (const IT begin, const IT end, Point4< IT > &support)
 Scan through list to find support points for bounding box oriented in direction of u = P[1] - P[0]. More...
 
template<typename IT , typename MetricF >
BoundingBox autoware::common::geometry::bounding_box::details::rotating_calipers_impl (const IT begin, const IT end, const MetricF metric_fn)
 Compute the minimum bounding box for a convex hull using the rotating calipers method. This function may possibly also be used for computing the width of a convex hull, as it uses the external supports of a single convex hull. More...
 
template<typename IT >
BoundingBox autoware::common::geometry::bounding_box::minimum_area_bounding_box (const IT begin, const IT end)
 Compute the minimum area bounding box given a convex hull of points. This function is exposed in case a user might already have a convex hull via other methods. More...
 
template<typename IT >
BoundingBox autoware::common::geometry::bounding_box::minimum_perimeter_bounding_box (const IT begin, const IT end)
 Compute the minimum perimeter bounding box given a convex hull of points This function is exposed in case a user might already have a convex hull via other methods. More...
 
template<typename PointT >
BoundingBox autoware::common::geometry::bounding_box::minimum_area_bounding_box (std::list< PointT > &list)
 Compute the minimum area bounding box given an unstructured list of points. Only a list is supported as it enables the convex hull to be formed in O(n log n) time and without memory allocation. More...
 
template<typename PointT >
BoundingBox autoware::common::geometry::bounding_box::minimum_perimeter_bounding_box (std::list< PointT > &list)
 Compute the minimum perimeter bounding box given an unstructured list of points Only a list is supported as it enables the convex hull to be formed in O(n log n) time and without memory allocation. More...
 

Detailed Description

This file implements the rotating calipers algorithm for minimum oriented bounding boxes.