1 /****************************************************************************** 2 * Author: Laurent Kneip * 3 * Contact: kneip.laurent@gmail.com * 4 * License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. * 5 * * 6 * Redistribution and use in source and binary forms, with or without * 7 * modification, are permitted provided that the following conditions * 8 * are met: * 9 * * Redistributions of source code must retain the above copyright * 10 * notice, this list of conditions and the following disclaimer. * 11 * * Redistributions in binary form must reproduce the above copyright * 12 * notice, this list of conditions and the following disclaimer in the * 13 * documentation and/or other materials provided with the distribution. * 14 * * Neither the name of ANU nor the names of its contributors may be * 15 * used to endorse or promote products derived from this software without * 16 * specific prior written permission. * 17 * * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"* 19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * 20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * 21 * ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE * 22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * 24 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * 25 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * 28 * SUCH DAMAGE. * 29 ******************************************************************************/ 30 31 /** 32 * \file triangulation/methods.hpp 33 * \brief Some triangulation methods. Not exhaustive. 34 */ 35 36 #ifndef OPENGV_TRIANGULATION_METHODS_HPP_ 37 #define OPENGV_TRIANGULATION_METHODS_HPP_ 38 39 #include <stdlib.h> 40 #include <vector> 41 #include <opengv/types.hpp> 42 #include <opengv/relative_pose/RelativeAdapterBase.hpp> 43 44 /** 45 * \brief The namespace of this library. 46 */ 47 namespace opengv 48 { 49 /** 50 * \brief The namespace for the triangulation methods. 51 */ 52 namespace triangulation 53 { 54 55 /** 56 * \brief Compute the position of a 3D point seen from two viewpoints. Linear 57 * Method. 58 * 59 * \param[in] adapter Visitor holding bearing-vector correspondences, plus the 60 * relative transformation. 61 * \param[in] index The index of the correspondence being triangulated. 62 * \return The 3D point expressed in the first viewpoint. 63 */ 64 point_t triangulate( 65 const relative_pose::RelativeAdapterBase & adapter, size_t index ); 66 67 /** 68 * \brief Compute the position of a 3D point seen from two viewpoints. Fast 69 * non-linear approximation (closed-form). 70 * 71 * \param[in] adapter Visitor holding bearing-vector correspondences, plus the 72 * relative transformation. 73 * \param[in] index The index of the correspondence being triangulated. 74 * \return The 3D point expressed in the first viewpoint. 75 */ 76 point_t triangulate2( 77 const relative_pose::RelativeAdapterBase & adapter, size_t index ); 78 79 } 80 81 } 82 83 #endif /* OPENGV_TRIANGULATION_METHODS_HPP_ */ 84