mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-10-24 01:01:15 -06:00
Fixing dep build script on Windows and removing some warnings. Use bundled igl by default. Not building with the dependency scripts if not explicitly stated. This way, it will stay in Fix the libigl patch to include C source files in header only mode.
54 lines
2.1 KiB
C++
54 lines
2.1 KiB
C++
// This file is part of libigl, a simple c++ geometry processing library.
|
|
//
|
|
// Copyright (C) 2016 Alec Jacobson <alecjacobson@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_UNZIP_CORNERS_H
|
|
#define IGL_UNZIP_CORNERS_H
|
|
#include "igl_inline.h"
|
|
#include <Eigen/Core>
|
|
#include <vector>
|
|
#include <functional>
|
|
|
|
namespace igl
|
|
{
|
|
// UNZIP_CORNERS Given a triangle mesh where corners of each triangle index
|
|
// different matrices of attributes (e.g. read from an OBJ file), unzip the
|
|
// corners into unique efficiently: attributes become properly vertex valued
|
|
// (usually creating greater than #V but less than #F*3 vertices).
|
|
//
|
|
// To pass a list of attributes this function takes an std::vector of
|
|
// std::reference_wrapper of an Eigen::... type. This allows you to use list
|
|
// initializers **without** incurring a copy, but means you'll need to
|
|
// provide the derived type of A as an explicit template parameter:
|
|
//
|
|
// unzip_corners<Eigen::MatrixXi>({F,FTC,FN},U,G,J);
|
|
//
|
|
// Inputs:
|
|
// A #A list of #F by 3 attribute indices, typically {F,FTC,FN}
|
|
// Outputs:
|
|
// U #U by #A list of indices into each attribute for each unique mesh
|
|
// vertex: U(v,a) is the attribute index of vertex v in attribute a.
|
|
// G #F by 3 list of triangle indices into U
|
|
// Example:
|
|
// [V,F,TC,FTC] = readOBJ('~/Downloads/kiwis/kiwi.obj');
|
|
// [U,G] = unzip_corners(cat(3,F,FTC));
|
|
// % display mesh
|
|
// tsurf(G,V(U(:,1),:));
|
|
// % display texture coordinates
|
|
// tsurf(G,TC(U(:,2),:));
|
|
//
|
|
template < typename DerivedA, typename DerivedU, typename DerivedG, typename DerivedJ>
|
|
IGL_INLINE void unzip_corners(
|
|
const std::vector<std::reference_wrapper<DerivedA> > & A,
|
|
Eigen::PlainObjectBase<DerivedU> & U,
|
|
Eigen::PlainObjectBase<DerivedG> & G,
|
|
Eigen::PlainObjectBase<DerivedJ> & J);
|
|
}
|
|
|
|
#ifndef IGL_STATIC_LIBRARY
|
|
# include "unzip_corners.cpp"
|
|
#endif
|
|
#endif
|