@smake/eigen 1.1.0 → 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 -20
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +187 -120
- package/eigen/Eigen/Eigenvalues +16 -13
- package/eigen/Eigen/Geometry +18 -18
- package/eigen/Eigen/Householder +9 -7
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -13
- package/eigen/Eigen/KLUSupport +23 -21
- package/eigen/Eigen/LU +15 -16
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -51
- package/eigen/Eigen/PaStiXSupport +23 -21
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -20
- package/eigen/Eigen/QtAlignedMalloc +5 -12
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -17
- package/eigen/Eigen/Sparse +1 -2
- package/eigen/Eigen/SparseCholesky +18 -15
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +9 -9
- 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 +366 -405
- package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
- package/eigen/Eigen/src/Core/Array.h +329 -370
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
- package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
- package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
- package/eigen/Eigen/src/Core/Block.h +371 -390
- package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
- package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
- package/eigen/Eigen/src/Core/DenseBase.h +630 -658
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
- package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +168 -207
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +167 -217
- package/eigen/Eigen/src/Core/EigenBase.h +74 -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 -113
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
- package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
- package/eigen/Eigen/src/Core/IO.h +131 -156
- package/eigen/Eigen/src/Core/IndexedView.h +209 -125
- 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 +50 -59
- package/eigen/Eigen/src/Core/Map.h +123 -141
- package/eigen/Eigen/src/Core/MapBase.h +255 -282
- package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
- package/eigen/Eigen/src/Core/Matrix.h +463 -494
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
- package/eigen/Eigen/src/Core/NestByValue.h +58 -52
- package/eigen/Eigen/src/Core/NoAlias.h +79 -86
- package/eigen/Eigen/src/Core/NumTraits.h +206 -206
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
- package/eigen/Eigen/src/Core/Product.h +246 -130
- package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
- package/eigen/Eigen/src/Core/Random.h +153 -164
- 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 +334 -314
- package/eigen/Eigen/src/Core/Ref.h +259 -257
- package/eigen/Eigen/src/Core/Replicate.h +92 -104
- package/eigen/Eigen/src/Core/Reshaped.h +215 -271
- package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
- package/eigen/Eigen/src/Core/Reverse.h +133 -148
- package/eigen/Eigen/src/Core/Select.h +68 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
- 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 +88 -102
- package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
- package/eigen/Eigen/src/Core/SolverBase.h +132 -133
- package/eigen/Eigen/src/Core/StableNorm.h +113 -147
- package/eigen/Eigen/src/Core/StlIterators.h +404 -248
- package/eigen/Eigen/src/Core/Stride.h +90 -92
- package/eigen/Eigen/src/Core/Swap.h +70 -39
- package/eigen/Eigen/src/Core/Transpose.h +258 -295
- package/eigen/Eigen/src/Core/Transpositions.h +270 -333
- package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
- package/eigen/Eigen/src/Core/Visitor.h +464 -308
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
- 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 +229 -41
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
- 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 +2380 -1362
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
- package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
- 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 +54 -82
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
- 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 -47
- 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 -277
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
- package/eigen/Eigen/src/Core/util/Constants.h +297 -262
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
- 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 +417 -116
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
- package/eigen/Eigen/src/Core/util/Macros.h +655 -773
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +970 -748
- package/eigen/Eigen/src/Core/util/Meta.h +581 -633
- 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 +17 -17
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
- package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
- 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 +89 -105
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
- package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
- package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
- package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
- package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
- package/eigen/Eigen/src/Geometry/Transform.h +858 -936
- package/eigen/Eigen/src/Geometry/Translation.h +94 -92
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
- package/eigen/Eigen/src/Householder/Householder.h +102 -124
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
- package/eigen/Eigen/src/LU/Determinant.h +50 -69
- package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
- package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
- 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 +243 -265
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
- 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 -430
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
- package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
- 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 +244 -264
- package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
- 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 +577 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
- 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 +1603 -1245
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
- 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 +370 -416
- 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 +138 -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 +756 -710
- 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 +245 -301
- 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 +89 -100
- 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 +124 -132
- 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 +450 -502
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
- 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 -730
- 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 +428 -464
- 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 +9972 -16179
- 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.h → BlockMethods.inc} +434 -506
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
- 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/package.json +1 -1
- package/eigen/COPYING.APACHE +0 -203
- package/eigen/COPYING.BSD +0 -26
- package/eigen/COPYING.GPL +0 -674
- package/eigen/COPYING.LGPL +0 -502
- package/eigen/COPYING.MINPACK +0 -51
- package/eigen/COPYING.MPL2 +0 -373
- package/eigen/COPYING.README +0 -18
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
- package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
- package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- 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 -358
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
- package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
- package/eigen/README.md +0 -5
|
@@ -46,79 +46,89 @@
|
|
|
46
46
|
#ifndef EIGEN_ALIGNEDBOX_H
|
|
47
47
|
#define EIGEN_ALIGNEDBOX_H
|
|
48
48
|
|
|
49
|
+
// IWYU pragma: private
|
|
50
|
+
#include "./InternalHeaderCheck.h"
|
|
51
|
+
|
|
49
52
|
namespace Eigen {
|
|
50
53
|
|
|
51
54
|
/** \geometry_module \ingroup Geometry_Module
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
template <typename
|
|
66
|
-
class AlignedBox
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
typedef
|
|
72
|
-
typedef
|
|
73
|
-
typedef
|
|
74
|
-
typedef typename ScalarTraits::
|
|
75
|
-
typedef
|
|
76
|
-
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;
|
|
77
79
|
typedef CwiseBinaryOp<internal::scalar_sum_op<Scalar>, const VectorType, const VectorType> VectorTypeSum;
|
|
78
80
|
|
|
79
81
|
/** Define constants to name the corners of a 1D, 2D or 3D axis aligned bounding box */
|
|
80
|
-
enum CornerType
|
|
81
|
-
{
|
|
82
|
+
enum CornerType {
|
|
82
83
|
/** 1D names @{ */
|
|
83
|
-
Min=0,
|
|
84
|
+
Min = 0,
|
|
85
|
+
Max = 1,
|
|
84
86
|
/** @} */
|
|
85
87
|
|
|
86
88
|
/** Identifier for 2D corner @{ */
|
|
87
|
-
BottomLeft=0,
|
|
88
|
-
|
|
89
|
+
BottomLeft = 0,
|
|
90
|
+
BottomRight = 1,
|
|
91
|
+
TopLeft = 2,
|
|
92
|
+
TopRight = 3,
|
|
89
93
|
/** @} */
|
|
90
94
|
|
|
91
95
|
/** Identifier for 3D corner @{ */
|
|
92
|
-
BottomLeftFloor=0,
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
+
BottomLeftFloor = 0,
|
|
97
|
+
BottomRightFloor = 1,
|
|
98
|
+
TopLeftFloor = 2,
|
|
99
|
+
TopRightFloor = 3,
|
|
100
|
+
BottomLeftCeil = 4,
|
|
101
|
+
BottomRightCeil = 5,
|
|
102
|
+
TopLeftCeil = 6,
|
|
103
|
+
TopRightCeil = 7
|
|
96
104
|
/** @} */
|
|
97
105
|
};
|
|
98
106
|
|
|
99
|
-
|
|
100
107
|
/** Default constructor initializing a null box. */
|
|
101
|
-
EIGEN_DEVICE_FUNC inline AlignedBox()
|
|
102
|
-
|
|
108
|
+
EIGEN_DEVICE_FUNC inline AlignedBox() {
|
|
109
|
+
if (EIGEN_CONST_CONDITIONAL(AmbientDimAtCompileTime != Dynamic)) setEmpty();
|
|
110
|
+
}
|
|
103
111
|
|
|
104
112
|
/** Constructs a null box with \a _dim the dimension of the ambient space. */
|
|
105
|
-
EIGEN_DEVICE_FUNC inline explicit AlignedBox(Index _dim) : m_min(_dim), m_max(_dim)
|
|
106
|
-
{ setEmpty(); }
|
|
113
|
+
EIGEN_DEVICE_FUNC inline explicit AlignedBox(Index _dim) : m_min(_dim), m_max(_dim) { setEmpty(); }
|
|
107
114
|
|
|
108
115
|
/** Constructs a box with extremities \a _min and \a _max.
|
|
109
|
-
* \warning If either component of \a _min is larger than the same component of \a _max, the constructed box is empty.
|
|
110
|
-
|
|
111
|
-
|
|
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) {}
|
|
112
121
|
|
|
113
122
|
/** Constructs a box containing a single point \a p. */
|
|
114
|
-
template<typename Derived>
|
|
115
|
-
EIGEN_DEVICE_FUNC inline explicit AlignedBox(const MatrixBase<Derived>& p) : m_min(p), m_max(m_min)
|
|
116
|
-
{ }
|
|
123
|
+
template <typename Derived>
|
|
124
|
+
EIGEN_DEVICE_FUNC inline explicit AlignedBox(const MatrixBase<Derived>& p) : m_min(p), m_max(m_min) {}
|
|
117
125
|
|
|
118
126
|
EIGEN_DEVICE_FUNC ~AlignedBox() {}
|
|
119
127
|
|
|
120
128
|
/** \returns the dimension in which the box holds */
|
|
121
|
-
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
|
+
}
|
|
122
132
|
|
|
123
133
|
/** \deprecated use isEmpty() */
|
|
124
134
|
EIGEN_DEVICE_FUNC inline bool isNull() const { return isEmpty(); }
|
|
@@ -132,64 +142,69 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
|
132
142
|
|
|
133
143
|
/** Makes \c *this an empty box.
|
|
134
144
|
* \sa isEmpty */
|
|
135
|
-
EIGEN_DEVICE_FUNC inline void setEmpty()
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
m_max.setConstant( ScalarTraits::lowest() );
|
|
145
|
+
EIGEN_DEVICE_FUNC inline void setEmpty() {
|
|
146
|
+
m_min.setConstant(ScalarTraits::highest());
|
|
147
|
+
m_max.setConstant(ScalarTraits::lowest());
|
|
139
148
|
}
|
|
140
149
|
|
|
141
150
|
/** \returns the minimal corner */
|
|
142
|
-
EIGEN_DEVICE_FUNC inline const VectorType&
|
|
151
|
+
EIGEN_DEVICE_FUNC inline const VectorType&(min)() const { return m_min; }
|
|
143
152
|
/** \returns a non const reference to the minimal corner */
|
|
144
|
-
EIGEN_DEVICE_FUNC inline VectorType&
|
|
153
|
+
EIGEN_DEVICE_FUNC inline VectorType&(min)() { return m_min; }
|
|
145
154
|
/** \returns the maximal corner */
|
|
146
|
-
EIGEN_DEVICE_FUNC inline const VectorType&
|
|
155
|
+
EIGEN_DEVICE_FUNC inline const VectorType&(max)() const { return m_max; }
|
|
147
156
|
/** \returns a non const reference to the maximal corner */
|
|
148
|
-
EIGEN_DEVICE_FUNC inline VectorType&
|
|
157
|
+
EIGEN_DEVICE_FUNC inline VectorType&(max)() { return m_max; }
|
|
149
158
|
|
|
150
159
|
/** \returns the center of the box */
|
|
151
160
|
EIGEN_DEVICE_FUNC inline const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(VectorTypeSum, RealScalar, quotient)
|
|
152
|
-
|
|
153
|
-
|
|
161
|
+
center() const {
|
|
162
|
+
return (m_min + m_max) / RealScalar(2);
|
|
163
|
+
}
|
|
154
164
|
|
|
155
165
|
/** \returns the lengths of the sides of the bounding box.
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
EIGEN_DEVICE_FUNC inline const CwiseBinaryOp<
|
|
160
|
-
|
|
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
|
+
}
|
|
161
174
|
|
|
162
175
|
/** \returns the volume of the bounding box */
|
|
163
|
-
EIGEN_DEVICE_FUNC inline Scalar volume() const
|
|
164
|
-
{ return sizes().prod(); }
|
|
176
|
+
EIGEN_DEVICE_FUNC inline Scalar volume() const { return isEmpty() ? Scalar(0) : sizes().prod(); }
|
|
165
177
|
|
|
166
178
|
/** \returns an expression for the bounding box diagonal vector
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
EIGEN_DEVICE_FUNC inline CwiseBinaryOp<
|
|
171
|
-
|
|
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
|
+
}
|
|
172
187
|
|
|
173
188
|
/** \returns the vertex of the bounding box at the corner defined by
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
EIGEN_DEVICE_FUNC inline VectorType corner(CornerType corner) const
|
|
183
|
-
|
|
184
|
-
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);
|
|
185
199
|
|
|
186
200
|
VectorType res;
|
|
187
201
|
|
|
188
202
|
Index mult = 1;
|
|
189
|
-
for(Index d=0; d<dim(); ++d)
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
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];
|
|
193
208
|
mult *= 2;
|
|
194
209
|
}
|
|
195
210
|
return res;
|
|
@@ -197,45 +212,40 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
|
197
212
|
|
|
198
213
|
/** \returns a random point inside the bounding box sampled with
|
|
199
214
|
* a uniform distribution */
|
|
200
|
-
EIGEN_DEVICE_FUNC inline VectorType sample() const
|
|
201
|
-
{
|
|
215
|
+
EIGEN_DEVICE_FUNC inline VectorType sample() const {
|
|
202
216
|
VectorType r(dim());
|
|
203
|
-
for(Index d=0; d<dim(); ++d)
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
r[d] = m_min[d] + (m_max[d]-m_min[d])
|
|
208
|
-
* internal::random<Scalar>(Scalar(0), Scalar(1));
|
|
209
|
-
}
|
|
210
|
-
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
|
|
211
221
|
r[d] = internal::random(m_min[d], m_max[d]);
|
|
212
222
|
}
|
|
213
223
|
return r;
|
|
214
224
|
}
|
|
215
225
|
|
|
216
226
|
/** \returns true if the point \a p is inside the box \c *this. */
|
|
217
|
-
template<typename Derived>
|
|
218
|
-
EIGEN_DEVICE_FUNC inline bool contains(const MatrixBase<Derived>& p) const
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
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();
|
|
222
231
|
}
|
|
223
232
|
|
|
224
233
|
/** \returns true if the box \a b is entirely inside the box \c *this. */
|
|
225
|
-
EIGEN_DEVICE_FUNC inline bool contains(const AlignedBox& b) const
|
|
226
|
-
|
|
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
|
+
}
|
|
227
237
|
|
|
228
238
|
/** \returns true if the box \a b is intersecting the box \c *this.
|
|
229
239
|
* \sa intersection, clamp */
|
|
230
|
-
EIGEN_DEVICE_FUNC inline bool intersects(const AlignedBox& b) const
|
|
231
|
-
|
|
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
|
+
}
|
|
232
243
|
|
|
233
244
|
/** Extends \c *this such that it contains the point \a p and returns a reference to \c *this.
|
|
234
245
|
* \sa extend(const AlignedBox&) */
|
|
235
|
-
template<typename Derived>
|
|
236
|
-
EIGEN_DEVICE_FUNC inline AlignedBox& extend(const MatrixBase<Derived>& p)
|
|
237
|
-
|
|
238
|
-
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());
|
|
239
249
|
m_min = m_min.cwiseMin(p_n);
|
|
240
250
|
m_max = m_max.cwiseMax(p_n);
|
|
241
251
|
return *this;
|
|
@@ -243,8 +253,7 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
|
243
253
|
|
|
244
254
|
/** Extends \c *this such that it contains the box \a b and returns a reference to \c *this.
|
|
245
255
|
* \sa merged, extend(const MatrixBase&) */
|
|
246
|
-
EIGEN_DEVICE_FUNC inline AlignedBox& extend(const AlignedBox& b)
|
|
247
|
-
{
|
|
256
|
+
EIGEN_DEVICE_FUNC inline AlignedBox& extend(const AlignedBox& b) {
|
|
248
257
|
m_min = m_min.cwiseMin(b.m_min);
|
|
249
258
|
m_max = m_max.cwiseMax(b.m_max);
|
|
250
259
|
return *this;
|
|
@@ -253,8 +262,7 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
|
253
262
|
/** Clamps \c *this by the box \a b and returns a reference to \c *this.
|
|
254
263
|
* \note If the boxes don't intersect, the resulting box is empty.
|
|
255
264
|
* \sa intersection(), intersects() */
|
|
256
|
-
EIGEN_DEVICE_FUNC inline AlignedBox& clamp(const AlignedBox& b)
|
|
257
|
-
{
|
|
265
|
+
EIGEN_DEVICE_FUNC inline AlignedBox& clamp(const AlignedBox& b) {
|
|
258
266
|
m_min = m_min.cwiseMax(b.m_min);
|
|
259
267
|
m_max = m_max.cwiseMin(b.m_max);
|
|
260
268
|
return *this;
|
|
@@ -263,69 +271,70 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
|
263
271
|
/** Returns an AlignedBox that is the intersection of \a b and \c *this
|
|
264
272
|
* \note If the boxes don't intersect, the resulting box is empty.
|
|
265
273
|
* \sa intersects(), clamp, contains() */
|
|
266
|
-
EIGEN_DEVICE_FUNC inline AlignedBox intersection(const AlignedBox& b) const
|
|
267
|
-
|
|
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
|
+
}
|
|
268
277
|
|
|
269
278
|
/** Returns an AlignedBox that is the union of \a b and \c *this.
|
|
270
279
|
* \note Merging with an empty box may result in a box bigger than \c *this.
|
|
271
280
|
* \sa extend(const AlignedBox&) */
|
|
272
|
-
EIGEN_DEVICE_FUNC inline AlignedBox merged(const AlignedBox& b) const
|
|
273
|
-
|
|
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
|
+
}
|
|
274
284
|
|
|
275
285
|
/** Translate \c *this by the vector \a t and returns a reference to \c *this. */
|
|
276
|
-
template<typename Derived>
|
|
277
|
-
EIGEN_DEVICE_FUNC inline AlignedBox& translate(const MatrixBase<Derived>& a_t)
|
|
278
|
-
|
|
279
|
-
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());
|
|
280
289
|
m_min += t;
|
|
281
290
|
m_max += t;
|
|
282
291
|
return *this;
|
|
283
292
|
}
|
|
284
293
|
|
|
285
294
|
/** \returns a copy of \c *this translated by the vector \a t. */
|
|
286
|
-
template<typename Derived>
|
|
287
|
-
EIGEN_DEVICE_FUNC inline AlignedBox translated(const MatrixBase<Derived>& a_t) const
|
|
288
|
-
{
|
|
295
|
+
template <typename Derived>
|
|
296
|
+
EIGEN_DEVICE_FUNC inline AlignedBox translated(const MatrixBase<Derived>& a_t) const {
|
|
289
297
|
AlignedBox result(m_min, m_max);
|
|
290
298
|
result.translate(a_t);
|
|
291
299
|
return result;
|
|
292
300
|
}
|
|
293
301
|
|
|
294
302
|
/** \returns the squared distance between the point \a p and the box \c *this,
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
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>
|
|
299
307
|
EIGEN_DEVICE_FUNC inline Scalar squaredExteriorDistance(const MatrixBase<Derived>& p) const;
|
|
300
308
|
|
|
301
309
|
/** \returns the squared distance between the boxes \a b and \c *this,
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
310
|
+
* and zero if the boxes intersect.
|
|
311
|
+
* \sa exteriorDistance(const AlignedBox&), squaredExteriorDistance(const MatrixBase&)
|
|
312
|
+
*/
|
|
305
313
|
EIGEN_DEVICE_FUNC inline Scalar squaredExteriorDistance(const AlignedBox& b) const;
|
|
306
314
|
|
|
307
315
|
/** \returns the distance between the point \a p and the box \c *this,
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
template<typename Derived>
|
|
312
|
-
EIGEN_DEVICE_FUNC inline NonInteger exteriorDistance(const MatrixBase<Derived>& p) const
|
|
313
|
-
|
|
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
|
+
}
|
|
314
323
|
|
|
315
324
|
/** \returns the distance between the boxes \a b and \c *this,
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
EIGEN_DEVICE_FUNC inline NonInteger exteriorDistance(const AlignedBox& b) const
|
|
320
|
-
|
|
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
|
+
}
|
|
321
331
|
|
|
322
332
|
/**
|
|
323
333
|
* Specialization of transform for pure translation.
|
|
324
334
|
*/
|
|
325
|
-
template<int Mode, int Options>
|
|
335
|
+
template <int Mode, int Options>
|
|
326
336
|
EIGEN_DEVICE_FUNC inline void transform(
|
|
327
|
-
const typename Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>::TranslationType& translation)
|
|
328
|
-
{
|
|
337
|
+
const typename Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>::TranslationType& translation) {
|
|
329
338
|
this->translate(translation);
|
|
330
339
|
}
|
|
331
340
|
|
|
@@ -335,11 +344,11 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
|
335
344
|
*
|
|
336
345
|
* \note This method is provided under BSD license (see the top of this file).
|
|
337
346
|
*/
|
|
338
|
-
template<int Mode, int Options>
|
|
339
|
-
EIGEN_DEVICE_FUNC inline void transform(const Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>& transform)
|
|
340
|
-
{
|
|
347
|
+
template <int Mode, int Options>
|
|
348
|
+
EIGEN_DEVICE_FUNC inline void transform(const Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>& transform) {
|
|
341
349
|
// Only Affine and Isometry transforms are currently supported.
|
|
342
|
-
EIGEN_STATIC_ASSERT(Mode == Affine || Mode == AffineCompact || Mode == Isometry,
|
|
350
|
+
EIGEN_STATIC_ASSERT(Mode == Affine || Mode == AffineCompact || Mode == Isometry,
|
|
351
|
+
THIS_METHOD_IS_ONLY_FOR_SPECIFIC_TRANSFORMATIONS);
|
|
343
352
|
|
|
344
353
|
// Method adapted from FCL src/shape/geometric_shapes_utility.cpp#computeBV<AABB, Box>(...)
|
|
345
354
|
// https://github.com/flexible-collision-library/fcl/blob/fcl-0.4/src/shape/geometric_shapes_utility.cpp#L292
|
|
@@ -349,8 +358,8 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
|
349
358
|
// two times rotated extent
|
|
350
359
|
const VectorType rotated_extent_2 = transform.linear().cwiseAbs() * sizes();
|
|
351
360
|
// two times new center
|
|
352
|
-
const VectorType rotated_center_2 =
|
|
353
|
-
Scalar(2) * transform.translation();
|
|
361
|
+
const VectorType rotated_center_2 =
|
|
362
|
+
transform.linear() * (this->m_max + this->m_min) + Scalar(2) * transform.translation();
|
|
354
363
|
|
|
355
364
|
this->m_max = (rotated_center_2 + rotated_extent_2) / Scalar(2);
|
|
356
365
|
this->m_min = (rotated_center_2 - rotated_extent_2) / Scalar(2);
|
|
@@ -360,127 +369,117 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
|
360
369
|
* \returns a copy of \c *this transformed by \a transform and recomputed to
|
|
361
370
|
* still be an axis-aligned box.
|
|
362
371
|
*/
|
|
363
|
-
template<int Mode, int Options>
|
|
364
|
-
EIGEN_DEVICE_FUNC AlignedBox
|
|
365
|
-
{
|
|
372
|
+
template <int Mode, int Options>
|
|
373
|
+
EIGEN_DEVICE_FUNC AlignedBox
|
|
374
|
+
transformed(const Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>& transform) const {
|
|
366
375
|
AlignedBox result(m_min, m_max);
|
|
367
376
|
result.transform(transform);
|
|
368
377
|
return result;
|
|
369
378
|
}
|
|
370
379
|
|
|
371
380
|
/** \returns \c *this with scalar type casted to \a NewScalarType
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
template<typename NewScalarType>
|
|
377
|
-
EIGEN_DEVICE_FUNC inline
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
return typename internal::cast_return_type<AlignedBox,
|
|
381
|
-
|
|
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);
|
|
382
391
|
}
|
|
383
392
|
|
|
384
393
|
/** Copy constructor with scalar type conversion */
|
|
385
|
-
template<typename OtherScalarType>
|
|
386
|
-
EIGEN_DEVICE_FUNC inline explicit AlignedBox(const AlignedBox<OtherScalarType,AmbientDimAtCompileTime>& other)
|
|
387
|
-
{
|
|
394
|
+
template <typename OtherScalarType>
|
|
395
|
+
EIGEN_DEVICE_FUNC inline explicit AlignedBox(const AlignedBox<OtherScalarType, AmbientDimAtCompileTime>& other) {
|
|
388
396
|
m_min = (other.min)().template cast<Scalar>();
|
|
389
397
|
m_max = (other.max)().template cast<Scalar>();
|
|
390
398
|
}
|
|
391
399
|
|
|
392
400
|
/** \returns \c true if \c *this is approximately equal to \a other, within the precision
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
EIGEN_DEVICE_FUNC bool isApprox(const AlignedBox& other,
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
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
|
+
}
|
|
400
408
|
|
|
409
|
+
protected:
|
|
401
410
|
VectorType m_min, m_max;
|
|
402
411
|
};
|
|
403
412
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
{
|
|
410
|
-
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());
|
|
411
418
|
Scalar dist2(0);
|
|
412
419
|
Scalar aux;
|
|
413
|
-
for (Index k=0; k<dim(); ++k)
|
|
414
|
-
|
|
415
|
-
if( m_min[k] > p[k] )
|
|
416
|
-
{
|
|
420
|
+
for (Index k = 0; k < dim(); ++k) {
|
|
421
|
+
if (m_min[k] > p[k]) {
|
|
417
422
|
aux = m_min[k] - p[k];
|
|
418
|
-
dist2 += aux*aux;
|
|
419
|
-
}
|
|
420
|
-
else if( p[k] > m_max[k] )
|
|
421
|
-
{
|
|
423
|
+
dist2 += aux * aux;
|
|
424
|
+
} else if (p[k] > m_max[k]) {
|
|
422
425
|
aux = p[k] - m_max[k];
|
|
423
|
-
dist2 += aux*aux;
|
|
426
|
+
dist2 += aux * aux;
|
|
424
427
|
}
|
|
425
428
|
}
|
|
426
429
|
return dist2;
|
|
427
430
|
}
|
|
428
431
|
|
|
429
|
-
template<typename Scalar,int AmbientDim>
|
|
430
|
-
EIGEN_DEVICE_FUNC inline Scalar AlignedBox<Scalar,AmbientDim>::squaredExteriorDistance(const AlignedBox& b) const
|
|
431
|
-
{
|
|
432
|
+
template <typename Scalar, int AmbientDim>
|
|
433
|
+
EIGEN_DEVICE_FUNC inline Scalar AlignedBox<Scalar, AmbientDim>::squaredExteriorDistance(const AlignedBox& b) const {
|
|
432
434
|
Scalar dist2(0);
|
|
433
435
|
Scalar aux;
|
|
434
|
-
for (Index k=0; k<dim(); ++k)
|
|
435
|
-
|
|
436
|
-
if( m_min[k] > b.m_max[k] )
|
|
437
|
-
{
|
|
436
|
+
for (Index k = 0; k < dim(); ++k) {
|
|
437
|
+
if (m_min[k] > b.m_max[k]) {
|
|
438
438
|
aux = m_min[k] - b.m_max[k];
|
|
439
|
-
dist2 += aux*aux;
|
|
440
|
-
}
|
|
441
|
-
else if( b.m_min[k] > m_max[k] )
|
|
442
|
-
{
|
|
439
|
+
dist2 += aux * aux;
|
|
440
|
+
} else if (b.m_min[k] > m_max[k]) {
|
|
443
441
|
aux = b.m_min[k] - m_max[k];
|
|
444
|
-
dist2 += aux*aux;
|
|
442
|
+
dist2 += aux * aux;
|
|
445
443
|
}
|
|
446
444
|
}
|
|
447
445
|
return dist2;
|
|
448
446
|
}
|
|
449
447
|
|
|
450
448
|
/** \defgroup alignedboxtypedefs Global aligned box typedefs
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
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;
|
|
469
468
|
|
|
470
469
|
#define EIGEN_MAKE_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
|
|
471
|
-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 1, 1)
|
|
472
|
-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2)
|
|
473
|
-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3)
|
|
474
|
-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4)
|
|
475
|
-
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)
|
|
476
475
|
|
|
477
|
-
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(int,
|
|
478
|
-
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(float,
|
|
479
|
-
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)
|
|
480
479
|
|
|
481
480
|
#undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES
|
|
482
481
|
#undef EIGEN_MAKE_TYPEDEFS
|
|
483
482
|
|
|
484
|
-
}
|
|
483
|
+
} // end namespace Eigen
|
|
485
484
|
|
|
486
|
-
#endif
|
|
485
|
+
#endif // EIGEN_ALIGNEDBOX_H
|