@smake/eigen 1.0.2 → 1.1.1
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.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -21
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +235 -326
- package/eigen/Eigen/Eigenvalues +16 -14
- package/eigen/Eigen/Geometry +21 -24
- package/eigen/Eigen/Householder +9 -8
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -14
- package/eigen/Eigen/KLUSupport +43 -0
- package/eigen/Eigen/LU +16 -20
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -54
- package/eigen/Eigen/PaStiXSupport +23 -20
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -21
- package/eigen/Eigen/QtAlignedMalloc +5 -13
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -18
- package/eigen/Eigen/Sparse +1 -4
- package/eigen/Eigen/SparseCholesky +18 -23
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +12 -8
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
- package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
- package/eigen/Eigen/src/Core/Array.h +341 -294
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
- package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
- package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
- package/eigen/Eigen/src/Core/Block.h +375 -398
- package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
- package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
- package/eigen/Eigen/src/Core/DenseBase.h +632 -571
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
- package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +169 -210
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +172 -222
- package/eigen/Eigen/src/Core/EigenBase.h +75 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
- package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
- package/eigen/Eigen/src/Core/IO.h +147 -139
- package/eigen/Eigen/src/Core/IndexedView.h +321 -0
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +56 -66
- package/eigen/Eigen/src/Core/Map.h +124 -142
- package/eigen/Eigen/src/Core/MapBase.h +256 -281
- package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
- package/eigen/Eigen/src/Core/Matrix.h +491 -416
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
- package/eigen/Eigen/src/Core/NestByValue.h +66 -85
- package/eigen/Eigen/src/Core/NoAlias.h +79 -85
- package/eigen/Eigen/src/Core/NumTraits.h +235 -148
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
- package/eigen/Eigen/src/Core/Product.h +260 -139
- package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
- package/eigen/Eigen/src/Core/Random.h +161 -136
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +366 -336
- package/eigen/Eigen/src/Core/Ref.h +308 -209
- package/eigen/Eigen/src/Core/Replicate.h +94 -106
- package/eigen/Eigen/src/Core/Reshaped.h +398 -0
- package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
- package/eigen/Eigen/src/Core/Reverse.h +136 -145
- package/eigen/Eigen/src/Core/Select.h +70 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +97 -111
- package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
- package/eigen/Eigen/src/Core/SolverBase.h +138 -101
- package/eigen/Eigen/src/Core/StableNorm.h +156 -160
- package/eigen/Eigen/src/Core/StlIterators.h +619 -0
- package/eigen/Eigen/src/Core/Stride.h +91 -88
- package/eigen/Eigen/src/Core/Swap.h +70 -38
- package/eigen/Eigen/src/Core/Transpose.h +295 -273
- package/eigen/Eigen/src/Core/Transpositions.h +272 -317
- package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
- package/eigen/Eigen/src/Core/Visitor.h +480 -216
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- package/eigen/Eigen/src/Core/util/Constants.h +314 -263
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
- package/eigen/Eigen/src/Core/util/Macros.h +939 -646
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
- package/eigen/Eigen/src/Core/util/Meta.h +618 -426
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
- package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
- package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
- package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
- package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
- package/eigen/Eigen/src/Geometry/Transform.h +896 -953
- package/eigen/Eigen/src/Geometry/Translation.h +100 -98
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
- package/eigen/Eigen/src/Householder/Householder.h +104 -122
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- package/eigen/Eigen/src/LU/Determinant.h +60 -63
- package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
- package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
- package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
- package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/lib/LibEigen.d.ts +4 -0
- package/lib/LibEigen.js +14 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +7 -3
- package/package.json +2 -10
- package/eigen/Eigen/CMakeLists.txt +0 -19
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
- package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
- package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
- package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
- package/lib/eigen.d.ts +0 -2
- package/lib/eigen.js +0 -15
|
@@ -7,82 +7,128 @@
|
|
|
7
7
|
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
8
8
|
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
9
9
|
|
|
10
|
+
// Function void Eigen::AlignedBox::transform(const Transform& transform)
|
|
11
|
+
// is provided under the following license agreement:
|
|
12
|
+
//
|
|
13
|
+
// Software License Agreement (BSD License)
|
|
14
|
+
//
|
|
15
|
+
// Copyright (c) 2011-2014, Willow Garage, Inc.
|
|
16
|
+
// Copyright (c) 2014-2015, Open Source Robotics Foundation
|
|
17
|
+
// All rights reserved.
|
|
18
|
+
//
|
|
19
|
+
// Redistribution and use in source and binary forms, with or without
|
|
20
|
+
// modification, are permitted provided that the following conditions
|
|
21
|
+
// are met:
|
|
22
|
+
//
|
|
23
|
+
// * Redistributions of source code must retain the above copyright
|
|
24
|
+
// notice, this list of conditions and the following disclaimer.
|
|
25
|
+
// * Redistributions in binary form must reproduce the above
|
|
26
|
+
// copyright notice, this list of conditions and the following
|
|
27
|
+
// disclaimer in the documentation and/or other materials provided
|
|
28
|
+
// with the distribution.
|
|
29
|
+
// * Neither the name of Open Source Robotics Foundation nor the names of its
|
|
30
|
+
// contributors may be used to endorse or promote products derived
|
|
31
|
+
// from this software without specific prior written permission.
|
|
32
|
+
//
|
|
33
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
34
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
35
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
36
|
+
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
37
|
+
// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
38
|
+
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
39
|
+
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
40
|
+
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
41
|
+
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
42
|
+
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
43
|
+
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
44
|
+
// POSSIBILITY OF SUCH DAMAGE.
|
|
45
|
+
|
|
10
46
|
#ifndef EIGEN_ALIGNEDBOX_H
|
|
11
47
|
#define EIGEN_ALIGNEDBOX_H
|
|
12
48
|
|
|
13
|
-
|
|
49
|
+
// IWYU pragma: private
|
|
50
|
+
#include "./InternalHeaderCheck.h"
|
|
51
|
+
|
|
52
|
+
namespace Eigen {
|
|
14
53
|
|
|
15
54
|
/** \geometry_module \ingroup Geometry_Module
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
template <typename
|
|
30
|
-
class AlignedBox
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
typedef
|
|
36
|
-
typedef
|
|
37
|
-
typedef
|
|
38
|
-
typedef typename ScalarTraits::
|
|
39
|
-
typedef
|
|
40
|
-
typedef Matrix<Scalar,AmbientDimAtCompileTime,1> VectorType;
|
|
55
|
+
*
|
|
56
|
+
*
|
|
57
|
+
* \class AlignedBox
|
|
58
|
+
*
|
|
59
|
+
* \brief An axis aligned box
|
|
60
|
+
*
|
|
61
|
+
* \tparam Scalar_ the type of the scalar coefficients
|
|
62
|
+
* \tparam AmbientDim_ the dimension of the ambient space, can be a compile time value or Dynamic.
|
|
63
|
+
*
|
|
64
|
+
* This class represents an axis aligned box as a pair of the minimal and maximal corners.
|
|
65
|
+
* \warning The result of most methods is undefined when applied to an empty box. You can check for empty boxes using
|
|
66
|
+
* isEmpty(). \sa alignedboxtypedefs
|
|
67
|
+
*/
|
|
68
|
+
template <typename Scalar_, int AmbientDim_>
|
|
69
|
+
class AlignedBox {
|
|
70
|
+
public:
|
|
71
|
+
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(Scalar_, AmbientDim_)
|
|
72
|
+
enum { AmbientDimAtCompileTime = AmbientDim_ };
|
|
73
|
+
typedef Scalar_ Scalar;
|
|
74
|
+
typedef NumTraits<Scalar> ScalarTraits;
|
|
75
|
+
typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
|
|
76
|
+
typedef typename ScalarTraits::Real RealScalar;
|
|
77
|
+
typedef typename ScalarTraits::NonInteger NonInteger;
|
|
78
|
+
typedef Matrix<Scalar, AmbientDimAtCompileTime, 1> VectorType;
|
|
41
79
|
typedef CwiseBinaryOp<internal::scalar_sum_op<Scalar>, const VectorType, const VectorType> VectorTypeSum;
|
|
42
80
|
|
|
43
81
|
/** Define constants to name the corners of a 1D, 2D or 3D axis aligned bounding box */
|
|
44
|
-
enum CornerType
|
|
45
|
-
{
|
|
82
|
+
enum CornerType {
|
|
46
83
|
/** 1D names @{ */
|
|
47
|
-
Min=0,
|
|
84
|
+
Min = 0,
|
|
85
|
+
Max = 1,
|
|
48
86
|
/** @} */
|
|
49
87
|
|
|
50
88
|
/** Identifier for 2D corner @{ */
|
|
51
|
-
BottomLeft=0,
|
|
52
|
-
|
|
89
|
+
BottomLeft = 0,
|
|
90
|
+
BottomRight = 1,
|
|
91
|
+
TopLeft = 2,
|
|
92
|
+
TopRight = 3,
|
|
53
93
|
/** @} */
|
|
54
94
|
|
|
55
95
|
/** Identifier for 3D corner @{ */
|
|
56
|
-
BottomLeftFloor=0,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
96
|
+
BottomLeftFloor = 0,
|
|
97
|
+
BottomRightFloor = 1,
|
|
98
|
+
TopLeftFloor = 2,
|
|
99
|
+
TopRightFloor = 3,
|
|
100
|
+
BottomLeftCeil = 4,
|
|
101
|
+
BottomRightCeil = 5,
|
|
102
|
+
TopLeftCeil = 6,
|
|
103
|
+
TopRightCeil = 7
|
|
60
104
|
/** @} */
|
|
61
105
|
};
|
|
62
106
|
|
|
63
|
-
|
|
64
107
|
/** Default constructor initializing a null box. */
|
|
65
|
-
EIGEN_DEVICE_FUNC inline AlignedBox()
|
|
66
|
-
|
|
108
|
+
EIGEN_DEVICE_FUNC inline AlignedBox() {
|
|
109
|
+
if (EIGEN_CONST_CONDITIONAL(AmbientDimAtCompileTime != Dynamic)) setEmpty();
|
|
110
|
+
}
|
|
67
111
|
|
|
68
112
|
/** Constructs a null box with \a _dim the dimension of the ambient space. */
|
|
69
|
-
EIGEN_DEVICE_FUNC inline explicit AlignedBox(Index _dim) : m_min(_dim), m_max(_dim)
|
|
70
|
-
{ setEmpty(); }
|
|
113
|
+
EIGEN_DEVICE_FUNC inline explicit AlignedBox(Index _dim) : m_min(_dim), m_max(_dim) { setEmpty(); }
|
|
71
114
|
|
|
72
115
|
/** Constructs a box with extremities \a _min and \a _max.
|
|
73
|
-
* \warning If either component of \a _min is larger than the same component of \a _max, the constructed box is empty.
|
|
74
|
-
|
|
75
|
-
|
|
116
|
+
* \warning If either component of \a _min is larger than the same component of \a _max, the constructed box is empty.
|
|
117
|
+
*/
|
|
118
|
+
template <typename OtherVectorType1, typename OtherVectorType2>
|
|
119
|
+
EIGEN_DEVICE_FUNC inline AlignedBox(const OtherVectorType1& _min, const OtherVectorType2& _max)
|
|
120
|
+
: m_min(_min), m_max(_max) {}
|
|
76
121
|
|
|
77
122
|
/** Constructs a box containing a single point \a p. */
|
|
78
|
-
template<typename Derived>
|
|
79
|
-
EIGEN_DEVICE_FUNC inline explicit AlignedBox(const MatrixBase<Derived>& p) : m_min(p), m_max(m_min)
|
|
80
|
-
{ }
|
|
123
|
+
template <typename Derived>
|
|
124
|
+
EIGEN_DEVICE_FUNC inline explicit AlignedBox(const MatrixBase<Derived>& p) : m_min(p), m_max(m_min) {}
|
|
81
125
|
|
|
82
126
|
EIGEN_DEVICE_FUNC ~AlignedBox() {}
|
|
83
127
|
|
|
84
128
|
/** \returns the dimension in which the box holds */
|
|
85
|
-
EIGEN_DEVICE_FUNC inline Index dim() const {
|
|
129
|
+
EIGEN_DEVICE_FUNC inline Index dim() const {
|
|
130
|
+
return AmbientDimAtCompileTime == Dynamic ? m_min.size() : Index(AmbientDimAtCompileTime);
|
|
131
|
+
}
|
|
86
132
|
|
|
87
133
|
/** \deprecated use isEmpty() */
|
|
88
134
|
EIGEN_DEVICE_FUNC inline bool isNull() const { return isEmpty(); }
|
|
@@ -96,64 +142,69 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
|
96
142
|
|
|
97
143
|
/** Makes \c *this an empty box.
|
|
98
144
|
* \sa isEmpty */
|
|
99
|
-
EIGEN_DEVICE_FUNC inline void setEmpty()
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
m_max.setConstant( ScalarTraits::lowest() );
|
|
145
|
+
EIGEN_DEVICE_FUNC inline void setEmpty() {
|
|
146
|
+
m_min.setConstant(ScalarTraits::highest());
|
|
147
|
+
m_max.setConstant(ScalarTraits::lowest());
|
|
103
148
|
}
|
|
104
149
|
|
|
105
150
|
/** \returns the minimal corner */
|
|
106
|
-
EIGEN_DEVICE_FUNC inline const VectorType&
|
|
151
|
+
EIGEN_DEVICE_FUNC inline const VectorType&(min)() const { return m_min; }
|
|
107
152
|
/** \returns a non const reference to the minimal corner */
|
|
108
|
-
EIGEN_DEVICE_FUNC inline VectorType&
|
|
153
|
+
EIGEN_DEVICE_FUNC inline VectorType&(min)() { return m_min; }
|
|
109
154
|
/** \returns the maximal corner */
|
|
110
|
-
EIGEN_DEVICE_FUNC inline const VectorType&
|
|
155
|
+
EIGEN_DEVICE_FUNC inline const VectorType&(max)() const { return m_max; }
|
|
111
156
|
/** \returns a non const reference to the maximal corner */
|
|
112
|
-
EIGEN_DEVICE_FUNC inline VectorType&
|
|
157
|
+
EIGEN_DEVICE_FUNC inline VectorType&(max)() { return m_max; }
|
|
113
158
|
|
|
114
159
|
/** \returns the center of the box */
|
|
115
160
|
EIGEN_DEVICE_FUNC inline const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(VectorTypeSum, RealScalar, quotient)
|
|
116
|
-
|
|
117
|
-
|
|
161
|
+
center() const {
|
|
162
|
+
return (m_min + m_max) / RealScalar(2);
|
|
163
|
+
}
|
|
118
164
|
|
|
119
165
|
/** \returns the lengths of the sides of the bounding box.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
EIGEN_DEVICE_FUNC inline const CwiseBinaryOp<
|
|
124
|
-
|
|
166
|
+
* Note that this function does not get the same
|
|
167
|
+
* result for integral or floating scalar types: see
|
|
168
|
+
*/
|
|
169
|
+
EIGEN_DEVICE_FUNC inline const CwiseBinaryOp<internal::scalar_difference_op<Scalar, Scalar>, const VectorType,
|
|
170
|
+
const VectorType>
|
|
171
|
+
sizes() const {
|
|
172
|
+
return m_max - m_min;
|
|
173
|
+
}
|
|
125
174
|
|
|
126
175
|
/** \returns the volume of the bounding box */
|
|
127
|
-
EIGEN_DEVICE_FUNC inline Scalar volume() const
|
|
128
|
-
{ return sizes().prod(); }
|
|
176
|
+
EIGEN_DEVICE_FUNC inline Scalar volume() const { return isEmpty() ? Scalar(0) : sizes().prod(); }
|
|
129
177
|
|
|
130
178
|
/** \returns an expression for the bounding box diagonal vector
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
EIGEN_DEVICE_FUNC inline CwiseBinaryOp<
|
|
135
|
-
|
|
179
|
+
* if the length of the diagonal is needed: diagonal().norm()
|
|
180
|
+
* will provide it.
|
|
181
|
+
*/
|
|
182
|
+
EIGEN_DEVICE_FUNC inline CwiseBinaryOp<internal::scalar_difference_op<Scalar, Scalar>, const VectorType,
|
|
183
|
+
const VectorType>
|
|
184
|
+
diagonal() const {
|
|
185
|
+
return sizes();
|
|
186
|
+
}
|
|
136
187
|
|
|
137
188
|
/** \returns the vertex of the bounding box at the corner defined by
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
EIGEN_DEVICE_FUNC inline VectorType corner(CornerType corner) const
|
|
147
|
-
|
|
148
|
-
EIGEN_STATIC_ASSERT(_AmbientDim <= 3, THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE);
|
|
189
|
+
* the corner-id corner. It works only for a 1D, 2D or 3D bounding box.
|
|
190
|
+
* For 1D bounding boxes corners are named by 2 enum constants:
|
|
191
|
+
* BottomLeft and BottomRight.
|
|
192
|
+
* For 2D bounding boxes, corners are named by 4 enum constants:
|
|
193
|
+
* BottomLeft, BottomRight, TopLeft, TopRight.
|
|
194
|
+
* For 3D bounding boxes, the following names are added:
|
|
195
|
+
* BottomLeftCeil, BottomRightCeil, TopLeftCeil, TopRightCeil.
|
|
196
|
+
*/
|
|
197
|
+
EIGEN_DEVICE_FUNC inline VectorType corner(CornerType corner) const {
|
|
198
|
+
EIGEN_STATIC_ASSERT(AmbientDim_ <= 3, THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE);
|
|
149
199
|
|
|
150
200
|
VectorType res;
|
|
151
201
|
|
|
152
202
|
Index mult = 1;
|
|
153
|
-
for(Index d=0; d<dim(); ++d)
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
else
|
|
203
|
+
for (Index d = 0; d < dim(); ++d) {
|
|
204
|
+
if (mult & corner)
|
|
205
|
+
res[d] = m_max[d];
|
|
206
|
+
else
|
|
207
|
+
res[d] = m_min[d];
|
|
157
208
|
mult *= 2;
|
|
158
209
|
}
|
|
159
210
|
return res;
|
|
@@ -161,45 +212,40 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
|
161
212
|
|
|
162
213
|
/** \returns a random point inside the bounding box sampled with
|
|
163
214
|
* a uniform distribution */
|
|
164
|
-
EIGEN_DEVICE_FUNC inline VectorType sample() const
|
|
165
|
-
{
|
|
215
|
+
EIGEN_DEVICE_FUNC inline VectorType sample() const {
|
|
166
216
|
VectorType r(dim());
|
|
167
|
-
for(Index d=0; d<dim(); ++d)
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
r[d] = m_min[d] + (m_max[d]-m_min[d])
|
|
172
|
-
* internal::random<Scalar>(Scalar(0), Scalar(1));
|
|
173
|
-
}
|
|
174
|
-
else
|
|
217
|
+
for (Index d = 0; d < dim(); ++d) {
|
|
218
|
+
if (!ScalarTraits::IsInteger) {
|
|
219
|
+
r[d] = m_min[d] + (m_max[d] - m_min[d]) * internal::random<Scalar>(Scalar(0), Scalar(1));
|
|
220
|
+
} else
|
|
175
221
|
r[d] = internal::random(m_min[d], m_max[d]);
|
|
176
222
|
}
|
|
177
223
|
return r;
|
|
178
224
|
}
|
|
179
225
|
|
|
180
226
|
/** \returns true if the point \a p is inside the box \c *this. */
|
|
181
|
-
template<typename Derived>
|
|
182
|
-
EIGEN_DEVICE_FUNC inline bool contains(const MatrixBase<Derived>& p) const
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
return (m_min.array()<=p_n.array()).all() && (p_n.array()<=m_max.array()).all();
|
|
227
|
+
template <typename Derived>
|
|
228
|
+
EIGEN_DEVICE_FUNC inline bool contains(const MatrixBase<Derived>& p) const {
|
|
229
|
+
typename internal::nested_eval<Derived, 2>::type p_n(p.derived());
|
|
230
|
+
return (m_min.array() <= p_n.array()).all() && (p_n.array() <= m_max.array()).all();
|
|
186
231
|
}
|
|
187
232
|
|
|
188
233
|
/** \returns true if the box \a b is entirely inside the box \c *this. */
|
|
189
|
-
EIGEN_DEVICE_FUNC inline bool contains(const AlignedBox& b) const
|
|
190
|
-
|
|
234
|
+
EIGEN_DEVICE_FUNC inline bool contains(const AlignedBox& b) const {
|
|
235
|
+
return (m_min.array() <= (b.min)().array()).all() && ((b.max)().array() <= m_max.array()).all();
|
|
236
|
+
}
|
|
191
237
|
|
|
192
238
|
/** \returns true if the box \a b is intersecting the box \c *this.
|
|
193
239
|
* \sa intersection, clamp */
|
|
194
|
-
EIGEN_DEVICE_FUNC inline bool intersects(const AlignedBox& b) const
|
|
195
|
-
|
|
240
|
+
EIGEN_DEVICE_FUNC inline bool intersects(const AlignedBox& b) const {
|
|
241
|
+
return (m_min.array() <= (b.max)().array()).all() && ((b.min)().array() <= m_max.array()).all();
|
|
242
|
+
}
|
|
196
243
|
|
|
197
244
|
/** Extends \c *this such that it contains the point \a p and returns a reference to \c *this.
|
|
198
245
|
* \sa extend(const AlignedBox&) */
|
|
199
|
-
template<typename Derived>
|
|
200
|
-
EIGEN_DEVICE_FUNC inline AlignedBox& extend(const MatrixBase<Derived>& p)
|
|
201
|
-
|
|
202
|
-
typename internal::nested_eval<Derived,2>::type p_n(p.derived());
|
|
246
|
+
template <typename Derived>
|
|
247
|
+
EIGEN_DEVICE_FUNC inline AlignedBox& extend(const MatrixBase<Derived>& p) {
|
|
248
|
+
typename internal::nested_eval<Derived, 2>::type p_n(p.derived());
|
|
203
249
|
m_min = m_min.cwiseMin(p_n);
|
|
204
250
|
m_max = m_max.cwiseMax(p_n);
|
|
205
251
|
return *this;
|
|
@@ -207,8 +253,7 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
|
207
253
|
|
|
208
254
|
/** Extends \c *this such that it contains the box \a b and returns a reference to \c *this.
|
|
209
255
|
* \sa merged, extend(const MatrixBase&) */
|
|
210
|
-
EIGEN_DEVICE_FUNC inline AlignedBox& extend(const AlignedBox& b)
|
|
211
|
-
{
|
|
256
|
+
EIGEN_DEVICE_FUNC inline AlignedBox& extend(const AlignedBox& b) {
|
|
212
257
|
m_min = m_min.cwiseMin(b.m_min);
|
|
213
258
|
m_max = m_max.cwiseMax(b.m_max);
|
|
214
259
|
return *this;
|
|
@@ -217,8 +262,7 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
|
217
262
|
/** Clamps \c *this by the box \a b and returns a reference to \c *this.
|
|
218
263
|
* \note If the boxes don't intersect, the resulting box is empty.
|
|
219
264
|
* \sa intersection(), intersects() */
|
|
220
|
-
EIGEN_DEVICE_FUNC inline AlignedBox& clamp(const AlignedBox& b)
|
|
221
|
-
{
|
|
265
|
+
EIGEN_DEVICE_FUNC inline AlignedBox& clamp(const AlignedBox& b) {
|
|
222
266
|
m_min = m_min.cwiseMax(b.m_min);
|
|
223
267
|
m_max = m_max.cwiseMin(b.m_max);
|
|
224
268
|
return *this;
|
|
@@ -227,166 +271,215 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
|
227
271
|
/** Returns an AlignedBox that is the intersection of \a b and \c *this
|
|
228
272
|
* \note If the boxes don't intersect, the resulting box is empty.
|
|
229
273
|
* \sa intersects(), clamp, contains() */
|
|
230
|
-
EIGEN_DEVICE_FUNC inline AlignedBox intersection(const AlignedBox& b) const
|
|
231
|
-
|
|
274
|
+
EIGEN_DEVICE_FUNC inline AlignedBox intersection(const AlignedBox& b) const {
|
|
275
|
+
return AlignedBox(m_min.cwiseMax(b.m_min), m_max.cwiseMin(b.m_max));
|
|
276
|
+
}
|
|
232
277
|
|
|
233
278
|
/** Returns an AlignedBox that is the union of \a b and \c *this.
|
|
234
|
-
* \note Merging with an empty box may result in a box bigger than \c *this.
|
|
279
|
+
* \note Merging with an empty box may result in a box bigger than \c *this.
|
|
235
280
|
* \sa extend(const AlignedBox&) */
|
|
236
|
-
EIGEN_DEVICE_FUNC inline AlignedBox merged(const AlignedBox& b) const
|
|
237
|
-
|
|
281
|
+
EIGEN_DEVICE_FUNC inline AlignedBox merged(const AlignedBox& b) const {
|
|
282
|
+
return AlignedBox(m_min.cwiseMin(b.m_min), m_max.cwiseMax(b.m_max));
|
|
283
|
+
}
|
|
238
284
|
|
|
239
285
|
/** Translate \c *this by the vector \a t and returns a reference to \c *this. */
|
|
240
|
-
template<typename Derived>
|
|
241
|
-
EIGEN_DEVICE_FUNC inline AlignedBox& translate(const MatrixBase<Derived>& a_t)
|
|
242
|
-
|
|
243
|
-
const typename internal::nested_eval<Derived,2>::type t(a_t.derived());
|
|
286
|
+
template <typename Derived>
|
|
287
|
+
EIGEN_DEVICE_FUNC inline AlignedBox& translate(const MatrixBase<Derived>& a_t) {
|
|
288
|
+
const typename internal::nested_eval<Derived, 2>::type t(a_t.derived());
|
|
244
289
|
m_min += t;
|
|
245
290
|
m_max += t;
|
|
246
291
|
return *this;
|
|
247
292
|
}
|
|
248
293
|
|
|
294
|
+
/** \returns a copy of \c *this translated by the vector \a t. */
|
|
295
|
+
template <typename Derived>
|
|
296
|
+
EIGEN_DEVICE_FUNC inline AlignedBox translated(const MatrixBase<Derived>& a_t) const {
|
|
297
|
+
AlignedBox result(m_min, m_max);
|
|
298
|
+
result.translate(a_t);
|
|
299
|
+
return result;
|
|
300
|
+
}
|
|
301
|
+
|
|
249
302
|
/** \returns the squared distance between the point \a p and the box \c *this,
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
template<typename Derived>
|
|
303
|
+
* and zero if \a p is inside the box.
|
|
304
|
+
* \sa exteriorDistance(const MatrixBase&), squaredExteriorDistance(const AlignedBox&)
|
|
305
|
+
*/
|
|
306
|
+
template <typename Derived>
|
|
254
307
|
EIGEN_DEVICE_FUNC inline Scalar squaredExteriorDistance(const MatrixBase<Derived>& p) const;
|
|
255
308
|
|
|
256
309
|
/** \returns the squared distance between the boxes \a b and \c *this,
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
310
|
+
* and zero if the boxes intersect.
|
|
311
|
+
* \sa exteriorDistance(const AlignedBox&), squaredExteriorDistance(const MatrixBase&)
|
|
312
|
+
*/
|
|
260
313
|
EIGEN_DEVICE_FUNC inline Scalar squaredExteriorDistance(const AlignedBox& b) const;
|
|
261
314
|
|
|
262
315
|
/** \returns the distance between the point \a p and the box \c *this,
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
template<typename Derived>
|
|
267
|
-
EIGEN_DEVICE_FUNC inline NonInteger exteriorDistance(const MatrixBase<Derived>& p) const
|
|
268
|
-
|
|
316
|
+
* and zero if \a p is inside the box.
|
|
317
|
+
* \sa squaredExteriorDistance(const MatrixBase&), exteriorDistance(const AlignedBox&)
|
|
318
|
+
*/
|
|
319
|
+
template <typename Derived>
|
|
320
|
+
EIGEN_DEVICE_FUNC inline NonInteger exteriorDistance(const MatrixBase<Derived>& p) const {
|
|
321
|
+
EIGEN_USING_STD(sqrt) return sqrt(NonInteger(squaredExteriorDistance(p)));
|
|
322
|
+
}
|
|
269
323
|
|
|
270
324
|
/** \returns the distance between the boxes \a b and \c *this,
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
EIGEN_DEVICE_FUNC inline NonInteger exteriorDistance(const AlignedBox& b) const
|
|
275
|
-
|
|
325
|
+
* and zero if the boxes intersect.
|
|
326
|
+
* \sa squaredExteriorDistance(const AlignedBox&), exteriorDistance(const MatrixBase&)
|
|
327
|
+
*/
|
|
328
|
+
EIGEN_DEVICE_FUNC inline NonInteger exteriorDistance(const AlignedBox& b) const {
|
|
329
|
+
EIGEN_USING_STD(sqrt) return sqrt(NonInteger(squaredExteriorDistance(b)));
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Specialization of transform for pure translation.
|
|
334
|
+
*/
|
|
335
|
+
template <int Mode, int Options>
|
|
336
|
+
EIGEN_DEVICE_FUNC inline void transform(
|
|
337
|
+
const typename Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>::TranslationType& translation) {
|
|
338
|
+
this->translate(translation);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Transforms this box by \a transform and recomputes it to
|
|
343
|
+
* still be an axis-aligned box.
|
|
344
|
+
*
|
|
345
|
+
* \note This method is provided under BSD license (see the top of this file).
|
|
346
|
+
*/
|
|
347
|
+
template <int Mode, int Options>
|
|
348
|
+
EIGEN_DEVICE_FUNC inline void transform(const Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>& transform) {
|
|
349
|
+
// Only Affine and Isometry transforms are currently supported.
|
|
350
|
+
EIGEN_STATIC_ASSERT(Mode == Affine || Mode == AffineCompact || Mode == Isometry,
|
|
351
|
+
THIS_METHOD_IS_ONLY_FOR_SPECIFIC_TRANSFORMATIONS);
|
|
352
|
+
|
|
353
|
+
// Method adapted from FCL src/shape/geometric_shapes_utility.cpp#computeBV<AABB, Box>(...)
|
|
354
|
+
// https://github.com/flexible-collision-library/fcl/blob/fcl-0.4/src/shape/geometric_shapes_utility.cpp#L292
|
|
355
|
+
//
|
|
356
|
+
// Here's a nice explanation why it works: https://zeuxcg.org/2010/10/17/aabb-from-obb-with-component-wise-abs/
|
|
357
|
+
|
|
358
|
+
// two times rotated extent
|
|
359
|
+
const VectorType rotated_extent_2 = transform.linear().cwiseAbs() * sizes();
|
|
360
|
+
// two times new center
|
|
361
|
+
const VectorType rotated_center_2 =
|
|
362
|
+
transform.linear() * (this->m_max + this->m_min) + Scalar(2) * transform.translation();
|
|
363
|
+
|
|
364
|
+
this->m_max = (rotated_center_2 + rotated_extent_2) / Scalar(2);
|
|
365
|
+
this->m_min = (rotated_center_2 - rotated_extent_2) / Scalar(2);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* \returns a copy of \c *this transformed by \a transform and recomputed to
|
|
370
|
+
* still be an axis-aligned box.
|
|
371
|
+
*/
|
|
372
|
+
template <int Mode, int Options>
|
|
373
|
+
EIGEN_DEVICE_FUNC AlignedBox
|
|
374
|
+
transformed(const Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>& transform) const {
|
|
375
|
+
AlignedBox result(m_min, m_max);
|
|
376
|
+
result.transform(transform);
|
|
377
|
+
return result;
|
|
378
|
+
}
|
|
276
379
|
|
|
277
380
|
/** \returns \c *this with scalar type casted to \a NewScalarType
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
template<typename NewScalarType>
|
|
283
|
-
EIGEN_DEVICE_FUNC inline
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
return typename internal::cast_return_type<AlignedBox,
|
|
287
|
-
|
|
381
|
+
*
|
|
382
|
+
* Note that if \a NewScalarType is equal to the current scalar type of \c *this
|
|
383
|
+
* then this function smartly returns a const reference to \c *this.
|
|
384
|
+
*/
|
|
385
|
+
template <typename NewScalarType>
|
|
386
|
+
EIGEN_DEVICE_FUNC inline
|
|
387
|
+
typename internal::cast_return_type<AlignedBox, AlignedBox<NewScalarType, AmbientDimAtCompileTime> >::type
|
|
388
|
+
cast() const {
|
|
389
|
+
return typename internal::cast_return_type<AlignedBox, AlignedBox<NewScalarType, AmbientDimAtCompileTime> >::type(
|
|
390
|
+
*this);
|
|
288
391
|
}
|
|
289
392
|
|
|
290
393
|
/** Copy constructor with scalar type conversion */
|
|
291
|
-
template<typename OtherScalarType>
|
|
292
|
-
EIGEN_DEVICE_FUNC inline explicit AlignedBox(const AlignedBox<OtherScalarType,AmbientDimAtCompileTime>& other)
|
|
293
|
-
{
|
|
394
|
+
template <typename OtherScalarType>
|
|
395
|
+
EIGEN_DEVICE_FUNC inline explicit AlignedBox(const AlignedBox<OtherScalarType, AmbientDimAtCompileTime>& other) {
|
|
294
396
|
m_min = (other.min)().template cast<Scalar>();
|
|
295
397
|
m_max = (other.max)().template cast<Scalar>();
|
|
296
398
|
}
|
|
297
399
|
|
|
298
400
|
/** \returns \c true if \c *this is approximately equal to \a other, within the precision
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
EIGEN_DEVICE_FUNC bool isApprox(const AlignedBox& other,
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
401
|
+
* determined by \a prec.
|
|
402
|
+
*
|
|
403
|
+
* \sa MatrixBase::isApprox() */
|
|
404
|
+
EIGEN_DEVICE_FUNC bool isApprox(const AlignedBox& other,
|
|
405
|
+
const RealScalar& prec = ScalarTraits::dummy_precision()) const {
|
|
406
|
+
return m_min.isApprox(other.m_min, prec) && m_max.isApprox(other.m_max, prec);
|
|
407
|
+
}
|
|
306
408
|
|
|
409
|
+
protected:
|
|
307
410
|
VectorType m_min, m_max;
|
|
308
411
|
};
|
|
309
412
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
{
|
|
316
|
-
typename internal::nested_eval<Derived,2*AmbientDim>::type p(a_p.derived());
|
|
413
|
+
template <typename Scalar, int AmbientDim>
|
|
414
|
+
template <typename Derived>
|
|
415
|
+
EIGEN_DEVICE_FUNC inline Scalar AlignedBox<Scalar, AmbientDim>::squaredExteriorDistance(
|
|
416
|
+
const MatrixBase<Derived>& a_p) const {
|
|
417
|
+
typename internal::nested_eval<Derived, 2 * AmbientDim>::type p(a_p.derived());
|
|
317
418
|
Scalar dist2(0);
|
|
318
419
|
Scalar aux;
|
|
319
|
-
for (Index k=0; k<dim(); ++k)
|
|
320
|
-
|
|
321
|
-
if( m_min[k] > p[k] )
|
|
322
|
-
{
|
|
420
|
+
for (Index k = 0; k < dim(); ++k) {
|
|
421
|
+
if (m_min[k] > p[k]) {
|
|
323
422
|
aux = m_min[k] - p[k];
|
|
324
|
-
dist2 += aux*aux;
|
|
325
|
-
}
|
|
326
|
-
else if( p[k] > m_max[k] )
|
|
327
|
-
{
|
|
423
|
+
dist2 += aux * aux;
|
|
424
|
+
} else if (p[k] > m_max[k]) {
|
|
328
425
|
aux = p[k] - m_max[k];
|
|
329
|
-
dist2 += aux*aux;
|
|
426
|
+
dist2 += aux * aux;
|
|
330
427
|
}
|
|
331
428
|
}
|
|
332
429
|
return dist2;
|
|
333
430
|
}
|
|
334
431
|
|
|
335
|
-
template<typename Scalar,int AmbientDim>
|
|
336
|
-
EIGEN_DEVICE_FUNC inline Scalar AlignedBox<Scalar,AmbientDim>::squaredExteriorDistance(const AlignedBox& b) const
|
|
337
|
-
{
|
|
432
|
+
template <typename Scalar, int AmbientDim>
|
|
433
|
+
EIGEN_DEVICE_FUNC inline Scalar AlignedBox<Scalar, AmbientDim>::squaredExteriorDistance(const AlignedBox& b) const {
|
|
338
434
|
Scalar dist2(0);
|
|
339
435
|
Scalar aux;
|
|
340
|
-
for (Index k=0; k<dim(); ++k)
|
|
341
|
-
|
|
342
|
-
if( m_min[k] > b.m_max[k] )
|
|
343
|
-
{
|
|
436
|
+
for (Index k = 0; k < dim(); ++k) {
|
|
437
|
+
if (m_min[k] > b.m_max[k]) {
|
|
344
438
|
aux = m_min[k] - b.m_max[k];
|
|
345
|
-
dist2 += aux*aux;
|
|
346
|
-
}
|
|
347
|
-
else if( b.m_min[k] > m_max[k] )
|
|
348
|
-
{
|
|
439
|
+
dist2 += aux * aux;
|
|
440
|
+
} else if (b.m_min[k] > m_max[k]) {
|
|
349
441
|
aux = b.m_min[k] - m_max[k];
|
|
350
|
-
dist2 += aux*aux;
|
|
442
|
+
dist2 += aux * aux;
|
|
351
443
|
}
|
|
352
444
|
}
|
|
353
445
|
return dist2;
|
|
354
446
|
}
|
|
355
447
|
|
|
356
448
|
/** \defgroup alignedboxtypedefs Global aligned box typedefs
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
449
|
+
*
|
|
450
|
+
* \ingroup Geometry_Module
|
|
451
|
+
*
|
|
452
|
+
* Eigen defines several typedef shortcuts for most common aligned box types.
|
|
453
|
+
*
|
|
454
|
+
* The general patterns are the following:
|
|
455
|
+
*
|
|
456
|
+
* \c AlignedBoxSizeType where \c Size can be \c 1, \c 2,\c 3,\c 4 for fixed size boxes or \c X for dynamic size,
|
|
457
|
+
* and where \c Type can be \c i for integer, \c f for float, \c d for double.
|
|
458
|
+
*
|
|
459
|
+
* For example, \c AlignedBox3d is a fixed-size 3x3 aligned box type of doubles, and \c AlignedBoxXf is a dynamic-size
|
|
460
|
+
* aligned box of floats.
|
|
461
|
+
*
|
|
462
|
+
* \sa class AlignedBox
|
|
463
|
+
*/
|
|
464
|
+
|
|
465
|
+
#define EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix) \
|
|
466
|
+
/** \ingroup alignedboxtypedefs */ \
|
|
467
|
+
typedef AlignedBox<Type, Size> AlignedBox##SizeSuffix##TypeSuffix;
|
|
375
468
|
|
|
376
469
|
#define EIGEN_MAKE_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
|
|
377
|
-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 1, 1)
|
|
378
|
-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2)
|
|
379
|
-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3)
|
|
380
|
-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4)
|
|
381
|
-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Dynamic, X)
|
|
470
|
+
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 1, 1) \
|
|
471
|
+
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2) \
|
|
472
|
+
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3) \
|
|
473
|
+
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4) \
|
|
474
|
+
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Dynamic, X)
|
|
382
475
|
|
|
383
|
-
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(int,
|
|
384
|
-
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(float,
|
|
385
|
-
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(double,
|
|
476
|
+
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(int, i)
|
|
477
|
+
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(float, f)
|
|
478
|
+
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(double, d)
|
|
386
479
|
|
|
387
480
|
#undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES
|
|
388
481
|
#undef EIGEN_MAKE_TYPEDEFS
|
|
389
482
|
|
|
390
|
-
}
|
|
483
|
+
} // end namespace Eigen
|
|
391
484
|
|
|
392
|
-
#endif
|
|
485
|
+
#endif // EIGEN_ALIGNEDBOX_H
|