libigl 2.6.4.dev0__cp312-abi3-win_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- igl/__init__.py +1 -0
- igl/copyleft/__init__.py +1 -0
- igl/copyleft/cgal/__init__.py +1 -0
- igl/copyleft/cgal/pyigl_copyleft_cgal.pyd +0 -0
- igl/copyleft/cgal/pyigl_copyleft_cgal.pyi +231 -0
- igl/copyleft/pyigl_copyleft_core.pyd +0 -0
- igl/copyleft/pyigl_copyleft_core.pyi +65 -0
- igl/copyleft/tetgen/__init__.py +1 -0
- igl/copyleft/tetgen/pyigl_copyleft_tetgen.pyd +0 -0
- igl/copyleft/tetgen/pyigl_copyleft_tetgen.pyi +88 -0
- igl/cycodebase/__init__.py +1 -0
- igl/cycodebase/pyigl_cycodebase.pyd +0 -0
- igl/cycodebase/pyigl_cycodebase.pyi +122 -0
- igl/predicates/__init__.py +1 -0
- igl/predicates/pyigl_predicates.pyd +0 -0
- igl/predicates/pyigl_predicates.pyi +251 -0
- igl/pyigl_core.pyd +0 -0
- igl/pyigl_core.pyi +3767 -0
- igl/spectra/__init__.py +1 -0
- igl/spectra/pyigl_spectra.pyd +0 -0
- igl/spectra/pyigl_spectra.pyi +62 -0
- igl/triangle/__init__.py +1 -0
- igl/triangle/pyigl_restricted_triangle.pyd +0 -0
- igl/triangle/pyigl_restricted_triangle.pyi +109 -0
- include/Eigen/Cholesky +45 -0
- include/Eigen/CholmodSupport +48 -0
- include/Eigen/Core +384 -0
- include/Eigen/Dense +7 -0
- include/Eigen/Eigen +2 -0
- include/Eigen/Eigenvalues +60 -0
- include/Eigen/Geometry +59 -0
- include/Eigen/Householder +29 -0
- include/Eigen/IterativeLinearSolvers +48 -0
- include/Eigen/Jacobi +32 -0
- include/Eigen/KLUSupport +41 -0
- include/Eigen/LU +47 -0
- include/Eigen/MetisSupport +35 -0
- include/Eigen/OrderingMethods +70 -0
- include/Eigen/PaStiXSupport +49 -0
- include/Eigen/PardisoSupport +35 -0
- include/Eigen/QR +50 -0
- include/Eigen/QtAlignedMalloc +39 -0
- include/Eigen/SPQRSupport +34 -0
- include/Eigen/SVD +50 -0
- include/Eigen/Sparse +34 -0
- include/Eigen/SparseCholesky +37 -0
- include/Eigen/SparseCore +69 -0
- include/Eigen/SparseLU +50 -0
- include/Eigen/SparseQR +36 -0
- include/Eigen/StdDeque +27 -0
- include/Eigen/StdList +26 -0
- include/Eigen/StdVector +27 -0
- include/Eigen/SuperLUSupport +64 -0
- include/Eigen/UmfPackSupport +40 -0
- include/Eigen/src/Cholesky/LDLT.h +688 -0
- include/Eigen/src/Cholesky/LLT.h +558 -0
- include/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
- include/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
- include/Eigen/src/Core/ArithmeticSequence.h +413 -0
- include/Eigen/src/Core/Array.h +417 -0
- include/Eigen/src/Core/ArrayBase.h +226 -0
- include/Eigen/src/Core/ArrayWrapper.h +209 -0
- include/Eigen/src/Core/Assign.h +90 -0
- include/Eigen/src/Core/AssignEvaluator.h +1010 -0
- include/Eigen/src/Core/Assign_MKL.h +178 -0
- include/Eigen/src/Core/BandMatrix.h +353 -0
- include/Eigen/src/Core/Block.h +448 -0
- include/Eigen/src/Core/BooleanRedux.h +162 -0
- include/Eigen/src/Core/CommaInitializer.h +164 -0
- include/Eigen/src/Core/ConditionEstimator.h +175 -0
- include/Eigen/src/Core/CoreEvaluators.h +1741 -0
- include/Eigen/src/Core/CoreIterators.h +132 -0
- include/Eigen/src/Core/CwiseBinaryOp.h +183 -0
- include/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
- include/Eigen/src/Core/CwiseTernaryOp.h +197 -0
- include/Eigen/src/Core/CwiseUnaryOp.h +103 -0
- include/Eigen/src/Core/CwiseUnaryView.h +132 -0
- include/Eigen/src/Core/DenseBase.h +701 -0
- include/Eigen/src/Core/DenseCoeffsBase.h +685 -0
- include/Eigen/src/Core/DenseStorage.h +652 -0
- include/Eigen/src/Core/Diagonal.h +258 -0
- include/Eigen/src/Core/DiagonalMatrix.h +391 -0
- include/Eigen/src/Core/DiagonalProduct.h +28 -0
- include/Eigen/src/Core/Dot.h +318 -0
- include/Eigen/src/Core/EigenBase.h +160 -0
- include/Eigen/src/Core/ForceAlignedAccess.h +150 -0
- include/Eigen/src/Core/Fuzzy.h +155 -0
- include/Eigen/src/Core/GeneralProduct.h +465 -0
- include/Eigen/src/Core/GenericPacketMath.h +1040 -0
- include/Eigen/src/Core/GlobalFunctions.h +194 -0
- include/Eigen/src/Core/IO.h +258 -0
- include/Eigen/src/Core/IndexedView.h +237 -0
- include/Eigen/src/Core/Inverse.h +117 -0
- include/Eigen/src/Core/Map.h +171 -0
- include/Eigen/src/Core/MapBase.h +310 -0
- include/Eigen/src/Core/MathFunctions.h +2057 -0
- include/Eigen/src/Core/MathFunctionsImpl.h +200 -0
- include/Eigen/src/Core/Matrix.h +565 -0
- include/Eigen/src/Core/MatrixBase.h +547 -0
- include/Eigen/src/Core/NestByValue.h +85 -0
- include/Eigen/src/Core/NoAlias.h +109 -0
- include/Eigen/src/Core/NumTraits.h +335 -0
- include/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- include/Eigen/src/Core/PermutationMatrix.h +605 -0
- include/Eigen/src/Core/PlainObjectBase.h +1128 -0
- include/Eigen/src/Core/Product.h +191 -0
- include/Eigen/src/Core/ProductEvaluators.h +1179 -0
- include/Eigen/src/Core/Random.h +218 -0
- include/Eigen/src/Core/Redux.h +515 -0
- include/Eigen/src/Core/Ref.h +381 -0
- include/Eigen/src/Core/Replicate.h +142 -0
- include/Eigen/src/Core/Reshaped.h +454 -0
- include/Eigen/src/Core/ReturnByValue.h +119 -0
- include/Eigen/src/Core/Reverse.h +217 -0
- include/Eigen/src/Core/Select.h +164 -0
- include/Eigen/src/Core/SelfAdjointView.h +365 -0
- include/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
- include/Eigen/src/Core/Solve.h +188 -0
- include/Eigen/src/Core/SolveTriangular.h +235 -0
- include/Eigen/src/Core/SolverBase.h +168 -0
- include/Eigen/src/Core/StableNorm.h +251 -0
- include/Eigen/src/Core/StlIterators.h +463 -0
- include/Eigen/src/Core/Stride.h +116 -0
- include/Eigen/src/Core/Swap.h +68 -0
- include/Eigen/src/Core/Transpose.h +464 -0
- include/Eigen/src/Core/Transpositions.h +386 -0
- include/Eigen/src/Core/TriangularMatrix.h +1001 -0
- include/Eigen/src/Core/VectorBlock.h +96 -0
- include/Eigen/src/Core/VectorwiseOp.h +784 -0
- include/Eigen/src/Core/Visitor.h +381 -0
- include/Eigen/src/Core/arch/AVX/Complex.h +372 -0
- include/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
- include/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
- include/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
- include/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- include/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
- include/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
- include/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- include/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
- include/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
- include/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- include/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- include/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- include/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
- include/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
- include/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- include/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
- include/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- include/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- include/Eigen/src/Core/arch/Default/Half.h +942 -0
- include/Eigen/src/Core/arch/Default/Settings.h +49 -0
- include/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- include/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
- include/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- include/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- include/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- include/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- include/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- include/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- include/Eigen/src/Core/arch/NEON/Complex.h +584 -0
- include/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- include/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
- include/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
- include/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- include/Eigen/src/Core/arch/SSE/Complex.h +351 -0
- include/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
- include/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
- include/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
- include/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- include/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- include/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- include/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- include/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- include/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- include/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- include/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- include/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
- include/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
- include/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
- include/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
- include/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
- include/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
- include/Eigen/src/Core/functors/StlFunctors.h +166 -0
- include/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
- include/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
- include/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
- include/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
- include/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
- include/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
- include/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
- include/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
- include/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
- include/Eigen/src/Core/products/Parallelizer.h +180 -0
- include/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
- include/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
- include/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
- include/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
- include/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
- include/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
- include/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
- include/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
- include/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
- include/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
- include/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
- include/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
- include/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
- include/Eigen/src/Core/util/BlasUtil.h +583 -0
- include/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- include/Eigen/src/Core/util/Constants.h +563 -0
- include/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
- include/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
- include/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- include/Eigen/src/Core/util/IntegralConstant.h +272 -0
- include/Eigen/src/Core/util/MKL_support.h +137 -0
- include/Eigen/src/Core/util/Macros.h +1464 -0
- include/Eigen/src/Core/util/Memory.h +1163 -0
- include/Eigen/src/Core/util/Meta.h +812 -0
- include/Eigen/src/Core/util/NonMPL2.h +3 -0
- include/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
- include/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- include/Eigen/src/Core/util/StaticAssert.h +221 -0
- include/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- include/Eigen/src/Core/util/XprHelper.h +856 -0
- include/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
- include/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
- include/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
- include/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
- include/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
- include/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
- include/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
- include/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
- include/Eigen/src/Eigenvalues/RealQZ.h +657 -0
- include/Eigen/src/Eigenvalues/RealSchur.h +558 -0
- include/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
- include/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
- include/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
- include/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
- include/Eigen/src/Geometry/AlignedBox.h +486 -0
- include/Eigen/src/Geometry/AngleAxis.h +247 -0
- include/Eigen/src/Geometry/EulerAngles.h +114 -0
- include/Eigen/src/Geometry/Homogeneous.h +501 -0
- include/Eigen/src/Geometry/Hyperplane.h +282 -0
- include/Eigen/src/Geometry/OrthoMethods.h +235 -0
- include/Eigen/src/Geometry/ParametrizedLine.h +232 -0
- include/Eigen/src/Geometry/Quaternion.h +870 -0
- include/Eigen/src/Geometry/Rotation2D.h +199 -0
- include/Eigen/src/Geometry/RotationBase.h +206 -0
- include/Eigen/src/Geometry/Scaling.h +188 -0
- include/Eigen/src/Geometry/Transform.h +1563 -0
- include/Eigen/src/Geometry/Translation.h +202 -0
- include/Eigen/src/Geometry/Umeyama.h +166 -0
- include/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- include/Eigen/src/Householder/BlockHouseholder.h +110 -0
- include/Eigen/src/Householder/Householder.h +176 -0
- include/Eigen/src/Householder/HouseholderSequence.h +545 -0
- include/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
- include/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
- include/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
- include/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
- include/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
- include/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
- include/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
- include/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
- include/Eigen/src/Jacobi/Jacobi.h +483 -0
- include/Eigen/src/KLUSupport/KLUSupport.h +358 -0
- include/Eigen/src/LU/Determinant.h +117 -0
- include/Eigen/src/LU/FullPivLU.h +877 -0
- include/Eigen/src/LU/InverseImpl.h +432 -0
- include/Eigen/src/LU/PartialPivLU.h +624 -0
- include/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
- include/Eigen/src/LU/arch/InverseSize4.h +351 -0
- include/Eigen/src/MetisSupport/MetisSupport.h +137 -0
- include/Eigen/src/OrderingMethods/Amd.h +435 -0
- include/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
- include/Eigen/src/OrderingMethods/Ordering.h +153 -0
- include/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
- include/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
- include/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
- include/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
- include/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
- include/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
- include/Eigen/src/QR/HouseholderQR.h +434 -0
- include/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
- include/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
- include/Eigen/src/SVD/BDCSVD.h +1366 -0
- include/Eigen/src/SVD/JacobiSVD.h +812 -0
- include/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
- include/Eigen/src/SVD/SVDBase.h +376 -0
- include/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
- include/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
- include/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
- include/Eigen/src/SparseCore/AmbiVector.h +378 -0
- include/Eigen/src/SparseCore/CompressedStorage.h +274 -0
- include/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
- include/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
- include/Eigen/src/SparseCore/SparseAssign.h +270 -0
- include/Eigen/src/SparseCore/SparseBlock.h +571 -0
- include/Eigen/src/SparseCore/SparseColEtree.h +206 -0
- include/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
- include/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
- include/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
- include/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
- include/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
- include/Eigen/src/SparseCore/SparseDot.h +98 -0
- include/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
- include/Eigen/src/SparseCore/SparseMap.h +305 -0
- include/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
- include/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
- include/Eigen/src/SparseCore/SparsePermutation.h +178 -0
- include/Eigen/src/SparseCore/SparseProduct.h +181 -0
- include/Eigen/src/SparseCore/SparseRedux.h +49 -0
- include/Eigen/src/SparseCore/SparseRef.h +397 -0
- include/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
- include/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
- include/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
- include/Eigen/src/SparseCore/SparseTranspose.h +92 -0
- include/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
- include/Eigen/src/SparseCore/SparseUtil.h +186 -0
- include/Eigen/src/SparseCore/SparseVector.h +478 -0
- include/Eigen/src/SparseCore/SparseView.h +254 -0
- include/Eigen/src/SparseCore/TriangularSolver.h +315 -0
- include/Eigen/src/SparseLU/SparseLU.h +923 -0
- include/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
- include/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
- include/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
- include/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
- include/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
- include/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
- include/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
- include/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
- include/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
- include/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
- include/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
- include/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
- include/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
- include/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
- include/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
- include/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
- include/Eigen/src/SparseQR/SparseQR.h +758 -0
- include/Eigen/src/StlSupport/StdDeque.h +116 -0
- include/Eigen/src/StlSupport/StdList.h +106 -0
- include/Eigen/src/StlSupport/StdVector.h +131 -0
- include/Eigen/src/StlSupport/details.h +84 -0
- include/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
- include/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
- include/Eigen/src/misc/Image.h +82 -0
- include/Eigen/src/misc/Kernel.h +79 -0
- include/Eigen/src/misc/RealSvd2x2.h +55 -0
- include/Eigen/src/misc/blas.h +440 -0
- include/Eigen/src/misc/lapack.h +152 -0
- include/Eigen/src/misc/lapacke.h +16292 -0
- include/Eigen/src/misc/lapacke_mangling.h +17 -0
- include/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
- include/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
- include/Eigen/src/plugins/BlockMethods.h +1442 -0
- include/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
- include/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
- include/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- include/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
- include/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
- include/Eigen/src/plugins/ReshapedMethods.h +149 -0
- include/Spectra/DavidsonSymEigsSolver.h +93 -0
- include/Spectra/GenEigsBase.h +532 -0
- include/Spectra/GenEigsComplexShiftSolver.h +159 -0
- include/Spectra/GenEigsRealShiftSolver.h +85 -0
- include/Spectra/GenEigsSolver.h +149 -0
- include/Spectra/JDSymEigsBase.h +190 -0
- include/Spectra/LinAlg/Arnoldi.h +315 -0
- include/Spectra/LinAlg/BKLDLT.h +537 -0
- include/Spectra/LinAlg/DoubleShiftQR.h +440 -0
- include/Spectra/LinAlg/Lanczos.h +171 -0
- include/Spectra/LinAlg/Orthogonalization.h +141 -0
- include/Spectra/LinAlg/RitzPairs.h +130 -0
- include/Spectra/LinAlg/SearchSpace.h +96 -0
- include/Spectra/LinAlg/TridiagEigen.h +230 -0
- include/Spectra/LinAlg/UpperHessenbergEigen.h +314 -0
- include/Spectra/LinAlg/UpperHessenbergQR.h +786 -0
- include/Spectra/LinAlg/UpperHessenbergSchur.h +450 -0
- include/Spectra/MatOp/DenseCholesky.h +125 -0
- include/Spectra/MatOp/DenseGenComplexShiftSolve.h +118 -0
- include/Spectra/MatOp/DenseGenMatProd.h +112 -0
- include/Spectra/MatOp/DenseGenRealShiftSolve.h +104 -0
- include/Spectra/MatOp/DenseSymMatProd.h +107 -0
- include/Spectra/MatOp/DenseSymShiftSolve.h +110 -0
- include/Spectra/MatOp/SparseCholesky.h +128 -0
- include/Spectra/MatOp/SparseGenComplexShiftSolve.h +124 -0
- include/Spectra/MatOp/SparseGenMatProd.h +107 -0
- include/Spectra/MatOp/SparseGenRealShiftSolve.h +110 -0
- include/Spectra/MatOp/SparseRegularInverse.h +135 -0
- include/Spectra/MatOp/SparseSymMatProd.h +108 -0
- include/Spectra/MatOp/SparseSymShiftSolve.h +114 -0
- include/Spectra/MatOp/SymShiftInvert.h +245 -0
- include/Spectra/MatOp/internal/ArnoldiOp.h +158 -0
- include/Spectra/MatOp/internal/SymGEigsBucklingOp.h +95 -0
- include/Spectra/MatOp/internal/SymGEigsCayleyOp.h +105 -0
- include/Spectra/MatOp/internal/SymGEigsCholeskyOp.h +87 -0
- include/Spectra/MatOp/internal/SymGEigsRegInvOp.h +84 -0
- include/Spectra/MatOp/internal/SymGEigsShiftInvertOp.h +95 -0
- include/Spectra/SymEigsBase.h +453 -0
- include/Spectra/SymEigsShiftSolver.h +200 -0
- include/Spectra/SymEigsSolver.h +164 -0
- include/Spectra/SymGEigsShiftSolver.h +463 -0
- include/Spectra/SymGEigsSolver.h +290 -0
- include/Spectra/Util/CompInfo.h +36 -0
- include/Spectra/Util/GEigsMode.h +28 -0
- include/Spectra/Util/SelectionRule.h +300 -0
- include/Spectra/Util/SimpleRandom.h +99 -0
- include/Spectra/Util/TypeTraits.h +99 -0
- include/Spectra/Util/Version.h +16 -0
- include/Spectra/contrib/LOBPCGSolver.h +551 -0
- include/Spectra/contrib/PartialSVDSolver.h +211 -0
- lib/cmake/eigen/EigenTargets.cmake +107 -0
- libigl-2.6.4.dev0.dist-info/METADATA +132 -0
- libigl-2.6.4.dev0.dist-info/RECORD +420 -0
- libigl-2.6.4.dev0.dist-info/WHEEL +5 -0
- libigl-2.6.4.dev0.dist-info/licenses/LICENSE.GPL +674 -0
- libigl-2.6.4.dev0.dist-info/licenses/LICENSE.MPL2 +373 -0
- share/spectra/cmake/Spectra-targets.cmake +123 -0
- share/spectra/cmake/spectra-config-version.cmake +43 -0
- share/spectra/cmake/spectra-config.cmake +31 -0
igl/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .pyigl_core import *
|
igl/copyleft/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .pyigl_copyleft_core import *
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .pyigl_copyleft_cgal import *
|
|
Binary file
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
from typing import Annotated, overload
|
|
2
|
+
|
|
3
|
+
from numpy.typing import ArrayLike
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def convex_hull(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)]) -> Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')]:
|
|
7
|
+
"""
|
|
8
|
+
Compute the convex hull of a set of points, returning only the triangular faces of the hull.
|
|
9
|
+
|
|
10
|
+
@param[in] V #V by 3 matrix of input points
|
|
11
|
+
@return F: #F by 3 matrix of triangle indices into V
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
def coplanar(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)]) -> bool:
|
|
15
|
+
"""
|
|
16
|
+
Test whether all points lie on the same plane.
|
|
17
|
+
|
|
18
|
+
@param[in] V #V by 3 list of 3D vertex positions
|
|
19
|
+
@return true if all points are coplanar
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
def delaunay_triangulation(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)]) -> Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')]:
|
|
23
|
+
"""
|
|
24
|
+
Compute the Delaunay triangulation of a 2D point set using CGAL.
|
|
25
|
+
|
|
26
|
+
@param[in] V #V by 2 list of 2D vertex positions
|
|
27
|
+
@return F #F by 3 triangle indices into V
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
def extract_cells(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], F: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)]) -> tuple[int, Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')]]:
|
|
31
|
+
"""
|
|
32
|
+
Extract connected 3D cells partitioned by a triangle mesh.
|
|
33
|
+
|
|
34
|
+
@param[in] V #V by 3 array of vertices
|
|
35
|
+
@param[in] F #F by 3 array of triangle indices
|
|
36
|
+
@return tuple (num_cells, cells):
|
|
37
|
+
- num_cells number of cells (cell 0 is the infinite outer cell)
|
|
38
|
+
- cells #F by 2 array of cell indices; cells[i,0] is the cell on the
|
|
39
|
+
positive side of face i, cells[i,1] is on the negative side
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
def fast_winding_number(P: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], N: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], Q: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], expansion_order: int = 2, beta: float = 2.0) -> Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')]:
|
|
43
|
+
"""
|
|
44
|
+
Evaluate the fast winding number for point data with adjustable accuracy.
|
|
45
|
+
|
|
46
|
+
@param[in] P #P by 3 list of point locations
|
|
47
|
+
@param[in] N #P by 3 list of point normals
|
|
48
|
+
@param[in] Q #Q by 3 list of query points for the winding number
|
|
49
|
+
@param[in] expansion_order Order of the Taylor expansion (0, 1, or 2)
|
|
50
|
+
@param[in] beta Barnes-Hut style accuracy parameter (recommended: 2)
|
|
51
|
+
@return Vector of winding number values for each query point
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
def intersect_other(VA: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], FA: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)], VB: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], FB: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)], detect_only: bool = False, first_only: bool = False, stitch_all: bool = False, slow_and_more_precise_rounding: bool = False, cutoff: int = 1000) -> tuple[Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')]]:
|
|
55
|
+
"""
|
|
56
|
+
Detect intersecting faces between two triangle meshes, providing detailed output.
|
|
57
|
+
|
|
58
|
+
@param[in] VA #V by 3 list of vertices for first mesh
|
|
59
|
+
@param[in] FA #F by 3 list of faces for first mesh
|
|
60
|
+
@param[in] VB #V by 3 list of vertices for second mesh
|
|
61
|
+
@param[in] FB #F by 3 list of faces for second mesh
|
|
62
|
+
@param[in] detect_only only detect intersections, do not resolve
|
|
63
|
+
@param[in] first_only only return first intersection
|
|
64
|
+
@param[in] stitch_all stitch all intersections
|
|
65
|
+
@param[in] slow_and_more_precise_rounding use slow and more precise rounding
|
|
66
|
+
@param[in] cutoff maximum number of intersections to resolve
|
|
67
|
+
@return Tuple containing:
|
|
68
|
+
- success: bool indicating if the operation succeeded
|
|
69
|
+
- IF: # intersecting face pairs
|
|
70
|
+
- VVAB: list of intersection vertex positions
|
|
71
|
+
- FFAB: list of triangle indices into VVAB
|
|
72
|
+
- JAB: list of indices into [FA;FB] denoting the birth triangle
|
|
73
|
+
- IMAB: indices stitching duplicates from intersections
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
@overload
|
|
77
|
+
def intersect_with_half_space(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], F: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)], p: Annotated[ArrayLike, dict(dtype='float64', shape=(None), writable=False)], n: Annotated[ArrayLike, dict(dtype='float64', shape=(None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')]]:
|
|
78
|
+
"""
|
|
79
|
+
Intersect a PWN mesh with a half-space using a point and normal.
|
|
80
|
+
|
|
81
|
+
@param[in] V #V by 3 list of mesh vertex positions
|
|
82
|
+
@param[in] F #F by 3 list of triangle indices
|
|
83
|
+
@param[in] p 3D point on plane
|
|
84
|
+
@param[in] n 3D normal vector
|
|
85
|
+
@return Tuple containing:
|
|
86
|
+
- success: bool, true if successful
|
|
87
|
+
- VC: vertices of resulting mesh
|
|
88
|
+
- FC: face indices of resulting mesh
|
|
89
|
+
- J: birth facet indices
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
@overload
|
|
93
|
+
def intersect_with_half_space(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], F: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)], equ: Annotated[ArrayLike, dict(dtype='float64', shape=(None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')]]:
|
|
94
|
+
"""
|
|
95
|
+
Intersect a PWN mesh with a half-space using the plane equation.
|
|
96
|
+
|
|
97
|
+
@param[in] V #V by 3 list of mesh vertex positions
|
|
98
|
+
@param[in] F #F by 3 list of triangle indices
|
|
99
|
+
@param[in] equ Plane equation coefficients (a, b, c, d)
|
|
100
|
+
@return Tuple containing:
|
|
101
|
+
- success: bool, true if successful
|
|
102
|
+
- VC: vertices of resulting mesh
|
|
103
|
+
- FC: face indices of resulting mesh
|
|
104
|
+
- J: birth facet indices
|
|
105
|
+
"""
|
|
106
|
+
|
|
107
|
+
def mesh_boolean(VA: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], FA: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)], VB: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)] = ..., FB: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)] = ..., type_str: str) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')]]:
|
|
108
|
+
"""
|
|
109
|
+
Compute the boolean operation (union, intersection, difference, etc.) between two meshes.
|
|
110
|
+
|
|
111
|
+
@param[in] VA #VA by dim matrix of mesh A vertices
|
|
112
|
+
@param[in] FA #FA by simplex_size matrix of mesh A faces
|
|
113
|
+
@param[in] VB #VB by dim matrix of mesh B vertices
|
|
114
|
+
@param[in] FB #FB by simplex_size matrix of mesh B faces
|
|
115
|
+
@param[in] type_str Type of boolean operation: "union", "intersection", "difference", etc.
|
|
116
|
+
@param[out] VC #VC by dim matrix of result vertices
|
|
117
|
+
@param[out] FC #FC by simplex_size matrix of result faces
|
|
118
|
+
@param[out] J #FC list of indices indicating which input face contributed to each result face
|
|
119
|
+
@return Tuple containing:
|
|
120
|
+
- VC: Result vertices
|
|
121
|
+
- FC: Result faces
|
|
122
|
+
- J: Face origin indices
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
def oriented_bounding_box(P: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)]) -> Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')]:
|
|
126
|
+
"""
|
|
127
|
+
Given a set of points compute the rotation transformation of them such
|
|
128
|
+
that their axis-aligned bounding box is as small as possible.
|
|
129
|
+
|
|
130
|
+
igl::oriented_bounding_box is often faster and better
|
|
131
|
+
|
|
132
|
+
@param[in] P #P by 3 list of point locations
|
|
133
|
+
@param[out] R rotation matrix
|
|
134
|
+
"""
|
|
135
|
+
|
|
136
|
+
def outer_hull(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], F: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='bool', shape=(None), order='C')]]:
|
|
137
|
+
"""
|
|
138
|
+
Compute the outer hull of a piecewise-constant winding number mesh.
|
|
139
|
+
|
|
140
|
+
@param[in] V #V by 3 list of vertex positions
|
|
141
|
+
@param[in] F #F by 3 list of triangle indices into V
|
|
142
|
+
@return tuple (HV, HF, J, flip):
|
|
143
|
+
- HV #HV by 3 output vertex positions
|
|
144
|
+
- HF #HF by 3 output triangle indices into HV
|
|
145
|
+
- J #HF list of indices into F (birth faces)
|
|
146
|
+
- flip #HF list of bools, true if facet was flipped
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
def peel_outer_hull_layers(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], F: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='bool', shape=(None), order='C')], int]:
|
|
150
|
+
"""
|
|
151
|
+
Successively peel outer hull layers from a mesh, useful for boolean operations.
|
|
152
|
+
|
|
153
|
+
@param[in] V #V by 3 list of vertex positions
|
|
154
|
+
@param[in] F #F by 3 list of triangle indices into V
|
|
155
|
+
@return tuple (I, flip, num_peels):
|
|
156
|
+
- I #F list of which peel layer each facet belongs to
|
|
157
|
+
- flip #F list of bools, true if facet orientation was flipped during peeling
|
|
158
|
+
- num_peels number of peel layers
|
|
159
|
+
"""
|
|
160
|
+
|
|
161
|
+
def peel_winding_number_layers(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], F: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')], int]:
|
|
162
|
+
"""
|
|
163
|
+
Peel winding number layers from a mesh.
|
|
164
|
+
|
|
165
|
+
@param[in] V #V by 3 list of vertex positions
|
|
166
|
+
@param[in] F #F by 3 list of triangle indices into V
|
|
167
|
+
@return tuple (W, num_layers):
|
|
168
|
+
- W #V list of integer winding numbers per vertex
|
|
169
|
+
- num_layers number of winding number layers
|
|
170
|
+
"""
|
|
171
|
+
|
|
172
|
+
def point_areas(P: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], I: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)], N: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')]]:
|
|
173
|
+
r"""
|
|
174
|
+
Given a 3D set of points P, each with a list of k-nearest-neighbours,
|
|
175
|
+
estimate the geodesic voronoi area associated with each point.
|
|
176
|
+
|
|
177
|
+
The k nearest neighbours may be known from running igl::knn_octree on
|
|
178
|
+
the output data from igl::octree. We reccomend using a k value
|
|
179
|
+
between 15 and 20 inclusive for accurate area estimation.
|
|
180
|
+
|
|
181
|
+
N is used filter the neighbours, to ensure area estimation only occurs
|
|
182
|
+
using neighbors that are on the same side of the surface (ie for thin
|
|
183
|
+
sheets), as well as to solve the orientation ambiguity of the tangent
|
|
184
|
+
plane normal.
|
|
185
|
+
|
|
186
|
+
\note This function *should* be implemented by pre-filtering I, rather
|
|
187
|
+
than filtering in this function using N. In this case, the function
|
|
188
|
+
would only take P and I as input.
|
|
189
|
+
|
|
190
|
+
@param[in] P #P by 3 list of point locations
|
|
191
|
+
@param[in] I #P by k list of k-nearest-neighbor indices into P
|
|
192
|
+
@param[in] N #P by 3 list of point normals
|
|
193
|
+
@param[out] A #P list of estimated areas
|
|
194
|
+
@param[out] T #P by 3 list of tangent plane normals for each point
|
|
195
|
+
|
|
196
|
+
\see igl::knn
|
|
197
|
+
"""
|
|
198
|
+
|
|
199
|
+
def remesh_self_intersections(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], F: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)], detect_only: bool = False, first_only: bool = False, stitch_all: bool = False, slow_and_more_precise_rounding: bool = False, cutoff: int = 1000) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')]]:
|
|
200
|
+
"""
|
|
201
|
+
Resolve self-intersections in a mesh, without returning unique vertex indices (IM).
|
|
202
|
+
|
|
203
|
+
@param[in] V #V by 3 list of vertex positions
|
|
204
|
+
@param[in] F #F by 3 list of face indices
|
|
205
|
+
@param[in] detect_only only detect intersections, do not resolve
|
|
206
|
+
@param[in] first_only only return first intersection
|
|
207
|
+
@param[in] stitch_all stitch all intersections
|
|
208
|
+
@param[in] slow_and_more_precise_rounding use slow and more precise rounding
|
|
209
|
+
@param[in] cutoff maximum number of intersections to resolve
|
|
210
|
+
@return Tuple containing:
|
|
211
|
+
- VV: remeshed vertex positions
|
|
212
|
+
- FF: remeshed face indices
|
|
213
|
+
- IF: intersecting face pairs
|
|
214
|
+
- J: birth triangle indices
|
|
215
|
+
- IM if stitch_all = true #VV list from 0 to #VV-1
|
|
216
|
+
elseif stitch_all = false #VV list of indices into VV of unique vertices.
|
|
217
|
+
"""
|
|
218
|
+
|
|
219
|
+
def trim_with_solid(VA: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], FA: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)], VB: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], FB: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='bool', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')]]:
|
|
220
|
+
"""
|
|
221
|
+
Trim a mesh with another solid mesh, determining which faces lie inside or outside.
|
|
222
|
+
|
|
223
|
+
@param[in] VA Vertex positions of mesh A
|
|
224
|
+
@param[in] FA Triangle indices of mesh A
|
|
225
|
+
@param[in] VB Vertex positions of mesh B (solid)
|
|
226
|
+
@param[in] FB Triangle indices of mesh B
|
|
227
|
+
@param[out] V Output vertex positions
|
|
228
|
+
@param[out] F Output triangle indices
|
|
229
|
+
@param[out] D Boolean vector indicating if each face is inside B
|
|
230
|
+
@param[out] J Indices into FA showing parent triangle
|
|
231
|
+
"""
|
|
Binary file
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from typing import Annotated, overload
|
|
2
|
+
|
|
3
|
+
from numpy.typing import ArrayLike
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@overload
|
|
7
|
+
def marching_cubes(values: Annotated[ArrayLike, dict(dtype='float64', shape=(None), writable=False)], points: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], x_res: int, y_res: int, z_res: int, isovalue: float = 0.0) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')]]:
|
|
8
|
+
"""
|
|
9
|
+
Perform marching cubes to extract an isosurface from a scalar field on a regular grid.
|
|
10
|
+
|
|
11
|
+
@param[in] values #points vector of scalar values (<0 inside, >0 outside)
|
|
12
|
+
@param[in] points #points by 3 grid point positions (x-fastest order:
|
|
13
|
+
index = x + y*x_res + z*x_res*y_res)
|
|
14
|
+
@param[in] x_res grid resolution in x
|
|
15
|
+
@param[in] y_res grid resolution in y
|
|
16
|
+
@param[in] z_res grid resolution in z
|
|
17
|
+
@param[in] isovalue isovalue to reconstruct (default: 0.0)
|
|
18
|
+
@return tuple (vertices, faces):
|
|
19
|
+
- vertices #V by 3 mesh vertex positions
|
|
20
|
+
- faces #F by 3 mesh triangle indices
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
@overload
|
|
24
|
+
def marching_cubes(values: Annotated[ArrayLike, dict(dtype='float64', shape=(None), writable=False)], points: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], indices: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)], isovalue: float = 0.0) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')]]:
|
|
25
|
+
"""
|
|
26
|
+
Perform marching cubes on a sparse grid defined by explicit cube corner indices.
|
|
27
|
+
|
|
28
|
+
@param[in] values #points vector of scalar values
|
|
29
|
+
@param[in] points #points by 3 grid point positions
|
|
30
|
+
@param[in] indices #cubes by 8 array of corner indices into points/values
|
|
31
|
+
@param[in] isovalue isovalue to reconstruct (default: 0.0)
|
|
32
|
+
@return tuple (vertices, faces):
|
|
33
|
+
- vertices #V by 3 mesh vertex positions
|
|
34
|
+
- faces #F by 3 mesh triangle indices
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
def progressive_hulls(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='F')], F: Annotated[ArrayLike, dict(dtype='int32', shape=(None, None), order='F')], max_m: int = 0) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='F')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='F')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')]]:
|
|
38
|
+
"""
|
|
39
|
+
Performs progressive hull simplification on a mesh, collapsing edges until a target number of faces is reached.
|
|
40
|
+
|
|
41
|
+
@param[in] V #V by dim list of vertex positions
|
|
42
|
+
@param[in] F #F by 3 list of face indices into V
|
|
43
|
+
@param[in] max_m Target number of output faces
|
|
44
|
+
@param[out] U Output vertex positions
|
|
45
|
+
@param[out] G Output face indices into U
|
|
46
|
+
@param[out] J Indices into F indicating the birth face for each face in G
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
def quadprog(G: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], g0: Annotated[ArrayLike, dict(dtype='float64', shape=(None), writable=False)], CE: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)] = ..., ce0: Annotated[ArrayLike, dict(dtype='float64', shape=(None), writable=False)] = ..., CI: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)] = ..., ci0: Annotated[ArrayLike, dict(dtype='float64', shape=(None), writable=False)] = ...) -> Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')]:
|
|
50
|
+
"""
|
|
51
|
+
Solve a dense convex quadratic program.
|
|
52
|
+
|
|
53
|
+
Minimizes: 0.5 x' G x + g0' x
|
|
54
|
+
Subject to: CE' x + ce0 = 0
|
|
55
|
+
CI' x + ci0 >= 0
|
|
56
|
+
|
|
57
|
+
@param[in] G #x by #x positive semi-definite quadratic cost matrix
|
|
58
|
+
@param[in] g0 #x linear cost vector
|
|
59
|
+
@param[in] CE #x by #ce equality constraint matrix (optional)
|
|
60
|
+
@param[in] ce0 #ce equality constraint rhs (optional)
|
|
61
|
+
@param[in] CI #x by #ci inequality constraint matrix (optional)
|
|
62
|
+
@param[in] ci0 #ci inequality constraint rhs (optional)
|
|
63
|
+
@return x #x solution vector
|
|
64
|
+
@raises RuntimeError if the solver fails
|
|
65
|
+
"""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .pyigl_copyleft_tetgen import *
|
|
Binary file
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
from typing import Annotated
|
|
2
|
+
|
|
3
|
+
from numpy.typing import ArrayLike
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class CDTParam:
|
|
7
|
+
def __init__(self) -> None: ...
|
|
8
|
+
|
|
9
|
+
@property
|
|
10
|
+
def use_bounding_box(self) -> bool: ...
|
|
11
|
+
|
|
12
|
+
@use_bounding_box.setter
|
|
13
|
+
def use_bounding_box(self, arg: bool, /) -> None: ...
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def bounding_box_scale(self) -> float: ...
|
|
17
|
+
|
|
18
|
+
@bounding_box_scale.setter
|
|
19
|
+
def bounding_box_scale(self, arg: float, /) -> None: ...
|
|
20
|
+
|
|
21
|
+
@property
|
|
22
|
+
def flags(self) -> str: ...
|
|
23
|
+
|
|
24
|
+
@flags.setter
|
|
25
|
+
def flags(self, arg: str, /) -> None: ...
|
|
26
|
+
|
|
27
|
+
def cdt(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], F: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)], param: CDTParam = ...) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')]]:
|
|
28
|
+
"""
|
|
29
|
+
Create a constrained Delaunay tetrahedralization of the convex hull of a mesh.
|
|
30
|
+
|
|
31
|
+
The input mesh must be non-self-intersecting.
|
|
32
|
+
|
|
33
|
+
@param[in] V #V by 3 list of input mesh vertices
|
|
34
|
+
@param[in] F #F by 3 list of input mesh facets
|
|
35
|
+
@param[in] param CDTParam struct with fields:
|
|
36
|
+
use_bounding_box force meshing of the bounding box (default: false)
|
|
37
|
+
bounding_box_scale scale factor for bounding box (default: 1.01)
|
|
38
|
+
flags tetgen flags, do not include "c" (default: "Y")
|
|
39
|
+
@return tuple (TV, TT, TF):
|
|
40
|
+
- TV #TV by 3 output vertex positions (input vertices come first)
|
|
41
|
+
- TT #TT by 4 tetrahedra indices into TV
|
|
42
|
+
- TF #TF by 3 surface triangle indices (facets from F, possibly subdivided)
|
|
43
|
+
@raises RuntimeError on failure
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
def mesh_with_skeleton(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], F: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)], C: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], P: Annotated[ArrayLike, dict(dtype='int64', shape=(None), writable=False)] = ..., BE: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)] = ..., CE: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)] = ..., samples_per_bone: int = 10, tetgen_flags: str = '') -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')]]:
|
|
47
|
+
"""
|
|
48
|
+
Mesh the interior of a surface with a graded tetrahedral mesh conforming to a skeleton.
|
|
49
|
+
|
|
50
|
+
@param[in] V #V by 3 list of surface mesh vertex positions
|
|
51
|
+
@param[in] F #F by 3 list of triangle indices
|
|
52
|
+
@param[in] C #C by 3 list of skeleton joint positions
|
|
53
|
+
@param[in] P #P list of point handle indices into C (optional)
|
|
54
|
+
@param[in] BE #BE by 2 list of bone edge indices into C (optional)
|
|
55
|
+
@param[in] CE #CE by 2 list of cage edge indices into P (optional)
|
|
56
|
+
@param[in] samples_per_bone number of samples added per bone (default: 10)
|
|
57
|
+
@param[in] tetgen_flags tetgen option string (default: "" → "pq2Y")
|
|
58
|
+
@return tuple (VV, TT, FF):
|
|
59
|
+
- VV #VV by 3 tet-mesh vertex positions
|
|
60
|
+
- TT #TT by 4 tetrahedra indices
|
|
61
|
+
- FF #FF by 3 surface triangle indices
|
|
62
|
+
@raises RuntimeError on failure
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
def tetrahedralize(V: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], F: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)] = ..., H: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)] = ..., VM: Annotated[ArrayLike, dict(dtype='int64', shape=(None), writable=False)] = ..., FM: Annotated[ArrayLike, dict(dtype='int64', shape=(None), writable=False)] = ..., R: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)] = ..., flags: str = '') -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), order='C')], int]:
|
|
66
|
+
"""
|
|
67
|
+
Mesh the interior of a surface mesh (V,F) using tetgen
|
|
68
|
+
|
|
69
|
+
@param[in] V #V by 3 vertex position list
|
|
70
|
+
@param[in] F #F list of polygon face indices into V (0-indexed)
|
|
71
|
+
@param[in] H #H by 3 list of seed points inside holes
|
|
72
|
+
@param[in] VM #VM list of vertex markers
|
|
73
|
+
@param[in] FM #FM list of face markers
|
|
74
|
+
@param[in] R #R by 5 list of region attributes
|
|
75
|
+
@param[in] flags string of tetgen options (See tetgen documentation) e.g.
|
|
76
|
+
"pq1.414a0.01" tries to mesh the interior of a given surface with
|
|
77
|
+
quality and area constraints
|
|
78
|
+
"" will mesh the convex hull constrained to pass through V (ignores F)
|
|
79
|
+
@param[out] TV #TV by 3 vertex position list
|
|
80
|
+
@param[out] TT #TT by 4 list of tet face indices
|
|
81
|
+
@param[out] TF #TF by 3 list of triangle face indices ('f', else
|
|
82
|
+
`boundary_facets` is called on TT)
|
|
83
|
+
@param[out] TR #TT list of region ID for each tetrahedron
|
|
84
|
+
@param[out] TN #TT by 4 list of indices neighbors for each tetrahedron ('n')
|
|
85
|
+
@param[out] PT #TV list of incident tetrahedron for a vertex ('m')
|
|
86
|
+
@param[out] FT #TF by 2 list of tetrahedrons sharing a triface ('nn')
|
|
87
|
+
@param[out] num_regions Number of regions in output mesh
|
|
88
|
+
"""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .pyigl_cycodebase import *
|
|
Binary file
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
from typing import Annotated, overload
|
|
2
|
+
|
|
3
|
+
from numpy.typing import ArrayLike
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@overload
|
|
7
|
+
def box_cubic(C: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')]]:
|
|
8
|
+
"""
|
|
9
|
+
Compute the min/max box corners tightly containing a cubic Bézier curve.
|
|
10
|
+
|
|
11
|
+
@param[in] C 4 by dim matrix of control points defining the cubic Bézier curve
|
|
12
|
+
@return Tuple (B1, B2) where
|
|
13
|
+
B1 1 by dim min corner of the bounding box
|
|
14
|
+
B2 1 by dim max corner of the bounding box
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
@overload
|
|
18
|
+
def box_cubic(P: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], C: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')]]:
|
|
19
|
+
"""
|
|
20
|
+
Compute bounding boxes for a collection of indexed cubic Bézier curves.
|
|
21
|
+
|
|
22
|
+
@param[in] P #P by dim matrix of control point locations
|
|
23
|
+
@param[in] C #C by 4 matrix of indices into P defining the cubics
|
|
24
|
+
@return Tuple (B1, B2) where
|
|
25
|
+
B1 #C by dim matrix of min corners of the bounding boxes
|
|
26
|
+
B2 #C by dim matrix of max corners of the bounding boxes
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
@overload
|
|
30
|
+
def point_cubic_squared_distance(Q: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], C: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')]]:
|
|
31
|
+
"""
|
|
32
|
+
Squared distance from each query point to a cubic Bézier curve.
|
|
33
|
+
|
|
34
|
+
@param[in] Q #Q by dim matrix of query points
|
|
35
|
+
@param[in] C 4 by dim matrix of control points for the cubic Bézier curve
|
|
36
|
+
@return Tuple (sqrD, S, K) where
|
|
37
|
+
sqrD #Q vector of smallest squared distances
|
|
38
|
+
S #Q vector of parameters of the closest points on the curve
|
|
39
|
+
K #Q by dim matrix of closest points on the curve
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
@overload
|
|
43
|
+
def point_cubic_squared_distance(Q: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], C: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], D: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], B: Annotated[ArrayLike, dict(dtype='float64', shape=(None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')]]:
|
|
44
|
+
"""
|
|
45
|
+
Squared distance to a cubic Bézier curve, reusing precomputed monomial bases.
|
|
46
|
+
|
|
47
|
+
Compute the bases once with igl.cubic_monomial_bases(C) -> (M, D, B) and pass
|
|
48
|
+
(D, B) here so repeated queries against the same curve skip recomputing them.
|
|
49
|
+
The result matches the two-argument overload.
|
|
50
|
+
|
|
51
|
+
@param[in] Q #Q by dim matrix of query points
|
|
52
|
+
@param[in] C 4 by dim matrix of control points for the cubic Bézier curve
|
|
53
|
+
@param[in] D 3 by dim matrix of monomial coefficients for dC/dt (from cubic_monomial_bases)
|
|
54
|
+
@param[in] B 6-vector of inner products of the monomial bases (from cubic_monomial_bases)
|
|
55
|
+
@return Tuple (sqrD, S, K) where
|
|
56
|
+
sqrD #Q vector of smallest squared distances
|
|
57
|
+
S #Q vector of parameters of the closest points on the curve
|
|
58
|
+
K #Q by dim matrix of closest points on the curve
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
@overload
|
|
62
|
+
def point_spline_squared_distance(Q: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], P: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], C: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')]]:
|
|
63
|
+
"""
|
|
64
|
+
Squared distance from each query point to a spline of cubic Bézier curves.
|
|
65
|
+
|
|
66
|
+
@param[in] Q #Q by dim matrix of query points
|
|
67
|
+
@param[in] P #P by dim matrix of spline control points
|
|
68
|
+
@param[in] C #C by 4 matrix of indices into P defining the cubic Bézier curves
|
|
69
|
+
@return Tuple (sqrD, I, S, K) where
|
|
70
|
+
sqrD #Q vector of smallest squared distances
|
|
71
|
+
I #Q vector of indices of the closest cubic (row of C)
|
|
72
|
+
S #Q vector of parameters of the closest points on that cubic
|
|
73
|
+
K #Q by dim matrix of closest points on the spline
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
@overload
|
|
77
|
+
def point_spline_squared_distance(Q: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], P: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], C: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)], B1: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], B2: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], leaf: Annotated[ArrayLike, dict(dtype='int64', shape=(None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')], Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')]]:
|
|
78
|
+
"""
|
|
79
|
+
Squared distance to a spline, reusing a prebuilt Eytzinger AABB.
|
|
80
|
+
|
|
81
|
+
Build the AABB once with igl.cycodebase.spline_eytzinger_aabb(P, C) and pass its
|
|
82
|
+
(B1, B2, leaf) here so repeated queries against the same spline skip rebuilding
|
|
83
|
+
the acceleration structure. The result matches the unaccelerated overload.
|
|
84
|
+
|
|
85
|
+
@param[in] Q #Q by dim matrix of query points
|
|
86
|
+
@param[in] P #P by dim matrix of spline control points
|
|
87
|
+
@param[in] C #C by 4 matrix of indices into P defining the cubic Bézier curves
|
|
88
|
+
@param[in] B1 #B by dim matrix of AABB min box corners (from spline_eytzinger_aabb)
|
|
89
|
+
@param[in] B2 #B by dim matrix of AABB max box corners (from spline_eytzinger_aabb)
|
|
90
|
+
@param[in] leaf #B vector of AABB leaf node indices/flags (from spline_eytzinger_aabb)
|
|
91
|
+
@return Tuple (sqrD, I, S, K) where
|
|
92
|
+
sqrD #Q vector of smallest squared distances
|
|
93
|
+
I #Q vector of indices of the closest cubic (row of C)
|
|
94
|
+
S #Q vector of parameters of the closest points on that cubic
|
|
95
|
+
K #Q by dim matrix of closest points on the spline
|
|
96
|
+
"""
|
|
97
|
+
|
|
98
|
+
def roots(coef: Annotated[ArrayLike, dict(dtype='float64', shape=(None), writable=False)], xmin: float, xmax: float) -> tuple[int, Annotated[ArrayLike, dict(dtype='float64', shape=(None), order='C')]]:
|
|
99
|
+
"""
|
|
100
|
+
Find the real roots of a polynomial within an interval [xmin, xmax].
|
|
101
|
+
|
|
102
|
+
@param[in] coef #coef list of monomial coefficients (low to high order); the
|
|
103
|
+
polynomial degree is len(coef)-1
|
|
104
|
+
@param[in] xmin lower bound of the search interval
|
|
105
|
+
@param[in] xmax upper bound of the search interval
|
|
106
|
+
@return Tuple (n, R) where
|
|
107
|
+
n number of roots found in [xmin, xmax]
|
|
108
|
+
R degree-length vector whose first n entries are the roots (ascending); the
|
|
109
|
+
remaining entries are NaN
|
|
110
|
+
"""
|
|
111
|
+
|
|
112
|
+
def spline_eytzinger_aabb(P: Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), writable=False)], C: Annotated[ArrayLike, dict(dtype='int64', shape=(None, None), writable=False)]) -> tuple[Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='float64', shape=(None, None), order='C')], Annotated[ArrayLike, dict(dtype='int64', shape=(None), order='C')]]:
|
|
113
|
+
"""
|
|
114
|
+
Compute an Eytzinger-layout AABB tree for a spline of cubic Bézier curves.
|
|
115
|
+
|
|
116
|
+
@param[in] P #P by dim matrix of spline control points
|
|
117
|
+
@param[in] C #C by 4 matrix of indices into P defining the cubic Bézier curves
|
|
118
|
+
@return Tuple (B1, B2, leaf) where
|
|
119
|
+
B1 #B by dim matrix of AABB min box corners
|
|
120
|
+
B2 #B by dim matrix of AABB max box corners
|
|
121
|
+
leaf #B vector of AABB leaf node indices/flags
|
|
122
|
+
"""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .pyigl_predicates import *
|
|
Binary file
|