Point Cloud Library (PCL)
1.7.0
Main Page
Modules
Namespaces
Classes
common
include
pcl
common
intersections.h
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Copyright (c) 2010, Willow Garage, Inc.
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
*
11
* * Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* * Redistributions in binary form must reproduce the above
14
* copyright notice, this list of conditions and the following
15
* disclaimer in the documentation and/or other materials provided
16
* with the distribution.
17
* * Neither the name of the copyright holder(s) nor the names of its
18
* contributors may be used to endorse or promote products derived
19
* from this software without specific prior written permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
* POSSIBILITY OF SUCH DAMAGE.
33
*
34
* $Id$
35
*
36
*/
37
#ifndef PCL_INTERSECTIONS_H_
38
#define PCL_INTERSECTIONS_H_
39
40
#include <pcl/ModelCoefficients.h>
41
#include <pcl/common/common.h>
42
#include <pcl/common/distances.h>
43
44
/**
45
* \file pcl/common/intersections.h
46
* Define line with line intersection functions
47
* \ingroup common
48
*/
49
50
/*@{*/
51
namespace
pcl
52
{
53
/** \brief Get the intersection of a two 3D lines in space as a 3D point
54
* \param[in] line_a the coefficients of the first line (point, direction)
55
* \param[in] line_b the coefficients of the second line (point, direction)
56
* \param[out] point holder for the computed 3D point
57
* \param[in] sqr_eps maximum allowable squared distance to the true solution
58
* \ingroup common
59
*/
60
PCL_EXPORTS
bool
61
lineWithLineIntersection
(
const
Eigen::VectorXf &line_a,
62
const
Eigen::VectorXf &line_b,
63
Eigen::Vector4f &point,
double
sqr_eps = 1e-4);
64
65
/** \brief Get the intersection of a two 3D lines in space as a 3D point
66
* \param[in] line_a the coefficients of the first line (point, direction)
67
* \param[in] line_b the coefficients of the second line (point, direction)
68
* \param[out] point holder for the computed 3D point
69
* \param[in] sqr_eps maximum allowable squared distance to the true solution
70
* \ingroup common
71
*/
72
PCL_EXPORTS
bool
73
lineWithLineIntersection
(
const
pcl::ModelCoefficients
&line_a,
74
const
pcl::ModelCoefficients
&line_b,
75
Eigen::Vector4f &point,
double
sqr_eps = 1e-4);
76
77
/** \brief Determine the line of intersection of two non-parallel planes using lagrange multipliers
78
* \note Described in: "Intersection of Two Planes, John Krumm, Microsoft Research, Redmond, WA, USA"
79
* \param[in] plane_a coefficients of plane A and plane B in the form ax + by + cz + d = 0
80
* \param[out] plane_b coefficients of line where line.tail<3>() = direction vector and
81
* line.head<3>() the point on the line clossest to (0, 0, 0)
82
* \return true if succeeded/planes aren't parallel
83
*/
84
PCL_EXPORTS
bool
85
planeWithPlaneIntersection
(
const
Eigen::Vector4f &plane_a,
86
const
Eigen::Vector4f &fplane_b,
87
Eigen::VectorXf &line,
88
double
angular_tolerance = 0.1);
89
}
90
/*@}*/
91
#endif //#ifndef PCL_INTERSECTIONS_H_
92