123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- // This file is part of libigl, a simple c++ geometry processing library.
- //
- // Copyright (C) 2013 Daniele Panozzo <daniele.panozzo@gmail.com>
- //
- // This Source Code Form is subject to the terms of the Mozilla Public License
- // v. 2.0. If a copy of the MPL was not distributed with this file, You can
- // obtain one at http://mozilla.org/MPL/2.0/.
- #ifndef IGL_PROJECTMESH_H
- #define IGL_PROJECTMESH_H
- #include <igl/igl_inline.h>
- #include <Eigen/Dense>
- #include <Eigen/Sparse>
- #include <vector>
- namespace igl
- {
- // Project the triangle mesh V_source, F_source onto the triangle mesh
- // V_target,F_target.
- // A ray is casted for every vertex in the normal direction and its opposite.
- //
- // Input:
- // V_source: #Vx3 Vertices of the source mesh
- // F_source: #Fx3 Faces of the source mesh
- // V_target: #V2x3 Vertices of the target mesh
- // F_target: #F2x3 Faces of the target mesh
- //
- // Output:
- // #Vx3 matrix of baricentric coordinate. Each row corresponds to
- // a vertex of the projected mesh and it has the following format:
- // id b1 b2. id is the id of a face of the source mesh. b1 and b2 are
- // the barycentric coordinates wrt the first two edges of the triangle
- // To convert to standard global coordinates, see barycentric2global.h
- template <typename ScalarMatrix, typename IndexMatrix>
- IGL_INLINE ScalarMatrix project_mesh
- (
- const ScalarMatrix & V_source,
- const IndexMatrix & F_source,
- const ScalarMatrix & V_target,
- const IndexMatrix & F_target
- );
- // Project the point cloud V_source onto the triangle mesh
- // V_target,F_target.
- // A ray is casted for every vertex in the direction specified by
- // N_source and its opposite.
- //
- // Input:
- // V_source: #Vx3 Vertices of the source mesh
- // N_source: #Vx3 Normals of the point cloud
- // V_target: #V2x3 Vertices of the target mesh
- // F_target: #F2x3 Faces of the target mesh
- //
- // Output:
- // #Vx3 matrix of baricentric coordinate. Each row corresponds to
- // a vertex of the projected mesh and it has the following format:
- // id b1 b2. id is the id of a face of the source mesh. b1 and b2 are
- // the barycentric coordinates wrt the first two edges of the triangle
- // To convert to standard global coordinates, see barycentric2global.h
- template <typename ScalarMatrix, typename IndexMatrix>
- IGL_INLINE ScalarMatrix project_points_on_mesh
- (
- const ScalarMatrix & V_source,
- const ScalarMatrix & N_source,
- const ScalarMatrix & V_target,
- const IndexMatrix & F_target
- );
- }
- #ifdef IGL_HEADER_ONLY
- # include "project_mesh.cpp"
- #endif
- #endif
|