mirror of
https://github.com/FULU-Foundation/OrcaSlicer-bambulab.git
synced 2026-06-09 07:08:27 -04: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.
66 lines
2.3 KiB
C++
66 lines
2.3 KiB
C++
// This file is part of libigl, a simple c++ geometry processing library.
|
|
//
|
|
// Copyright (C) 2013 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_COLON_H
|
|
#define IGL_COLON_H
|
|
#include "igl_inline.h"
|
|
#include <Eigen/Dense>
|
|
namespace igl
|
|
{
|
|
// Note:
|
|
// This should be potentially replaced with eigen's LinSpaced() function
|
|
//
|
|
// If step = 1, it's about 5 times faster to use:
|
|
// X = Eigen::VectorXi::LinSpaced(n,0,n-1);
|
|
// than
|
|
// X = igl::colon<int>(0,n-1);
|
|
//
|
|
|
|
// Colon operator like matlab's colon operator. Enumerats values between low
|
|
// and hi with step step.
|
|
// Templates:
|
|
// L should be a eigen matrix primitive type like int or double
|
|
// S should be a eigen matrix primitive type like int or double
|
|
// H should be a eigen matrix primitive type like int or double
|
|
// T should be a eigen matrix primitive type like int or double
|
|
// Inputs:
|
|
// low starting value if step is valid then this is *always* the first
|
|
// element of I
|
|
// step step difference between sequential elements returned in I,
|
|
// remember this will be cast to template T at compile time. If low<hi
|
|
// then step must be positive. If low>hi then step must be negative.
|
|
// Otherwise I will be set to empty.
|
|
// hi ending value, if (hi-low)%step is zero then this will be the last
|
|
// element in I. If step is positive there will be no elements greater
|
|
// than hi, vice versa if hi<low
|
|
// Output:
|
|
// I list of values from low to hi with step size step
|
|
template <typename L,typename S,typename H,typename T>
|
|
IGL_INLINE void colon(
|
|
const L low,
|
|
const S step,
|
|
const H hi,
|
|
Eigen::Matrix<T,Eigen::Dynamic,1> & I);
|
|
// Same as above but step == (T)1
|
|
template <typename L,typename H,typename T>
|
|
IGL_INLINE void colon(
|
|
const L low,
|
|
const H hi,
|
|
Eigen::Matrix<T,Eigen::Dynamic,1> & I);
|
|
// Return output rather than set in reference
|
|
template <typename T,typename L,typename H>
|
|
IGL_INLINE Eigen::Matrix<T,Eigen::Dynamic,1> colon(
|
|
const L low,
|
|
const H hi);
|
|
}
|
|
|
|
#ifndef IGL_STATIC_LIBRARY
|
|
# include "colon.cpp"
|
|
#endif
|
|
|
|
#endif
|