dartpy 7.0.0.dev0__cp314-cp314-manylinux_2_39_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of dartpy might be problematic. Click here for more details.
- dartpy-7.0.0.dev0.dist-info/METADATA +86 -0
- dartpy-7.0.0.dev0.dist-info/RECORD +994 -0
- dartpy-7.0.0.dev0.dist-info/WHEEL +5 -0
- dartpy-7.0.0.dev0.dist-info/licenses/LICENSE +31 -0
- dartpy.cpython-314-x86_64-linux-gnu.so +0 -0
- dartpy.libs/libBulletCollision-f96eb02c.so.3.25 +0 -0
- dartpy.libs/libBulletDynamics-3cff1f18.so.3.25 +0 -0
- dartpy.libs/libBulletSoftBody-220f01bd.so.3.25 +0 -0
- dartpy.libs/libLinearMath-71568d02.so.3.25 +0 -0
- dartpy.libs/libOpenThreads-8bc434db.so.3.3.1 +0 -0
- dartpy.libs/libSDL2-2-3db87ac0.0.so.0.3200.56 +0 -0
- dartpy.libs/libassimp-44cf3e77.so.5.4.3 +0 -0
- dartpy.libs/libccd-4f119cf4.so.2.0 +0 -0
- dartpy.libs/libconsole_bridge-f26e11cc.so.1.0 +0 -0
- dartpy.libs/libfcl-a48f76e3.so.0.7.0 +0 -0
- dartpy.libs/libfmt-277170bf.so.11.2.0 +0 -0
- dartpy.libs/libfontconfig-4f3ddb6b.so.1.14.0 +0 -0
- dartpy.libs/libfreetype-64806fc6.so.6.20.4 +0 -0
- dartpy.libs/libglfw-6f066845.so.3.4 +0 -0
- dartpy.libs/libimgui-ab87b07d.so +0 -0
- dartpy.libs/libnlopt-e40d2105.so.1.0.0 +0 -0
- dartpy.libs/liboctomap-38e56f99.so.1.10.0 +0 -0
- dartpy.libs/liboctomath-bff26442.so.1.10.0 +0 -0
- dartpy.libs/libode-cb84e60c.so.8.2.0 +0 -0
- dartpy.libs/libosg-e67375e5.so.3.6.5 +0 -0
- dartpy.libs/libosgDB-36efdcbf.so.3.6.5 +0 -0
- dartpy.libs/libosgGA-6af4078b.so.3.6.5 +0 -0
- dartpy.libs/libosgManipulator-3270f659.so.3.6.5 +0 -0
- dartpy.libs/libosgShadow-127a8d77.so.3.6.5 +0 -0
- dartpy.libs/libosgText-87d82d87.so.3.6.5 +0 -0
- dartpy.libs/libosgUtil-55896958.so.3.6.5 +0 -0
- dartpy.libs/libosgViewer-76d832e3.so.3.6.5 +0 -0
- dartpy.libs/libpng16-bd65464e.so.16.50.0 +0 -0
- dartpy.libs/libtinyxml2-8d10763c.so.11.0.0 +0 -0
- dartpy.libs/liburdfdom_model-7b26ae88.so.4.0 +0 -0
- dartpy.libs/liburdfdom_model_state-95a5ad6e.so.4.0 +0 -0
- dartpy.libs/liburdfdom_sensor-55a145ea.so.4.0 +0 -0
- dartpy.libs/liburdfdom_world-a32c7194.so.4.0 +0 -0
- dartpy.libs/libvulkan-730b9f9d.so.1.4.328 +0 -0
- include/dart/collision/CollisionDetector.hpp +305 -0
- include/dart/collision/CollisionFilter.hpp +126 -0
- include/dart/collision/CollisionGroup.hpp +546 -0
- include/dart/collision/CollisionObject.hpp +90 -0
- include/dart/collision/CollisionOption.hpp +71 -0
- include/dart/collision/CollisionResult.hpp +109 -0
- include/dart/collision/Contact.hpp +103 -0
- include/dart/collision/DistanceFilter.hpp +66 -0
- include/dart/collision/DistanceOption.hpp +80 -0
- include/dart/collision/DistanceResult.hpp +123 -0
- include/dart/collision/Option.hpp +42 -0
- include/dart/collision/RaycastOption.hpp +58 -0
- include/dart/collision/RaycastResult.hpp +80 -0
- include/dart/collision/Result.hpp +42 -0
- include/dart/collision/SmartPointer.hpp +51 -0
- include/dart/collision/all.hpp +17 -0
- include/dart/collision/bullet/BulletCollisionDetector.hpp +168 -0
- include/dart/collision/bullet/BulletCollisionGroup.hpp +98 -0
- include/dart/collision/bullet/BulletCollisionObject.hpp +75 -0
- include/dart/collision/bullet/BulletCollisionShape.hpp +62 -0
- include/dart/collision/bullet/BulletInclude.hpp +47 -0
- include/dart/collision/bullet/BulletTypes.hpp +57 -0
- include/dart/collision/bullet/all.hpp +8 -0
- include/dart/collision/bullet/bullet.hpp +14 -0
- include/dart/collision/bullet/detail/BulletCollisionDispatcher.hpp +70 -0
- include/dart/collision/bullet/detail/BulletOverlapFilterCallback.hpp +72 -0
- include/dart/collision/collision.hpp +14 -0
- include/dart/collision/dart/DARTCollide.hpp +106 -0
- include/dart/collision/dart/DARTCollisionDetector.hpp +109 -0
- include/dart/collision/dart/DARTCollisionGroup.hpp +82 -0
- include/dart/collision/dart/DARTCollisionObject.hpp +63 -0
- include/dart/collision/dart/all.hpp +6 -0
- include/dart/collision/dart/dart.hpp +14 -0
- include/dart/collision/detail/CollisionDetector.hpp +66 -0
- include/dart/collision/detail/CollisionGroup.hpp +287 -0
- include/dart/collision/detail/Contact-impl.hpp +56 -0
- include/dart/collision/detail/UnorderedPairs.hpp +153 -0
- include/dart/collision/fcl/BackwardCompatibility.hpp +145 -0
- include/dart/collision/fcl/CollisionShapes.hpp +374 -0
- include/dart/collision/fcl/FCLCollisionDetector.hpp +204 -0
- include/dart/collision/fcl/FCLCollisionGroup.hpp +95 -0
- include/dart/collision/fcl/FCLCollisionObject.hpp +72 -0
- include/dart/collision/fcl/FCLTypes.hpp +62 -0
- include/dart/collision/fcl/TriTriIntersectionTest.hpp +17 -0
- include/dart/collision/fcl/all.hpp +9 -0
- include/dart/collision/fcl/fcl.hpp +14 -0
- include/dart/collision/fcl/tri_tri_intersection_test.hpp +332 -0
- include/dart/collision/ode/OdeCollisionDetector.hpp +131 -0
- include/dart/collision/ode/OdeCollisionGroup.hpp +87 -0
- include/dart/collision/ode/OdeCollisionObject.hpp +89 -0
- include/dart/collision/ode/OdeTypes.hpp +51 -0
- include/dart/collision/ode/all.hpp +6 -0
- include/dart/collision/ode/detail/OdeBox.hpp +58 -0
- include/dart/collision/ode/detail/OdeCapsule.hpp +58 -0
- include/dart/collision/ode/detail/OdeCylinder.hpp +58 -0
- include/dart/collision/ode/detail/OdeGeom.hpp +83 -0
- include/dart/collision/ode/detail/OdeHeightmap-impl.hpp +170 -0
- include/dart/collision/ode/detail/OdeHeightmap.hpp +70 -0
- include/dart/collision/ode/detail/OdeMesh.hpp +83 -0
- include/dart/collision/ode/detail/OdePlane.hpp +67 -0
- include/dart/collision/ode/detail/OdeSphere.hpp +58 -0
- include/dart/collision/ode/ode.hpp +14 -0
- include/dart/common/Aspect.hpp +215 -0
- include/dart/common/AspectWithVersion.hpp +180 -0
- include/dart/common/CAllocator.hpp +65 -0
- include/dart/common/Castable.hpp +102 -0
- include/dart/common/ClassWithVirtualBase.hpp +47 -0
- include/dart/common/Cloneable.hpp +327 -0
- include/dart/common/Composite.hpp +205 -0
- include/dart/common/CompositeJoiner.hpp +160 -0
- include/dart/common/Console.hpp +75 -0
- include/dart/common/Deprecated.hpp +126 -0
- include/dart/common/EmbeddedAspect.hpp +466 -0
- include/dart/common/Empty.hpp +55 -0
- include/dart/common/Factory.hpp +146 -0
- include/dart/common/Filesystem.hpp +112 -0
- include/dart/common/FreeListAllocator.hpp +162 -0
- include/dart/common/IncludeWindows.hpp +50 -0
- include/dart/common/LocalResource.hpp +76 -0
- include/dart/common/LocalResourceRetriever.hpp +63 -0
- include/dart/common/LockableReference.hpp +166 -0
- include/dart/common/Logging.hpp +146 -0
- include/dart/common/Macros.hpp +78 -0
- include/dart/common/Memory.hpp +215 -0
- include/dart/common/MemoryAllocator.hpp +120 -0
- include/dart/common/MemoryAllocatorDebugger.hpp +98 -0
- include/dart/common/MemoryManager.hpp +189 -0
- include/dart/common/Metaprogramming.hpp +68 -0
- include/dart/common/NameManager.hpp +184 -0
- include/dart/common/Observer.hpp +85 -0
- include/dart/common/Optional.hpp +48 -0
- include/dart/common/Platform.hpp +92 -0
- include/dart/common/PoolAllocator.hpp +141 -0
- include/dart/common/Profile.hpp +56 -0
- include/dart/common/ProxyAspect.hpp +93 -0
- include/dart/common/RequiresAspect.hpp +79 -0
- include/dart/common/Resource.hpp +96 -0
- include/dart/common/ResourceRetriever.hpp +82 -0
- include/dart/common/SharedLibrary.hpp +201 -0
- include/dart/common/Signal.hpp +250 -0
- include/dart/common/Singleton.hpp +85 -0
- include/dart/common/SmartPointer.hpp +63 -0
- include/dart/common/SpecializedForAspect.hpp +207 -0
- include/dart/common/StlAllocator.hpp +111 -0
- include/dart/common/StlHelpers.hpp +61 -0
- include/dart/common/Stopwatch.hpp +143 -0
- include/dart/common/String.hpp +71 -0
- include/dart/common/SubPtr.hpp +17 -0
- include/dart/common/Subject.hpp +84 -0
- include/dart/common/Timer.hpp +119 -0
- include/dart/common/Uri.hpp +229 -0
- include/dart/common/VersionCounter.hpp +68 -0
- include/dart/common/Virtual.hpp +51 -0
- include/dart/common/all.hpp +53 -0
- include/dart/common/common.hpp +14 -0
- include/dart/common/detail/Aspect.hpp +102 -0
- include/dart/common/detail/AspectWithVersion.hpp +455 -0
- include/dart/common/detail/Castable-impl.hpp +109 -0
- include/dart/common/detail/Cloneable.hpp +638 -0
- include/dart/common/detail/Composite.hpp +241 -0
- include/dart/common/detail/CompositeData.hpp +393 -0
- include/dart/common/detail/CompositeJoiner.hpp +128 -0
- include/dart/common/detail/ConnectionBody.hpp +157 -0
- include/dart/common/detail/EmbeddedAspect.hpp +487 -0
- include/dart/common/detail/Factory-impl.hpp +200 -0
- include/dart/common/detail/LockableReference-impl.hpp +156 -0
- include/dart/common/detail/Logging-impl.hpp +162 -0
- include/dart/common/detail/Memory-impl.hpp +66 -0
- include/dart/common/detail/MemoryAllocator-impl.hpp +97 -0
- include/dart/common/detail/MemoryAllocatorDebugger-impl.hpp +201 -0
- include/dart/common/detail/MemoryManager-impl.hpp +102 -0
- include/dart/common/detail/Metaprogramming-impl.hpp +89 -0
- include/dart/common/detail/NameManager.hpp +301 -0
- include/dart/common/detail/NoOp.hpp +57 -0
- include/dart/common/detail/ProxyAspect.hpp +172 -0
- include/dart/common/detail/RequiresAspect.hpp +51 -0
- include/dart/common/detail/SharedLibraryManager.hpp +106 -0
- include/dart/common/detail/Signal.hpp +242 -0
- include/dart/common/detail/Singleton-impl.hpp +74 -0
- include/dart/common/detail/SpecializedForAspect.hpp +331 -0
- include/dart/common/detail/StlAllocator-impl.hpp +108 -0
- include/dart/common/detail/Stopwatch-impl.hpp +242 -0
- include/dart/common/detail/SubPtr.hpp +17 -0
- include/dart/common/detail/TemplateJoinerDispatchMacro.hpp +59 -0
- include/dart/common/detail/sub_ptr.hpp +139 -0
- include/dart/common/sub_ptr.hpp +103 -0
- include/dart/config.hpp +102 -0
- include/dart/constraint/BalanceConstraint.hpp +202 -0
- include/dart/constraint/BallJointConstraint.hpp +142 -0
- include/dart/constraint/BoxedLcpConstraintSolver.hpp +182 -0
- include/dart/constraint/BoxedLcpSolver.hpp +101 -0
- include/dart/constraint/ConstrainedGroup.hpp +120 -0
- include/dart/constraint/ConstraintBase.hpp +141 -0
- include/dart/constraint/ConstraintSolver.hpp +325 -0
- include/dart/constraint/ContactConstraint.hpp +286 -0
- include/dart/constraint/ContactSurface.hpp +191 -0
- include/dart/constraint/DantzigBoxedLcpSolver.hpp +71 -0
- include/dart/constraint/DantzigLCPSolver.hpp +87 -0
- include/dart/constraint/DynamicJointConstraint.hpp +120 -0
- include/dart/constraint/JointConstraint.hpp +182 -0
- include/dart/constraint/JointCoulombFrictionConstraint.hpp +149 -0
- include/dart/constraint/JointLimitConstraint.hpp +185 -0
- include/dart/constraint/LCPSolver.hpp +71 -0
- include/dart/constraint/MimicMotorConstraint.hpp +164 -0
- include/dart/constraint/PGSLCPSolver.hpp +109 -0
- include/dart/constraint/PgsBoxedLcpSolver.hpp +106 -0
- include/dart/constraint/ServoMotorConstraint.hpp +151 -0
- include/dart/constraint/SmartPointer.hpp +69 -0
- include/dart/constraint/SoftContactConstraint.hpp +262 -0
- include/dart/constraint/WeldJointConstraint.hpp +133 -0
- include/dart/constraint/all.hpp +25 -0
- include/dart/constraint/constraint.hpp +14 -0
- include/dart/constraint/detail/ConstraintSolver-impl.hpp +78 -0
- include/dart/dart.hpp +44 -0
- include/dart/dynamics/ArrowShape.hpp +121 -0
- include/dart/dynamics/AssimpInputResourceAdaptor.hpp +129 -0
- include/dart/dynamics/BallJoint.hpp +143 -0
- include/dart/dynamics/BodyNode.hpp +1279 -0
- include/dart/dynamics/BoxShape.hpp +90 -0
- include/dart/dynamics/Branch.hpp +107 -0
- include/dart/dynamics/CapsuleShape.hpp +105 -0
- include/dart/dynamics/Chain.hpp +142 -0
- include/dart/dynamics/CompositeNode.hpp +114 -0
- include/dart/dynamics/ConeShape.hpp +107 -0
- include/dart/dynamics/CylinderShape.hpp +96 -0
- include/dart/dynamics/DegreeOfFreedom.hpp +415 -0
- include/dart/dynamics/EllipsoidShape.hpp +115 -0
- include/dart/dynamics/EndEffector.hpp +158 -0
- include/dart/dynamics/Entity.hpp +258 -0
- include/dart/dynamics/EntityNode.hpp +77 -0
- include/dart/dynamics/EulerJoint.hpp +174 -0
- include/dart/dynamics/FixedFrame.hpp +105 -0
- include/dart/dynamics/FixedJacobianNode.hpp +168 -0
- include/dart/dynamics/Frame.hpp +388 -0
- include/dart/dynamics/FreeJoint.hpp +369 -0
- include/dart/dynamics/GenericJoint.hpp +825 -0
- include/dart/dynamics/Group.hpp +270 -0
- include/dart/dynamics/HeightmapShape.hpp +195 -0
- include/dart/dynamics/HierarchicalIK.hpp +419 -0
- include/dart/dynamics/IkFast.hpp +277 -0
- include/dart/dynamics/Inertia.hpp +176 -0
- include/dart/dynamics/InvalidIndex.hpp +46 -0
- include/dart/dynamics/InverseKinematics.hpp +1401 -0
- include/dart/dynamics/JacobianNode.hpp +312 -0
- include/dart/dynamics/Joint.hpp +1128 -0
- include/dart/dynamics/LineSegmentShape.hpp +140 -0
- include/dart/dynamics/Linkage.hpp +246 -0
- include/dart/dynamics/Marker.hpp +126 -0
- include/dart/dynamics/MeshShape.hpp +225 -0
- include/dart/dynamics/MetaSkeleton.hpp +1034 -0
- include/dart/dynamics/MimicDofProperties.hpp +62 -0
- include/dart/dynamics/MultiSphereConvexHullShape.hpp +111 -0
- include/dart/dynamics/MultiSphereShape.hpp +42 -0
- include/dart/dynamics/Node.hpp +273 -0
- include/dart/dynamics/NodeManagerJoiner.hpp +190 -0
- include/dart/dynamics/PlanarJoint.hpp +161 -0
- include/dart/dynamics/PlaneShape.hpp +105 -0
- include/dart/dynamics/PointCloudShape.hpp +186 -0
- include/dart/dynamics/PointMass.hpp +709 -0
- include/dart/dynamics/PrismaticJoint.hpp +120 -0
- include/dart/dynamics/PyramidShape.hpp +122 -0
- include/dart/dynamics/ReferentialSkeleton.hpp +550 -0
- include/dart/dynamics/RevoluteJoint.hpp +120 -0
- include/dart/dynamics/ScrewJoint.hpp +126 -0
- include/dart/dynamics/Shape.hpp +231 -0
- include/dart/dynamics/ShapeFrame.hpp +291 -0
- include/dart/dynamics/ShapeNode.hpp +134 -0
- include/dart/dynamics/SharedLibraryIkFast.hpp +147 -0
- include/dart/dynamics/SimpleFrame.hpp +247 -0
- include/dart/dynamics/Skeleton.hpp +1350 -0
- include/dart/dynamics/SmartPointer.hpp +185 -0
- include/dart/dynamics/SoftBodyNode.hpp +472 -0
- include/dart/dynamics/SoftMeshShape.hpp +100 -0
- include/dart/dynamics/SpecializedNodeManager.hpp +230 -0
- include/dart/dynamics/SphereShape.hpp +89 -0
- include/dart/dynamics/TemplatedJacobianNode.hpp +128 -0
- include/dart/dynamics/TranslationalJoint.hpp +105 -0
- include/dart/dynamics/TranslationalJoint2D.hpp +156 -0
- include/dart/dynamics/UniversalJoint.hpp +128 -0
- include/dart/dynamics/VoxelGridShape.hpp +171 -0
- include/dart/dynamics/WeldJoint.hpp +116 -0
- include/dart/dynamics/ZeroDofJoint.hpp +562 -0
- include/dart/dynamics/all.hpp +69 -0
- include/dart/dynamics/detail/BasicNodeManager.hpp +539 -0
- include/dart/dynamics/detail/BodyNode.hpp +344 -0
- include/dart/dynamics/detail/BodyNodeAspect.hpp +177 -0
- include/dart/dynamics/detail/BodyNodePtr.hpp +351 -0
- include/dart/dynamics/detail/CompositeNode.hpp +93 -0
- include/dart/dynamics/detail/DegreeOfFreedomPtr.hpp +338 -0
- include/dart/dynamics/detail/EndEffectorAspect.hpp +106 -0
- include/dart/dynamics/detail/EntityNode.hpp +81 -0
- include/dart/dynamics/detail/EntityNodeAspect.hpp +101 -0
- include/dart/dynamics/detail/EulerJointAspect.hpp +93 -0
- include/dart/dynamics/detail/FixedFrameAspect.hpp +58 -0
- include/dart/dynamics/detail/FixedJacobianNode.hpp +55 -0
- include/dart/dynamics/detail/GenericJoint.hpp +2471 -0
- include/dart/dynamics/detail/GenericJointAspect.hpp +353 -0
- include/dart/dynamics/detail/HeightmapShape-impl.hpp +243 -0
- include/dart/dynamics/detail/InverseKinematics.hpp +83 -0
- include/dart/dynamics/detail/InverseKinematicsPtr.hpp +341 -0
- include/dart/dynamics/detail/JointAspect.hpp +161 -0
- include/dart/dynamics/detail/JointPtr.hpp +293 -0
- include/dart/dynamics/detail/MarkerAspect.hpp +68 -0
- include/dart/dynamics/detail/MetaSkeleton-impl.hpp +151 -0
- include/dart/dynamics/detail/Node.hpp +532 -0
- include/dart/dynamics/detail/NodeManagerJoiner.hpp +184 -0
- include/dart/dynamics/detail/NodePtr.hpp +259 -0
- include/dart/dynamics/detail/PlanarJointAspect.hpp +136 -0
- include/dart/dynamics/detail/PrismaticJointAspect.hpp +85 -0
- include/dart/dynamics/detail/RevoluteJointAspect.hpp +86 -0
- include/dart/dynamics/detail/ScrewJointAspect.hpp +90 -0
- include/dart/dynamics/detail/ShapeFrameAspect.hpp +169 -0
- include/dart/dynamics/detail/ShapeNode.hpp +51 -0
- include/dart/dynamics/detail/Skeleton.hpp +92 -0
- include/dart/dynamics/detail/SkeletonAspect.hpp +181 -0
- include/dart/dynamics/detail/SoftBodyNodeAspect.hpp +132 -0
- include/dart/dynamics/detail/SpecializedNodeManager.hpp +324 -0
- include/dart/dynamics/detail/TemplatedJacobianNode.hpp +294 -0
- include/dart/dynamics/detail/TranslationalJoint2DAspect.hpp +140 -0
- include/dart/dynamics/detail/UniversalJointAspect.hpp +86 -0
- include/dart/dynamics/dynamics.hpp +14 -0
- include/dart/dynamics/ikfast.h +345 -0
- include/dart/external/odelcpsolver/common.h +418 -0
- include/dart/external/odelcpsolver/error.h +62 -0
- include/dart/external/odelcpsolver/lcp.h +75 -0
- include/dart/external/odelcpsolver/matrix.h +277 -0
- include/dart/external/odelcpsolver/misc.h +82 -0
- include/dart/external/odelcpsolver/odeconfig.h +110 -0
- include/dart/gui/osg/DefaultEventHandler.hpp +237 -0
- include/dart/gui/osg/DragAndDrop.hpp +360 -0
- include/dart/gui/osg/GridVisual.hpp +218 -0
- include/dart/gui/osg/ImGuiHandler.hpp +113 -0
- include/dart/gui/osg/ImGuiViewer.hpp +83 -0
- include/dart/gui/osg/ImGuiWidget.hpp +91 -0
- include/dart/gui/osg/IncludeImGui.hpp +75 -0
- include/dart/gui/osg/InteractiveFrame.hpp +170 -0
- include/dart/gui/osg/MouseEventHandler.hpp +76 -0
- include/dart/gui/osg/RealTimeWorldNode.hpp +126 -0
- include/dart/gui/osg/ShapeFrameNode.hpp +117 -0
- include/dart/gui/osg/SupportPolygonVisual.hpp +202 -0
- include/dart/gui/osg/TrackballManipulator.hpp +97 -0
- include/dart/gui/osg/Utils.hpp +120 -0
- include/dart/gui/osg/Viewer.hpp +427 -0
- include/dart/gui/osg/WorldNode.hpp +211 -0
- include/dart/gui/osg/all.hpp +19 -0
- include/dart/gui/osg/detail/CameraModeCallback.hpp +82 -0
- include/dart/gui/osg/detail/Utils-impl.hpp +160 -0
- include/dart/gui/osg/osg.hpp +14 -0
- include/dart/gui/osg/render/BoxShapeNode.hpp +74 -0
- include/dart/gui/osg/render/CapsuleShapeNode.hpp +75 -0
- include/dart/gui/osg/render/ConeShapeNode.hpp +74 -0
- include/dart/gui/osg/render/CylinderShapeNode.hpp +75 -0
- include/dart/gui/osg/render/EllipsoidShapeNode.hpp +76 -0
- include/dart/gui/osg/render/HeightmapShapeNode.hpp +485 -0
- include/dart/gui/osg/render/LineSegmentShapeNode.hpp +75 -0
- include/dart/gui/osg/render/MeshShapeNode.hpp +86 -0
- include/dart/gui/osg/render/MultiSphereShapeNode.hpp +76 -0
- include/dart/gui/osg/render/PlaneShapeNode.hpp +75 -0
- include/dart/gui/osg/render/PointCloudShapeNode.hpp +85 -0
- include/dart/gui/osg/render/PyramidShapeNode.hpp +75 -0
- include/dart/gui/osg/render/ShapeNode.hpp +126 -0
- include/dart/gui/osg/render/SoftMeshShapeNode.hpp +75 -0
- include/dart/gui/osg/render/SphereShapeNode.hpp +76 -0
- include/dart/gui/osg/render/VoxelGridShapeNode.hpp +83 -0
- include/dart/gui/osg/render/WarningShapeNode.hpp +64 -0
- include/dart/gui/osg/render/all.hpp +19 -0
- include/dart/gui/osg/render/render.hpp +14 -0
- include/dart/integration/EulerIntegrator.hpp +64 -0
- include/dart/integration/Integrator.hpp +104 -0
- include/dart/integration/RK4Integrator.hpp +68 -0
- include/dart/integration/SemiImplicitEulerIntegrator.hpp +64 -0
- include/dart/integration/all.hpp +6 -0
- include/dart/integration/integration.hpp +14 -0
- include/dart/lcpsolver/Lemke.hpp +54 -0
- include/dart/lcpsolver/ODELCPSolver.hpp +88 -0
- include/dart/lcpsolver/all.hpp +4 -0
- include/dart/lcpsolver/lcpsolver.hpp +14 -0
- include/dart/math/ConfigurationSpace.hpp +144 -0
- include/dart/math/Constants.hpp +79 -0
- include/dart/math/Geometry.hpp +659 -0
- include/dart/math/Helpers.hpp +481 -0
- include/dart/math/Icosphere.hpp +106 -0
- include/dart/math/MathTypes.hpp +100 -0
- include/dart/math/Mesh.hpp +108 -0
- include/dart/math/Random.hpp +225 -0
- include/dart/math/TriMesh.hpp +121 -0
- include/dart/math/all.hpp +11 -0
- include/dart/math/detail/ConfigurationSpace.hpp +235 -0
- include/dart/math/detail/Convhull-impl.hpp +743 -0
- include/dart/math/detail/Convhull.hpp +118 -0
- include/dart/math/detail/Geometry-impl.hpp +113 -0
- include/dart/math/detail/Icosphere-impl.hpp +214 -0
- include/dart/math/detail/Mesh-impl.hpp +151 -0
- include/dart/math/detail/Random-impl.hpp +353 -0
- include/dart/math/detail/TriMesh-impl.hpp +202 -0
- include/dart/math/math.hpp +14 -0
- include/dart/optimizer/Function.hpp +203 -0
- include/dart/optimizer/GenericMultiObjectiveProblem.hpp +174 -0
- include/dart/optimizer/GradientDescentSolver.hpp +240 -0
- include/dart/optimizer/MultiObjectiveProblem.hpp +168 -0
- include/dart/optimizer/MultiObjectiveSolver.hpp +168 -0
- include/dart/optimizer/Population.hpp +108 -0
- include/dart/optimizer/Problem.hpp +191 -0
- include/dart/optimizer/Solver.hpp +182 -0
- include/dart/optimizer/all.hpp +10 -0
- include/dart/optimizer/ipopt/BackwardCompatibility.hpp +43 -0
- include/dart/optimizer/ipopt/IpoptSolver.hpp +223 -0
- include/dart/optimizer/ipopt/all.hpp +4 -0
- include/dart/optimizer/ipopt/ipopt.hpp +14 -0
- include/dart/optimizer/nlopt/NloptSolver.hpp +212 -0
- include/dart/optimizer/nlopt/all.hpp +3 -0
- include/dart/optimizer/nlopt/nlopt.hpp +14 -0
- include/dart/optimizer/optimizer.hpp +14 -0
- include/dart/simulation/Recording.hpp +118 -0
- include/dart/simulation/SmartPointer.hpp +46 -0
- include/dart/simulation/World.hpp +405 -0
- include/dart/simulation/all.hpp +5 -0
- include/dart/simulation/detail/World-impl.hpp +129 -0
- include/dart/simulation/simulation.hpp +14 -0
- include/dart/utils/C3D.hpp +107 -0
- include/dart/utils/CompositeResourceRetriever.hpp +97 -0
- include/dart/utils/DartResourceRetriever.hpp +104 -0
- include/dart/utils/FileInfoC3D.hpp +91 -0
- include/dart/utils/FileInfoDof.hpp +109 -0
- include/dart/utils/FileInfoWorld.hpp +75 -0
- include/dart/utils/PackageResourceRetriever.hpp +118 -0
- include/dart/utils/SkelParser.hpp +70 -0
- include/dart/utils/VskParser.hpp +108 -0
- include/dart/utils/XmlHelpers.hpp +243 -0
- include/dart/utils/all.hpp +14 -0
- include/dart/utils/detail/XmlHelpers-impl.hpp +213 -0
- include/dart/utils/mjcf/MjcfParser.hpp +80 -0
- include/dart/utils/mjcf/all.hpp +3 -0
- include/dart/utils/mjcf/mjcf.hpp +14 -0
- include/dart/utils/sdf/SdfParser.hpp +98 -0
- include/dart/utils/sdf/all.hpp +3 -0
- include/dart/utils/sdf/sdf.hpp +14 -0
- include/dart/utils/urdf/BackwardCompatibility.hpp +52 -0
- include/dart/utils/urdf/DartLoader.hpp +277 -0
- include/dart/utils/urdf/IncludeUrdf.hpp +47 -0
- include/dart/utils/urdf/URDFTypes.hpp +42 -0
- include/dart/utils/urdf/all.hpp +5 -0
- include/dart/utils/urdf/urdf.hpp +14 -0
- include/dart/utils/urdf/urdf_world_parser.hpp +83 -0
- include/dart/utils/utils.hpp +14 -0
- lib64/libdart-collision-bullet.a +0 -0
- lib64/libdart-collision-ode.a +0 -0
- lib64/libdart-external-odelcpsolver.a +0 -0
- lib64/libdart-gui-osg.a +0 -0
- lib64/libdart-optimizer-ipopt.a +0 -0
- lib64/libdart-optimizer-nlopt.a +0 -0
- lib64/libdart-utils-urdf.a +0 -0
- lib64/libdart-utils.a +0 -0
- lib64/libdart.a +0 -0
- lib64/pkgconfig/dart.pc +12 -0
- share/dart/cmake/DARTConfig.cmake +194 -0
- share/dart/cmake/DARTConfigVersion.cmake +65 -0
- share/dart/cmake/DARTFindBullet.cmake +96 -0
- share/dart/cmake/DARTFindEigen3.cmake +9 -0
- share/dart/cmake/DARTFindIPOPT.cmake +20 -0
- share/dart/cmake/DARTFindNLOPT.cmake +17 -0
- share/dart/cmake/DARTFindODE.cmake +23 -0
- share/dart/cmake/DARTFindOpenSceneGraph.cmake +69 -0
- share/dart/cmake/DARTFindassimp.cmake +18 -0
- share/dart/cmake/DARTFindfcl.cmake +23 -0
- share/dart/cmake/DARTFindfmt.cmake +9 -0
- share/dart/cmake/DARTFindimgui.cmake +21 -0
- share/dart/cmake/DARTFindoctomap.cmake +17 -0
- share/dart/cmake/DARTFindspdlog.cmake +9 -0
- share/dart/cmake/DARTFindtinyxml2.cmake +27 -0
- share/dart/cmake/DARTFindurdfdom.cmake +29 -0
- share/dart/cmake/FindIPOPT.cmake +54 -0
- share/dart/cmake/FindNLOPT.cmake +54 -0
- share/dart/cmake/FindODE.cmake +54 -0
- share/dart/cmake/Findassimp.cmake +56 -0
- share/dart/cmake/Findfcl.cmake +67 -0
- share/dart/cmake/Findimgui.cmake +70 -0
- share/dart/cmake/Findtinyxml2.cmake +54 -0
- share/dart/cmake/dart_collision-bulletComponent.cmake +19 -0
- share/dart/cmake/dart_collision-bulletTargets-release.cmake +19 -0
- share/dart/cmake/dart_collision-bulletTargets.cmake +122 -0
- share/dart/cmake/dart_collision-odeComponent.cmake +19 -0
- share/dart/cmake/dart_collision-odeTargets-release.cmake +19 -0
- share/dart/cmake/dart_collision-odeTargets.cmake +122 -0
- share/dart/cmake/dart_dartComponent.cmake +19 -0
- share/dart/cmake/dart_dartTargets-release.cmake +19 -0
- share/dart/cmake/dart_dartTargets.cmake +125 -0
- share/dart/cmake/dart_external-odelcpsolverComponent.cmake +19 -0
- share/dart/cmake/dart_external-odelcpsolverTargets-release.cmake +19 -0
- share/dart/cmake/dart_external-odelcpsolverTargets.cmake +106 -0
- share/dart/cmake/dart_gui-osgComponent.cmake +19 -0
- share/dart/cmake/dart_gui-osgTargets-release.cmake +19 -0
- share/dart/cmake/dart_gui-osgTargets.cmake +122 -0
- share/dart/cmake/dart_optimizer-ipoptComponent.cmake +19 -0
- share/dart/cmake/dart_optimizer-ipoptTargets-release.cmake +19 -0
- share/dart/cmake/dart_optimizer-ipoptTargets.cmake +123 -0
- share/dart/cmake/dart_optimizer-nloptComponent.cmake +19 -0
- share/dart/cmake/dart_optimizer-nloptTargets-release.cmake +19 -0
- share/dart/cmake/dart_optimizer-nloptTargets.cmake +123 -0
- share/dart/cmake/dart_utils-urdfComponent.cmake +19 -0
- share/dart/cmake/dart_utils-urdfTargets-release.cmake +19 -0
- share/dart/cmake/dart_utils-urdfTargets.cmake +122 -0
- share/dart/cmake/dart_utilsComponent.cmake +19 -0
- share/dart/cmake/dart_utilsTargets-release.cmake +19 -0
- share/dart/cmake/dart_utilsTargets.cmake +122 -0
- share/dart/package.xml +42 -0
- share/doc/dart/data/c3d/nick_freeform_001.c3d +0 -0
- share/doc/dart/data/c3d/squat.c3d +0 -0
- share/doc/dart/data/dof/RHand.dof +205 -0
- share/doc/dart/data/dof/fixedHand.dof +205 -0
- share/doc/dart/data/dof/init_Tpose.dof +240 -0
- share/doc/dart/data/dof/same.dof +1003 -0
- share/doc/dart/data/dof/simMotion.dof +1817 -0
- share/doc/dart/data/dof/simMotion1.dof +1355 -0
- share/doc/dart/data/etc/fort.4 +43 -0
- share/doc/dart/data/humanJointLimits/neuralnets/net-larm +0 -0
- share/doc/dart/data/humanJointLimits/neuralnets/net-lleg +0 -0
- share/doc/dart/data/mjcf/openai/LICENSE.md +36 -0
- share/doc/dart/data/mjcf/openai/ant.xml +81 -0
- share/doc/dart/data/mjcf/openai/half_cheetah.xml +96 -0
- share/doc/dart/data/mjcf/openai/hopper.xml +50 -0
- share/doc/dart/data/mjcf/openai/humanoid.xml +121 -0
- share/doc/dart/data/mjcf/openai/humanoidstandup.xml +121 -0
- share/doc/dart/data/mjcf/openai/inverted_double_pendulum.xml +47 -0
- share/doc/dart/data/mjcf/openai/inverted_pendulum.xml +27 -0
- share/doc/dart/data/mjcf/openai/point.xml +31 -0
- share/doc/dart/data/mjcf/openai/pusher.xml +91 -0
- share/doc/dart/data/mjcf/openai/reacher.xml +39 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/pick_and_place.xml +35 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/push.xml +32 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/reach.xml +26 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/robot.xml +123 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/shared.xml +66 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/slide.xml +32 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/.get +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/base_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/bellows_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/elbow_flex_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/estop_link.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/forearm_roll_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/gripper_link.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/head_pan_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/head_tilt_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/l_wheel_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/laser_link.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/r_wheel_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/shoulder_lift_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/shoulder_pan_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/torso_fixed_link.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/torso_lift_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/upperarm_roll_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/wrist_flex_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/wrist_roll_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/textures/block.png +0 -0
- share/doc/dart/data/mjcf/openai/robotics/textures/block_hidden.png +0 -0
- share/doc/dart/data/mjcf/openai/striker.xml +101 -0
- share/doc/dart/data/mjcf/openai/swimmer.xml +39 -0
- share/doc/dart/data/mjcf/openai/thrower.xml +127 -0
- share/doc/dart/data/mjcf/openai/walker2d.xml +62 -0
- share/doc/dart/data/mjcf/test/default.xml +17 -0
- share/doc/dart/data/mjcf/test/include_default.xml +8 -0
- share/doc/dart/data/mjcf/test/include_main.xml +12 -0
- share/doc/dart/data/obj/Body_Hip.obj +22830 -0
- share/doc/dart/data/obj/BoxSmall.obj +23 -0
- share/doc/dart/data/obj/foot.obj +10970 -0
- share/doc/dart/data/other/torus1.path +11991 -0
- share/doc/dart/data/other/torus1.tris +5329 -0
- share/doc/dart/data/other/torus2.path +11991 -0
- share/doc/dart/data/other/torus2.tris +12961 -0
- share/doc/dart/data/screencap/.KEEP +0 -0
- share/doc/dart/data/sdf/atlas/atlas_v3.urdf +914 -0
- share/doc/dart/data/sdf/atlas/atlas_v3_no_head.sdf +1541 -0
- share/doc/dart/data/sdf/atlas/atlas_v3_no_head.urdf +914 -0
- share/doc/dart/data/sdf/atlas/atlas_v3_no_head_soft_feet.sdf +1567 -0
- share/doc/dart/data/sdf/atlas/ground.urdf +28 -0
- share/doc/dart/data/sdf/atlas/head.dae +8607 -0
- share/doc/dart/data/sdf/atlas/head.stl +0 -0
- share/doc/dart/data/sdf/atlas/head_camera.dae +2326 -0
- share/doc/dart/data/sdf/atlas/head_camera.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_clav.dae +1278 -0
- share/doc/dart/data/sdf/atlas/l_clav.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_farm.dae +1204 -0
- share/doc/dart/data/sdf/atlas/l_farm.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_foot.dae +1330 -0
- share/doc/dart/data/sdf/atlas/l_foot.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_hand.dae +964 -0
- share/doc/dart/data/sdf/atlas/l_hand.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_larm.dae +1378 -0
- share/doc/dart/data/sdf/atlas/l_larm.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_lglut.dae +897 -0
- share/doc/dart/data/sdf/atlas/l_lglut.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_lleg.dae +6660 -0
- share/doc/dart/data/sdf/atlas/l_lleg.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_scap.dae +1531 -0
- share/doc/dart/data/sdf/atlas/l_scap.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_talus.dae +374 -0
- share/doc/dart/data/sdf/atlas/l_talus.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_uarm.dae +1204 -0
- share/doc/dart/data/sdf/atlas/l_uarm.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_uglut.dae +398 -0
- share/doc/dart/data/sdf/atlas/l_uglut.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_uleg.dae +9087 -0
- share/doc/dart/data/sdf/atlas/l_uleg.stl +0 -0
- share/doc/dart/data/sdf/atlas/ltorso.dae +614 -0
- share/doc/dart/data/sdf/atlas/ltorso.stl +0 -0
- share/doc/dart/data/sdf/atlas/mtorso.dae +266 -0
- share/doc/dart/data/sdf/atlas/mtorso.stl +0 -0
- share/doc/dart/data/sdf/atlas/pelvis.dae +8727 -0
- share/doc/dart/data/sdf/atlas/pelvis.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_clav.dae +1278 -0
- share/doc/dart/data/sdf/atlas/r_clav.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_farm.dae +1204 -0
- share/doc/dart/data/sdf/atlas/r_farm.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_foot.dae +1330 -0
- share/doc/dart/data/sdf/atlas/r_foot.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_hand.dae +904 -0
- share/doc/dart/data/sdf/atlas/r_hand.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_larm.dae +1378 -0
- share/doc/dart/data/sdf/atlas/r_larm.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_lglut.dae +897 -0
- share/doc/dart/data/sdf/atlas/r_lglut.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_lleg.dae +6661 -0
- share/doc/dart/data/sdf/atlas/r_lleg.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_scap.dae +1531 -0
- share/doc/dart/data/sdf/atlas/r_scap.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_talus.dae +374 -0
- share/doc/dart/data/sdf/atlas/r_talus.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_uarm.dae +1144 -0
- share/doc/dart/data/sdf/atlas/r_uarm.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_uglut.dae +398 -0
- share/doc/dart/data/sdf/atlas/r_uglut.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_uleg.dae +9087 -0
- share/doc/dart/data/sdf/atlas/r_uleg.stl +0 -0
- share/doc/dart/data/sdf/atlas/utorso.dae +28342 -0
- share/doc/dart/data/sdf/atlas/utorso.stl +0 -0
- share/doc/dart/data/sdf/atlas/utorso_mod.dae +16508 -0
- share/doc/dart/data/sdf/atlas/utorso_mod.stl +0 -0
- share/doc/dart/data/sdf/atlas/utorso_pack.dae +8521 -0
- share/doc/dart/data/sdf/atlas/utorso_pack.stl +0 -0
- share/doc/dart/data/sdf/benchmark.world +2510 -0
- share/doc/dart/data/sdf/double_pendulum.world +168 -0
- share/doc/dart/data/sdf/double_pendulum_with_base.world +263 -0
- share/doc/dart/data/sdf/empty.world +13 -0
- share/doc/dart/data/sdf/ground.world +48 -0
- share/doc/dart/data/sdf/materials/textures/atlas_cage_and_camera_diffuse_flat.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/drc_extremities_diffuse.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/drc_labels_1.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/drc_torso_head_diffuse.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/extremities_diffuse_unplugged.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/right_leg_diffuse_unplugged.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/torso_diffuse_unplugged.jpg +0 -0
- share/doc/dart/data/sdf/quad.sdf +867 -0
- share/doc/dart/data/sdf/test/force_torque_test.world +173 -0
- share/doc/dart/data/sdf/test/force_torque_test2.world +214 -0
- share/doc/dart/data/sdf/test/issue1193_revolute_test.sdf +70 -0
- share/doc/dart/data/sdf/test/issue1193_revolute_with_offset_test.sdf +70 -0
- share/doc/dart/data/sdf/test/issue1624_cubes.sdf +5037 -0
- share/doc/dart/data/sdf/test/single_bodynode_skeleton.world +55 -0
- share/doc/dart/data/sdf/test/test_issue1583.model +45 -0
- share/doc/dart/data/sdf/test/test_issue1596.model +182 -0
- share/doc/dart/data/sdf/test/test_skeleton_joint.world +278 -0
- share/doc/dart/data/skel/biped.skel +850 -0
- share/doc/dart/data/skel/bullet_collision.skel +174 -0
- share/doc/dart/data/skel/chain.skel +212 -0
- share/doc/dart/data/skel/cube.skel +71 -0
- share/doc/dart/data/skel/cubes.skel +137 -0
- share/doc/dart/data/skel/empty.skel +10 -0
- share/doc/dart/data/skel/freeChain.skel +212 -0
- share/doc/dart/data/skel/fullbody1.skel +1177 -0
- share/doc/dart/data/skel/ground.skel +31 -0
- share/doc/dart/data/skel/joint_limit.skel +123 -0
- share/doc/dart/data/skel/kima/abdomen.dae +18933 -0
- share/doc/dart/data/skel/kima/head.dae +34634 -0
- share/doc/dart/data/skel/kima/kima_human_edited.skel +933 -0
- share/doc/dart/data/skel/kima/kima_human_left_arm.skel +323 -0
- share/doc/dart/data/skel/kima/kima_human_left_leg.skel +327 -0
- share/doc/dart/data/skel/kima/l-clavicle.dae +20111 -0
- share/doc/dart/data/skel/kima/l-foot.dae +28208 -0
- share/doc/dart/data/skel/kima/pelvis.dae +35919 -0
- share/doc/dart/data/skel/kima/r-clavicle.dae +20090 -0
- share/doc/dart/data/skel/kima/thorax.dae +47337 -0
- share/doc/dart/data/skel/mesh_collision.skel +137 -0
- share/doc/dart/data/skel/shapes.skel +378 -0
- share/doc/dart/data/skel/skateboard.skel +222 -0
- share/doc/dart/data/skel/softBodies.skel +284 -0
- share/doc/dart/data/skel/soft_cubes.skel +134 -0
- share/doc/dart/data/skel/soft_open_chain.skel +241 -0
- share/doc/dart/data/skel/sphere.skel +74 -0
- share/doc/dart/data/skel/spheres.skel +118 -0
- share/doc/dart/data/skel/test/SimplePendulum.skel +141 -0
- share/doc/dart/data/skel/test/ball_joints.skel +49 -0
- share/doc/dart/data/skel/test/box_stacking.skel +346 -0
- share/doc/dart/data/skel/test/boxes.skel +52 -0
- share/doc/dart/data/skel/test/chainwhipa.skel +193 -0
- share/doc/dart/data/skel/test/collision_of_prescribed_joints_test.skel +249 -0
- share/doc/dart/data/skel/test/dof_attribute_test.skel +206 -0
- share/doc/dart/data/skel/test/double_pendulum.skel +76 -0
- share/doc/dart/data/skel/test/double_pendulum_ball_joint.skel +76 -0
- share/doc/dart/data/skel/test/double_pendulum_euler_joint.skel +78 -0
- share/doc/dart/data/skel/test/double_pendulum_with_base.skel +1390 -0
- share/doc/dart/data/skel/test/drop.skel +116 -0
- share/doc/dart/data/skel/test/drop_BENCHMARK.skel +10 -0
- share/doc/dart/data/skel/test/drop_unrotated_box.skel +156 -0
- share/doc/dart/data/skel/test/empty.skel +10 -0
- share/doc/dart/data/skel/test/file_info_world_test.skel +1177 -0
- share/doc/dart/data/skel/test/free_joints.skel +49 -0
- share/doc/dart/data/skel/test/gazebo/drop_test.skel +161 -0
- share/doc/dart/data/skel/test/gazebo/force_torque_test.skel +138 -0
- share/doc/dart/data/skel/test/gazebo/force_torque_test2.skel +171 -0
- share/doc/dart/data/skel/test/hybrid_dynamics_test.skel +172 -0
- share/doc/dart/data/skel/test/joint_actuator_type_test.skel +185 -0
- share/doc/dart/data/skel/test/joint_dynamics_elements_test.skel +103 -0
- share/doc/dart/data/skel/test/joint_friction_test.skel +80 -0
- share/doc/dart/data/skel/test/joint_limit_test.skel +80 -0
- share/doc/dart/data/skel/test/planar_joint.skel +167 -0
- share/doc/dart/data/skel/test/serial_chain_BENCHMARK.skel +10 -0
- share/doc/dart/data/skel/test/serial_chain_ball_joint.skel +212 -0
- share/doc/dart/data/skel/test/serial_chain_ball_joint_20.skel +412 -0
- share/doc/dart/data/skel/test/serial_chain_ball_joint_40.skel +812 -0
- share/doc/dart/data/skel/test/serial_chain_eulerxyz_joint.skel +224 -0
- share/doc/dart/data/skel/test/serial_chain_revolute_joint.skel +244 -0
- share/doc/dart/data/skel/test/simple_tree_structure.skel +108 -0
- share/doc/dart/data/skel/test/simple_tree_structure_ball_joint.skel +108 -0
- share/doc/dart/data/skel/test/simple_tree_structure_euler_joint.skel +111 -0
- share/doc/dart/data/skel/test/single_pendulum.skel +55 -0
- share/doc/dart/data/skel/test/single_pendulum_ball_joint.skel +55 -0
- share/doc/dart/data/skel/test/single_pendulum_euler_joint.skel +56 -0
- share/doc/dart/data/skel/test/spheres.skel +118 -0
- share/doc/dart/data/skel/test/test_adaptive_deformable.skel +88 -0
- share/doc/dart/data/skel/test/test_articulated_bodies.skel +112 -0
- share/doc/dart/data/skel/test/test_articulated_bodies_10bodies.skel +401 -0
- share/doc/dart/data/skel/test/test_double_pendulum.skel +105 -0
- share/doc/dart/data/skel/test/test_drop_box.skel +87 -0
- share/doc/dart/data/skel/test/test_drop_box_offset.skel +87 -0
- share/doc/dart/data/skel/test/test_drop_low_stiffness.skel +86 -0
- share/doc/dart/data/skel/test/test_drop_sphere.skel +86 -0
- share/doc/dart/data/skel/test/test_shapes.skel +324 -0
- share/doc/dart/data/skel/test/test_single_body.skel +55 -0
- share/doc/dart/data/skel/test/test_single_pendulum.skel +55 -0
- share/doc/dart/data/skel/test/translational_joints.skel +49 -0
- share/doc/dart/data/skel/test/tree_structure.skel +428 -0
- share/doc/dart/data/skel/test/tree_structure_ball_joint.skel +441 -0
- share/doc/dart/data/skel/test/tree_structure_euler_joint.skel +441 -0
- share/doc/dart/data/skel/two_cubes.skel +118 -0
- share/doc/dart/data/skel/vehicle.skel +322 -0
- share/doc/dart/data/test/hello_world.txt +1 -0
- share/doc/dart/data/urdf/KR5/KR5 sixx R650.urdf +397 -0
- share/doc/dart/data/urdf/KR5/ground.urdf +28 -0
- share/doc/dart/data/urdf/KR5/meshes/base_link.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/bicep.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/elbow.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/forearm.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/palm.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/shoulder.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/wrist.STL +0 -0
- share/doc/dart/data/urdf/drchubo/CMakeLists.txt +5 -0
- share/doc/dart/data/urdf/drchubo/drchubo.urdf +1508 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LAP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LAR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LEP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LF1.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LF2.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LF3.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LHP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LHR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LHY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LKP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LSP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LSR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LSY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LWP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LWR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LWY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_NK1_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_NK2.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_NKY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RAP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RAR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_REP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RF1.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RF2.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RF3.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RHP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RHR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RHY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RKP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RSP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RSR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RSY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RWP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RWR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RWY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_TSY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_Torso_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/package.xml +11 -0
- share/doc/dart/data/urdf/test/invalid.urdf +1 -0
- share/doc/dart/data/urdf/test/invalid_mesh.stl +1 -0
- share/doc/dart/data/urdf/test/invalid_mesh.urdf +10 -0
- share/doc/dart/data/urdf/test/issue838.urdf +86 -0
- share/doc/dart/data/urdf/test/joint_properties.urdf +60 -0
- share/doc/dart/data/urdf/test/missing_mesh.urdf +10 -0
- share/doc/dart/data/urdf/test/missing_package.urdf +10 -0
- share/doc/dart/data/urdf/test/primitive_geometry.urdf +12 -0
- share/doc/dart/data/urdf/test/testWorld.urdf +9 -0
- share/doc/dart/data/urdf/wam/meshes/images/base_gray_128x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/forearm_256x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/lpu_128x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/shoulder_256x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/upperarm_128x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/wrist_yaw_128x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam1.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam1.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam1_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam2.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam2.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam2_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam3.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam3.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam3_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam4.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam4.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam4_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam5.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam5.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam5_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam6.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam6.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam6_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam7.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam7.dae +137 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam7_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam_base.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam_base.dae +103 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam_base_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/wam.urdf +230 -0
- share/doc/dart/data/vsk/Nick01.vsk +398 -0
- share/doc/dart/data/vsk/SehoonVSK3.vsk +398 -0
- share/doc/dart/data/vsk/Yuting.vsk +398 -0
- share/doc/dart/data/vsk/test/empty.vsk +3 -0
- share/doc/dart/examples/CMakeLists.txt +44 -0
- share/doc/dart/examples/README.md +33 -0
- share/doc/dart/examples/add_delete_skels/CMakeLists.txt +19 -0
- share/doc/dart/examples/add_delete_skels/main.cpp +165 -0
- share/doc/dart/examples/atlas_puppet/CMakeLists.txt +19 -0
- share/doc/dart/examples/atlas_puppet/README.md +20 -0
- share/doc/dart/examples/atlas_puppet/main.cpp +930 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconEventHandler.cpp +71 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconEventHandler.hpp +56 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWidget.cpp +187 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWidget.hpp +85 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWorldNode.cpp +134 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWorldNode.hpp +75 -0
- share/doc/dart/examples/atlas_simbicon/CMakeLists.txt +19 -0
- share/doc/dart/examples/atlas_simbicon/Controller.cpp +996 -0
- share/doc/dart/examples/atlas_simbicon/Controller.hpp +203 -0
- share/doc/dart/examples/atlas_simbicon/README.md +20 -0
- share/doc/dart/examples/atlas_simbicon/State.cpp +674 -0
- share/doc/dart/examples/atlas_simbicon/State.hpp +336 -0
- share/doc/dart/examples/atlas_simbicon/StateMachine.cpp +222 -0
- share/doc/dart/examples/atlas_simbicon/StateMachine.hpp +134 -0
- share/doc/dart/examples/atlas_simbicon/TerminalCondition.cpp +111 -0
- share/doc/dart/examples/atlas_simbicon/TerminalCondition.hpp +102 -0
- share/doc/dart/examples/atlas_simbicon/main.cpp +102 -0
- share/doc/dart/examples/biped_stand/CMakeLists.txt +19 -0
- share/doc/dart/examples/biped_stand/README.md +20 -0
- share/doc/dart/examples/biped_stand/main.cpp +287 -0
- share/doc/dart/examples/box_stacking/CMakeLists.txt +19 -0
- share/doc/dart/examples/box_stacking/README.md +20 -0
- share/doc/dart/examples/box_stacking/main.cpp +417 -0
- share/doc/dart/examples/boxes/CMakeLists.txt +19 -0
- share/doc/dart/examples/boxes/README.md +20 -0
- share/doc/dart/examples/boxes/main.cpp +157 -0
- share/doc/dart/examples/drag_and_drop/CMakeLists.txt +19 -0
- share/doc/dart/examples/drag_and_drop/README.md +20 -0
- share/doc/dart/examples/drag_and_drop/main.cpp +101 -0
- share/doc/dart/examples/empty/CMakeLists.txt +19 -0
- share/doc/dart/examples/empty/README.md +20 -0
- share/doc/dart/examples/empty/main.cpp +164 -0
- share/doc/dart/examples/fetch/CMakeLists.txt +19 -0
- share/doc/dart/examples/fetch/README.md +20 -0
- share/doc/dart/examples/fetch/main.cpp +246 -0
- share/doc/dart/examples/hardcoded_design/CMakeLists.txt +19 -0
- share/doc/dart/examples/hardcoded_design/HardcodedEventHandler.cpp +71 -0
- share/doc/dart/examples/hardcoded_design/HardcodedEventHandler.hpp +56 -0
- share/doc/dart/examples/hardcoded_design/README.md +27 -0
- share/doc/dart/examples/hardcoded_design/main.cpp +186 -0
- share/doc/dart/examples/heightmap/CMakeLists.txt +19 -0
- share/doc/dart/examples/heightmap/README.md +20 -0
- share/doc/dart/examples/heightmap/main.cpp +460 -0
- share/doc/dart/examples/hello_world/CMakeLists.txt +19 -0
- share/doc/dart/examples/hello_world/README.md +20 -0
- share/doc/dart/examples/hello_world/main.cpp +114 -0
- share/doc/dart/examples/hubo_puppet/CMakeLists.txt +19 -0
- share/doc/dart/examples/hubo_puppet/README.md +20 -0
- share/doc/dart/examples/hubo_puppet/main.cpp +1464 -0
- share/doc/dart/examples/human_joint_limits/CMakeLists.txt +49 -0
- share/doc/dart/examples/human_joint_limits/HumanArmJointLimitConstraint.cpp +411 -0
- share/doc/dart/examples/human_joint_limits/HumanArmJointLimitConstraint.hpp +182 -0
- share/doc/dart/examples/human_joint_limits/HumanLegJointLimitConstraint.cpp +432 -0
- share/doc/dart/examples/human_joint_limits/HumanLegJointLimitConstraint.hpp +179 -0
- share/doc/dart/examples/human_joint_limits/main.cpp +157 -0
- share/doc/dart/examples/hybrid_dynamics/CMakeLists.txt +19 -0
- share/doc/dart/examples/hybrid_dynamics/README.md +17 -0
- share/doc/dart/examples/hybrid_dynamics/main.cpp +187 -0
- share/doc/dart/examples/imgui/CMakeLists.txt +19 -0
- share/doc/dart/examples/imgui/README.md +20 -0
- share/doc/dart/examples/imgui/main.cpp +289 -0
- share/doc/dart/examples/joint_constraints/CMakeLists.txt +19 -0
- share/doc/dart/examples/joint_constraints/Controller.cpp +110 -0
- share/doc/dart/examples/joint_constraints/Controller.hpp +105 -0
- share/doc/dart/examples/joint_constraints/README.md +22 -0
- share/doc/dart/examples/joint_constraints/main.cpp +242 -0
- share/doc/dart/examples/mixed_chain/CMakeLists.txt +19 -0
- share/doc/dart/examples/mixed_chain/README.md +35 -0
- share/doc/dart/examples/mixed_chain/main.cpp +188 -0
- share/doc/dart/examples/operational_space_control/CMakeLists.txt +19 -0
- share/doc/dart/examples/operational_space_control/README.md +20 -0
- share/doc/dart/examples/operational_space_control/main.cpp +338 -0
- share/doc/dart/examples/point_cloud/CMakeLists.txt +19 -0
- share/doc/dart/examples/point_cloud/README.md +20 -0
- share/doc/dart/examples/point_cloud/main.cpp +740 -0
- share/doc/dart/examples/rerun/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_chain/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_chain/README.md +19 -0
- share/doc/dart/examples/rigid_chain/main.cpp +110 -0
- share/doc/dart/examples/rigid_cubes/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_cubes/README.md +91 -0
- share/doc/dart/examples/rigid_cubes/main.cpp +201 -0
- share/doc/dart/examples/rigid_loop/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_loop/README.md +34 -0
- share/doc/dart/examples/rigid_loop/main.cpp +127 -0
- share/doc/dart/examples/rigid_shapes/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_shapes/README.md +19 -0
- share/doc/dart/examples/rigid_shapes/main.cpp +250 -0
- share/doc/dart/examples/simple_frames/CMakeLists.txt +19 -0
- share/doc/dart/examples/simple_frames/README.md +27 -0
- share/doc/dart/examples/simple_frames/main.cpp +124 -0
- share/doc/dart/examples/simulation_event_handler/CMakeLists.txt +19 -0
- share/doc/dart/examples/simulation_event_handler/README.md +189 -0
- share/doc/dart/examples/simulation_event_handler/SimulationEventHandler.cpp +572 -0
- share/doc/dart/examples/simulation_event_handler/SimulationEventHandler.hpp +211 -0
- share/doc/dart/examples/simulation_event_handler/main.cpp +277 -0
- share/doc/dart/examples/soft_bodies/CMakeLists.txt +19 -0
- share/doc/dart/examples/soft_bodies/README.md +20 -0
- share/doc/dart/examples/soft_bodies/main.cpp +219 -0
- share/doc/dart/examples/speed_test/CMakeLists.txt +19 -0
- share/doc/dart/examples/speed_test/README.md +20 -0
- share/doc/dart/examples/speed_test/main.cpp +250 -0
- share/doc/dart/examples/tinkertoy/CMakeLists.txt +19 -0
- share/doc/dart/examples/tinkertoy/README.md +20 -0
- share/doc/dart/examples/tinkertoy/TinkertoyWidget.cpp +208 -0
- share/doc/dart/examples/tinkertoy/TinkertoyWidget.hpp +70 -0
- share/doc/dart/examples/tinkertoy/TinkertoyWorldNode.cpp +35 -0
- share/doc/dart/examples/tinkertoy/TinkertoyWorldNode.hpp +470 -0
- share/doc/dart/examples/tinkertoy/main.cpp +186 -0
- share/doc/dart/examples/vehicle/CMakeLists.txt +19 -0
- share/doc/dart/examples/vehicle/README.md +22 -0
- share/doc/dart/examples/vehicle/main.cpp +195 -0
- share/doc/dart/examples/wam_ikfast/CMakeLists.txt +22 -0
- share/doc/dart/examples/wam_ikfast/Helpers.cpp +148 -0
- share/doc/dart/examples/wam_ikfast/Helpers.hpp +46 -0
- share/doc/dart/examples/wam_ikfast/InputHandler.cpp +110 -0
- share/doc/dart/examples/wam_ikfast/InputHandler.hpp +73 -0
- share/doc/dart/examples/wam_ikfast/README.md +20 -0
- share/doc/dart/examples/wam_ikfast/WamWorld.cpp +46 -0
- share/doc/dart/examples/wam_ikfast/WamWorld.hpp +53 -0
- share/doc/dart/examples/wam_ikfast/ikfast/CMakeLists.txt +11 -0
- share/doc/dart/examples/wam_ikfast/ikfast/ikfast71.Transform6D.4_6_9_10_11_12_f8.cpp +14930 -0
- share/doc/dart/examples/wam_ikfast/osgWamIkFast.cpp +96 -0
- share/doc/dart/tutorials/CMakeLists.txt +12 -0
- share/doc/dart/tutorials/README.md +45 -0
- share/doc/dart/tutorials/tutorial_biped/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_biped/README +18 -0
- share/doc/dart/tutorials/tutorial_biped/main.cpp +374 -0
- share/doc/dart/tutorials/tutorial_biped_finished/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_biped_finished/README +18 -0
- share/doc/dart/tutorials/tutorial_biped_finished/main.cpp +532 -0
- share/doc/dart/tutorials/tutorial_collisions/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_collisions/README +18 -0
- share/doc/dart/tutorials/tutorial_collisions/main.cpp +506 -0
- share/doc/dart/tutorials/tutorial_collisions_finished/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_collisions_finished/README +18 -0
- share/doc/dart/tutorials/tutorial_collisions_finished/main.cpp +679 -0
- share/doc/dart/tutorials/tutorial_dominoes/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_dominoes/README +18 -0
- share/doc/dart/tutorials/tutorial_dominoes/main.cpp +394 -0
- share/doc/dart/tutorials/tutorial_dominoes_finished/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_dominoes_finished/README +18 -0
- share/doc/dart/tutorials/tutorial_dominoes_finished/main.cpp +559 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum/README +18 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum/main.cpp +443 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum_finished/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum_finished/README +18 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum_finished/main.cpp +512 -0
|
@@ -0,0 +1,743 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2011-2025, The DART development contributors
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* The list of contributors can be found at:
|
|
6
|
+
* https://github.com/dartsim/dart/blob/main/LICENSE
|
|
7
|
+
*
|
|
8
|
+
* This file is provided under the following "BSD-style" License:
|
|
9
|
+
* Redistribution and use in source and binary forms, with or
|
|
10
|
+
* without modification, are permitted provided that the following
|
|
11
|
+
* conditions are met:
|
|
12
|
+
* * Redistributions of source code must retain the above copyright
|
|
13
|
+
* notice, this list of conditions and the following disclaimer.
|
|
14
|
+
* * Redistributions in binary form must reproduce the above
|
|
15
|
+
* copyright notice, this list of conditions and the following
|
|
16
|
+
* disclaimer in the documentation and/or other materials provided
|
|
17
|
+
* with the distribution.
|
|
18
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
|
19
|
+
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
20
|
+
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
21
|
+
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
|
23
|
+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
25
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
26
|
+
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
27
|
+
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
28
|
+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
29
|
+
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
30
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
/*
|
|
34
|
+
* This file contains a derivative work based on the convhull_3d algorithm:
|
|
35
|
+
*
|
|
36
|
+
* Original convhull_3d implementation - MIT License
|
|
37
|
+
* Copyright (c) 2017-2021 Leo McCormack
|
|
38
|
+
* Derived from computational-geometry-toolbox by George Papazafeiropoulos
|
|
39
|
+
* (c) 2014, distributed under BSD 2-clause license.
|
|
40
|
+
*
|
|
41
|
+
* DART Modifications (2025):
|
|
42
|
+
* - Refactored for modern C++ with Eigen types
|
|
43
|
+
* - Optimized for performance (20-30% faster than baseline)
|
|
44
|
+
* - Replaced std::pow(x, 2.0) with x*x for critical path
|
|
45
|
+
* - Cache-friendly memory access patterns
|
|
46
|
+
* - Compiler-optimized scalar operations (no explicit SIMD)
|
|
47
|
+
*
|
|
48
|
+
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
49
|
+
* copy of this software and associated documentation files (the "Software"),
|
|
50
|
+
* to deal in the Software without restriction, including without limitation
|
|
51
|
+
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
52
|
+
* and/or sell copies of the Software, and to permit persons to whom the
|
|
53
|
+
* Software is furnished to do so, subject to the following conditions:
|
|
54
|
+
*
|
|
55
|
+
* The above copyright notice and this permission notice shall be included in
|
|
56
|
+
* all copies or substantial portions of the Software.
|
|
57
|
+
*
|
|
58
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
59
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
60
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
61
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
62
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
63
|
+
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
64
|
+
* DEALINGS IN THE SOFTWARE.
|
|
65
|
+
*/
|
|
66
|
+
|
|
67
|
+
#pragma once
|
|
68
|
+
|
|
69
|
+
#include <dart/math/Constants.hpp>
|
|
70
|
+
|
|
71
|
+
#include <Eigen/Core>
|
|
72
|
+
|
|
73
|
+
#include <algorithm>
|
|
74
|
+
#include <limits>
|
|
75
|
+
#include <vector>
|
|
76
|
+
|
|
77
|
+
#include <cassert>
|
|
78
|
+
#include <cmath>
|
|
79
|
+
#include <cstring>
|
|
80
|
+
|
|
81
|
+
namespace dart::math::detail {
|
|
82
|
+
|
|
83
|
+
/// Internal vertex structure for convex hull computation (implementation
|
|
84
|
+
/// detail) This struct is only used internally by the implementation and is not
|
|
85
|
+
/// part of the public API
|
|
86
|
+
template <typename S>
|
|
87
|
+
struct ConvexHullVertex
|
|
88
|
+
{
|
|
89
|
+
union
|
|
90
|
+
{
|
|
91
|
+
S v[3];
|
|
92
|
+
struct
|
|
93
|
+
{
|
|
94
|
+
S x, y, z;
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
namespace convhull_internal {
|
|
100
|
+
|
|
101
|
+
// Modern C++: Use constexpr for compile-time constants
|
|
102
|
+
constexpr int kMaxNumFaces = 50000;
|
|
103
|
+
constexpr int kDimensions = 3; // Renamed: more descriptive (always 3D)
|
|
104
|
+
|
|
105
|
+
// Helper struct for sorting
|
|
106
|
+
template <typename S>
|
|
107
|
+
struct FloatWithIndex
|
|
108
|
+
{
|
|
109
|
+
S value; // Renamed: 'val' -> 'value' for clarity
|
|
110
|
+
int index; // Renamed: 'idx' -> 'index' for clarity
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/// Generates deterministic noise to avoid degeneracy in convex hull computation
|
|
114
|
+
/// @tparam S Scalar type (float or double)
|
|
115
|
+
/// @param x First coordinate for noise generation
|
|
116
|
+
/// @param y Second coordinate for noise generation
|
|
117
|
+
/// @return Small noise value (~1e-7)
|
|
118
|
+
template <typename S>
|
|
119
|
+
[[nodiscard]] inline S generateNoise(int x, int y) noexcept
|
|
120
|
+
{
|
|
121
|
+
constexpr S kNoiseScale = static_cast<S>(0.0000001);
|
|
122
|
+
constexpr S kHashA = static_cast<S>(12.9898);
|
|
123
|
+
constexpr S kHashB = static_cast<S>(78.233);
|
|
124
|
+
constexpr S kHashC = static_cast<S>(43758.5453);
|
|
125
|
+
|
|
126
|
+
const S hashValue = x * kHashA + y * kHashB;
|
|
127
|
+
const double sinModulo = std::fmod(static_cast<double>(hashValue), 3.14);
|
|
128
|
+
double integerPart;
|
|
129
|
+
return kNoiseScale
|
|
130
|
+
* static_cast<S>(std::modf(
|
|
131
|
+
std::sin(sinModulo) * static_cast<double>(kHashC), &integerPart));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
template <typename S>
|
|
135
|
+
inline S det4x4(S* m)
|
|
136
|
+
{
|
|
137
|
+
return m[3] * m[6] * m[9] * m[12] - m[2] * m[7] * m[9] * m[12]
|
|
138
|
+
- m[3] * m[5] * m[10] * m[12] + m[1] * m[7] * m[10] * m[12]
|
|
139
|
+
+ m[2] * m[5] * m[11] * m[12] - m[1] * m[6] * m[11] * m[12]
|
|
140
|
+
- m[3] * m[6] * m[8] * m[13] + m[2] * m[7] * m[8] * m[13]
|
|
141
|
+
+ m[3] * m[4] * m[10] * m[13] - m[0] * m[7] * m[10] * m[13]
|
|
142
|
+
- m[2] * m[4] * m[11] * m[13] + m[0] * m[6] * m[11] * m[13]
|
|
143
|
+
+ m[3] * m[5] * m[8] * m[14] - m[1] * m[7] * m[8] * m[14]
|
|
144
|
+
- m[3] * m[4] * m[9] * m[14] + m[0] * m[7] * m[9] * m[14]
|
|
145
|
+
+ m[1] * m[4] * m[11] * m[14] - m[0] * m[5] * m[11] * m[14]
|
|
146
|
+
- m[2] * m[5] * m[8] * m[15] + m[1] * m[6] * m[8] * m[15]
|
|
147
|
+
+ m[2] * m[4] * m[9] * m[15] - m[0] * m[6] * m[9] * m[15]
|
|
148
|
+
- m[1] * m[4] * m[10] * m[15] + m[0] * m[5] * m[10] * m[15];
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
template <typename S>
|
|
152
|
+
[[gnu::always_inline]] inline void computePlane3d(
|
|
153
|
+
S* p, S* c, S* kSpatialDimension) noexcept
|
|
154
|
+
{
|
|
155
|
+
// Compute edge vectors (unrolled for better performance)
|
|
156
|
+
const S dx1 = p[3] - p[0];
|
|
157
|
+
const S dy1 = p[4] - p[1];
|
|
158
|
+
const S dz1 = p[5] - p[2];
|
|
159
|
+
const S dx2 = p[6] - p[0];
|
|
160
|
+
const S dy2 = p[7] - p[1];
|
|
161
|
+
const S dz2 = p[8] - p[2];
|
|
162
|
+
|
|
163
|
+
// Cross product (manually unrolled, faster than loop)
|
|
164
|
+
c[0] = dy1 * dz2 - dz1 * dy2;
|
|
165
|
+
c[1] = dz1 * dx2 - dx1 * dz2;
|
|
166
|
+
c[2] = dx1 * dy2 - dy1 * dx2;
|
|
167
|
+
|
|
168
|
+
// Normalize (use x*x instead of pow for speed)
|
|
169
|
+
const S normC = std::sqrt(c[0] * c[0] + c[1] * c[1] + c[2] * c[2]);
|
|
170
|
+
const S invNormC = static_cast<S>(1.0) / normC;
|
|
171
|
+
c[0] *= invNormC;
|
|
172
|
+
c[1] *= invNormC;
|
|
173
|
+
c[2] *= invNormC;
|
|
174
|
+
|
|
175
|
+
// Compute offset (use multiplication instead of negation for consistency)
|
|
176
|
+
(*kSpatialDimension) = -(p[0] * c[0] + p[1] * c[1] + p[2] * c[2]);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
inline void isMember(
|
|
180
|
+
int* remainingCandidates,
|
|
181
|
+
int* pRight,
|
|
182
|
+
int* pOut,
|
|
183
|
+
int nLeftElements,
|
|
184
|
+
int nRightElements)
|
|
185
|
+
{
|
|
186
|
+
std::memset(pOut, 0, nLeftElements * sizeof(int));
|
|
187
|
+
for (int i = 0; i < nLeftElements; i++)
|
|
188
|
+
for (int j = 0; j < nRightElements; j++)
|
|
189
|
+
if (remainingCandidates[i] == pRight[j])
|
|
190
|
+
pOut[i] = 1;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/// Sorts an array of floats and optionally returns sorted values and original
|
|
194
|
+
/// indices
|
|
195
|
+
/// @tparam S Scalar type (float or double)
|
|
196
|
+
/// @param inVec Input vector to sort (modified in-place if outVec is nullptr)
|
|
197
|
+
/// @param outVec Output vector for sorted values (can be nullptr)
|
|
198
|
+
/// @param newIndices Output array for original indices after sorting (can be
|
|
199
|
+
/// nullptr)
|
|
200
|
+
/// @param len Length of arrays
|
|
201
|
+
/// @param descending If true, sort in descending order; otherwise ascending
|
|
202
|
+
template <typename S>
|
|
203
|
+
inline void sortFloat(
|
|
204
|
+
S* inVec, S* outVec, int* newIndices, int len, bool descending)
|
|
205
|
+
{
|
|
206
|
+
std::vector<FloatWithIndex<S>> data(len);
|
|
207
|
+
for (int i = 0; i < len; i++) {
|
|
208
|
+
data[i].value = inVec[i];
|
|
209
|
+
data[i].index = i;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
if (descending) {
|
|
213
|
+
std::sort(data.begin(), data.end(), [](const auto& a, const auto& b) {
|
|
214
|
+
return a.value > b.value;
|
|
215
|
+
});
|
|
216
|
+
} else {
|
|
217
|
+
std::sort(data.begin(), data.end(), [](const auto& a, const auto& b) {
|
|
218
|
+
return a.value < b.value;
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
for (int i = 0; i < len; i++) {
|
|
223
|
+
if (outVec != nullptr)
|
|
224
|
+
outVec[i] = data[i].value;
|
|
225
|
+
else
|
|
226
|
+
inVec[i] = data[i].value;
|
|
227
|
+
if (newIndices != nullptr)
|
|
228
|
+
newIndices[i] = data[i].index;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
inline void sortInt(int* ioVec, int len)
|
|
233
|
+
{
|
|
234
|
+
std::sort(ioVec, ioVec + len);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
} // namespace convhull_internal
|
|
238
|
+
|
|
239
|
+
template <typename S>
|
|
240
|
+
inline void convexHull3dBuild(
|
|
241
|
+
const std::vector<ConvexHullVertex<S>>& inVertices,
|
|
242
|
+
std::vector<int>& outFaces,
|
|
243
|
+
int& numOutputTriangles)
|
|
244
|
+
{
|
|
245
|
+
const int numInputVertices = static_cast<int>(inVertices.size());
|
|
246
|
+
|
|
247
|
+
if (numInputVertices <= 3) {
|
|
248
|
+
outFaces.clear();
|
|
249
|
+
numOutputTriangles = 0;
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
constexpr int kSpatialDimension = 3;
|
|
254
|
+
constexpr int kVertexStride = kSpatialDimension + 1;
|
|
255
|
+
|
|
256
|
+
// Add noise to perturbedVertices to avoid degeneracy
|
|
257
|
+
std::vector<S> perturbedVertices(numInputVertices * kVertexStride);
|
|
258
|
+
S* perturbedPtr = perturbedVertices.data(); // Cache for faster access
|
|
259
|
+
|
|
260
|
+
for (int i = 0; i < numInputVertices; i++) {
|
|
261
|
+
const int baseIdx = i * kVertexStride;
|
|
262
|
+
const auto& vertex = inVertices[i];
|
|
263
|
+
perturbedPtr[baseIdx]
|
|
264
|
+
= vertex.x + convhull_internal::generateNoise<S>(i, 0);
|
|
265
|
+
perturbedPtr[baseIdx + 1]
|
|
266
|
+
= vertex.y + convhull_internal::generateNoise<S>(i, 1);
|
|
267
|
+
perturbedPtr[baseIdx + 2]
|
|
268
|
+
= vertex.z + convhull_internal::generateNoise<S>(i, 2);
|
|
269
|
+
perturbedPtr[baseIdx + 3] = static_cast<S>(1.0);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// Find axisAlignedExtents of perturbedVertices
|
|
273
|
+
S axisAlignedExtents[convhull_internal::kDimensions];
|
|
274
|
+
for (int j = 0; j < kSpatialDimension; j++) {
|
|
275
|
+
S maxP = std::numeric_limits<S>::lowest();
|
|
276
|
+
S minP = std::numeric_limits<S>::max();
|
|
277
|
+
for (int i = 0; i < numInputVertices; i++) {
|
|
278
|
+
maxP = std::max(maxP, perturbedVertices[i * (kSpatialDimension + 1) + j]);
|
|
279
|
+
minP = std::min(minP, perturbedVertices[i * (kSpatialDimension + 1) + j]);
|
|
280
|
+
}
|
|
281
|
+
axisAlignedExtents[j] = maxP - minP;
|
|
282
|
+
assert(axisAlignedExtents[j] > static_cast<S>(0.000000001));
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
// Initialize simplex
|
|
286
|
+
int currentTriangleCount = (kSpatialDimension + 1);
|
|
287
|
+
std::vector<int> triangleIndices(currentTriangleCount * kSpatialDimension, 0);
|
|
288
|
+
std::vector<int> initialSimplexIndices(currentTriangleCount);
|
|
289
|
+
for (int i = 0; i < currentTriangleCount; i++)
|
|
290
|
+
initialSimplexIndices[i] = i;
|
|
291
|
+
|
|
292
|
+
// Compute plane coefficients
|
|
293
|
+
std::vector<S> triangleNormals(currentTriangleCount * kSpatialDimension);
|
|
294
|
+
std::vector<S> triangleOffsets(currentTriangleCount);
|
|
295
|
+
for (int i = 0; i < currentTriangleCount; i++) {
|
|
296
|
+
int k = 0;
|
|
297
|
+
for (int j = 0; j < (kSpatialDimension + 1); j++) {
|
|
298
|
+
if (initialSimplexIndices[j] != i) {
|
|
299
|
+
triangleIndices[i * kSpatialDimension + k] = initialSimplexIndices[j];
|
|
300
|
+
k++;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
S triangleVertexCoords
|
|
305
|
+
[convhull_internal::kDimensions * convhull_internal::kDimensions];
|
|
306
|
+
for (int j = 0; j < kSpatialDimension; j++)
|
|
307
|
+
for (k = 0; k < kSpatialDimension; k++)
|
|
308
|
+
triangleVertexCoords[j * kSpatialDimension + k] = perturbedVertices
|
|
309
|
+
[(triangleIndices[i * kSpatialDimension + j])
|
|
310
|
+
* (kSpatialDimension + 1)
|
|
311
|
+
+ k];
|
|
312
|
+
|
|
313
|
+
S tempNormal[convhull_internal::kDimensions];
|
|
314
|
+
S tempOffset;
|
|
315
|
+
convhull_internal::computePlane3d(
|
|
316
|
+
triangleVertexCoords, tempNormal, &tempOffset);
|
|
317
|
+
for (int j = 0; j < kSpatialDimension; j++)
|
|
318
|
+
triangleNormals[i * kSpatialDimension + j] = tempNormal[j];
|
|
319
|
+
triangleOffsets[i] = tempOffset;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// Check face orientation
|
|
323
|
+
S A[(convhull_internal::kDimensions + 1)
|
|
324
|
+
* (convhull_internal::kDimensions + 1)];
|
|
325
|
+
int sortedTriangleIndices[convhull_internal::kDimensions + 1];
|
|
326
|
+
int swapBuffer[2];
|
|
327
|
+
|
|
328
|
+
std::memset(A, 0, sizeof(A));
|
|
329
|
+
for (int k = 0; k < (kSpatialDimension + 1); k++) {
|
|
330
|
+
for (int i = 0; i < kSpatialDimension; i++)
|
|
331
|
+
sortedTriangleIndices[i] = triangleIndices[k * kSpatialDimension + i];
|
|
332
|
+
convhull_internal::sortInt(sortedTriangleIndices, kSpatialDimension);
|
|
333
|
+
int p = k;
|
|
334
|
+
for (int i = 0; i < kSpatialDimension; i++)
|
|
335
|
+
for (int j = 0; j < (kSpatialDimension + 1); j++)
|
|
336
|
+
A[i * (kSpatialDimension + 1) + j] = perturbedVertices
|
|
337
|
+
[(triangleIndices[k * kSpatialDimension + i])
|
|
338
|
+
* (kSpatialDimension + 1)
|
|
339
|
+
+ j];
|
|
340
|
+
for (int i = kSpatialDimension; i < (kSpatialDimension + 1); i++)
|
|
341
|
+
for (int j = 0; j < (kSpatialDimension + 1); j++)
|
|
342
|
+
A[i * (kSpatialDimension + 1) + j]
|
|
343
|
+
= perturbedVertices[p * (kSpatialDimension + 1) + j];
|
|
344
|
+
|
|
345
|
+
S v = convhull_internal::det4x4(A);
|
|
346
|
+
|
|
347
|
+
if (v < 0) {
|
|
348
|
+
for (int j = 0; j < 2; j++)
|
|
349
|
+
swapBuffer[j] = triangleIndices
|
|
350
|
+
[k * kSpatialDimension + kSpatialDimension - j - 1];
|
|
351
|
+
for (int j = 0; j < 2; j++)
|
|
352
|
+
triangleIndices[k * kSpatialDimension + kSpatialDimension - j - 1]
|
|
353
|
+
= swapBuffer[1 - j];
|
|
354
|
+
|
|
355
|
+
for (int j = 0; j < kSpatialDimension; j++)
|
|
356
|
+
triangleNormals[k * kSpatialDimension + j]
|
|
357
|
+
= -triangleNormals[k * kSpatialDimension + j];
|
|
358
|
+
triangleOffsets[k] = -triangleOffsets[k];
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// Compute center and distances
|
|
363
|
+
S geometricCentroid[convhull_internal::kDimensions] = {0};
|
|
364
|
+
for (int i = kSpatialDimension + 1; i < numInputVertices; i++)
|
|
365
|
+
for (int j = 0; j < kSpatialDimension; j++)
|
|
366
|
+
geometricCentroid[j]
|
|
367
|
+
+= perturbedVertices[i * (kSpatialDimension + 1) + j];
|
|
368
|
+
for (int j = 0; j < kSpatialDimension; j++)
|
|
369
|
+
geometricCentroid[j]
|
|
370
|
+
= geometricCentroid[j]
|
|
371
|
+
/ static_cast<S>(numInputVertices - kSpatialDimension - 1);
|
|
372
|
+
|
|
373
|
+
std::vector<S> normalizedDisplacements(
|
|
374
|
+
(numInputVertices - kSpatialDimension - 1) * kSpatialDimension);
|
|
375
|
+
for (int i = kSpatialDimension + 1, k = 0; i < numInputVertices; i++, k++)
|
|
376
|
+
for (int j = 0; j < kSpatialDimension; j++)
|
|
377
|
+
normalizedDisplacements[k * kSpatialDimension + j]
|
|
378
|
+
= (perturbedVertices[i * (kSpatialDimension + 1) + j]
|
|
379
|
+
- geometricCentroid[j])
|
|
380
|
+
/ axisAlignedExtents[j];
|
|
381
|
+
|
|
382
|
+
std::vector<S> squaredDistances(numInputVertices - kSpatialDimension - 1, 0);
|
|
383
|
+
std::vector<S> sortedSquaredDistances(
|
|
384
|
+
numInputVertices - kSpatialDimension - 1);
|
|
385
|
+
for (int i = 0; i < (numInputVertices - kSpatialDimension - 1); i++) {
|
|
386
|
+
const S* dispPtr = &normalizedDisplacements[i * kSpatialDimension];
|
|
387
|
+
const S d0 = dispPtr[0];
|
|
388
|
+
const S d1 = dispPtr[1];
|
|
389
|
+
const S d2 = dispPtr[2];
|
|
390
|
+
squaredDistances[i] = d0 * d0 + d1 * d1 + d2 * d2;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
std::vector<int> sortedVertexIndices(
|
|
394
|
+
numInputVertices - kSpatialDimension - 1);
|
|
395
|
+
std::vector<int> remainingCandidates(
|
|
396
|
+
numInputVertices - kSpatialDimension - 1);
|
|
397
|
+
convhull_internal::sortFloat(
|
|
398
|
+
squaredDistances.data(),
|
|
399
|
+
sortedSquaredDistances.data(),
|
|
400
|
+
sortedVertexIndices.data(),
|
|
401
|
+
(numInputVertices - kSpatialDimension - 1),
|
|
402
|
+
true);
|
|
403
|
+
|
|
404
|
+
int numRemainingCandidates = (numInputVertices - kSpatialDimension - 1);
|
|
405
|
+
for (int i = 0; i < numRemainingCandidates; i++)
|
|
406
|
+
remainingCandidates[i] = sortedVertexIndices[i] + kSpatialDimension + 1;
|
|
407
|
+
|
|
408
|
+
// Main quickhull loop - Pre-allocate vectors to avoid reallocations
|
|
409
|
+
std::memset(A, 0, sizeof(A));
|
|
410
|
+
|
|
411
|
+
S candidateVertexCoords[convhull_internal::kDimensions];
|
|
412
|
+
int sortedCurrentFace[convhull_internal::kDimensions];
|
|
413
|
+
int currentFaceVertices[convhull_internal::kDimensions];
|
|
414
|
+
|
|
415
|
+
// Pre-allocate vectors with expected maximum sizes to avoid reallocations
|
|
416
|
+
const int estimatedMaxFaces
|
|
417
|
+
= std::min(numInputVertices * 2, convhull_internal::kMaxNumFaces);
|
|
418
|
+
std::vector<int> triangleVisibilityFlags;
|
|
419
|
+
triangleVisibilityFlags.reserve(estimatedMaxFaces);
|
|
420
|
+
triangleVisibilityFlags.resize(currentTriangleCount);
|
|
421
|
+
|
|
422
|
+
std::vector<S> signedDistancesToTriangles;
|
|
423
|
+
signedDistancesToTriangles.reserve(estimatedMaxFaces);
|
|
424
|
+
signedDistancesToTriangles.resize(currentTriangleCount);
|
|
425
|
+
|
|
426
|
+
std::vector<int> visibleTriangleIndices;
|
|
427
|
+
visibleTriangleIndices.reserve(estimatedMaxFaces / 2);
|
|
428
|
+
|
|
429
|
+
std::vector<int> occludedTriangleData;
|
|
430
|
+
occludedTriangleData.reserve(estimatedMaxFaces * kSpatialDimension);
|
|
431
|
+
|
|
432
|
+
std::vector<int> sharedEdgeFlags;
|
|
433
|
+
sharedEdgeFlags.reserve(estimatedMaxFaces * kSpatialDimension);
|
|
434
|
+
|
|
435
|
+
std::vector<int> candidateHorizonFaces;
|
|
436
|
+
candidateHorizonFaces.reserve(100);
|
|
437
|
+
|
|
438
|
+
std::vector<int> horizonEdgeVertices;
|
|
439
|
+
horizonEdgeVertices.reserve(estimatedMaxFaces * (kSpatialDimension - 1));
|
|
440
|
+
|
|
441
|
+
std::vector<int> allTriangleIndices;
|
|
442
|
+
allTriangleIndices.reserve(estimatedMaxFaces);
|
|
443
|
+
|
|
444
|
+
std::vector<int> nonMatchingTriangles;
|
|
445
|
+
nonMatchingTriangles.reserve(estimatedMaxFaces);
|
|
446
|
+
|
|
447
|
+
std::vector<int> faceContainsVertexFlags;
|
|
448
|
+
faceContainsVertexFlags.reserve(estimatedMaxFaces);
|
|
449
|
+
|
|
450
|
+
bool hullConstructionFailed = false;
|
|
451
|
+
currentTriangleCount = kSpatialDimension + 1;
|
|
452
|
+
|
|
453
|
+
while (numRemainingCandidates > 0) {
|
|
454
|
+
int i = remainingCandidates[0];
|
|
455
|
+
|
|
456
|
+
// Use memmove for faster array shift (O(n) but optimized)
|
|
457
|
+
if (numRemainingCandidates > 1) {
|
|
458
|
+
std::memmove(
|
|
459
|
+
&remainingCandidates[0],
|
|
460
|
+
&remainingCandidates[1],
|
|
461
|
+
(numRemainingCandidates - 1) * sizeof(int));
|
|
462
|
+
}
|
|
463
|
+
numRemainingCandidates--;
|
|
464
|
+
remainingCandidates.resize(numRemainingCandidates);
|
|
465
|
+
|
|
466
|
+
// Direct pointer access for vertex coords (cache-friendly)
|
|
467
|
+
const S* vertexPtr = &perturbedVertices[i * (kSpatialDimension + 1)];
|
|
468
|
+
candidateVertexCoords[0] = vertexPtr[0];
|
|
469
|
+
candidateVertexCoords[1] = vertexPtr[1];
|
|
470
|
+
candidateVertexCoords[2] = vertexPtr[2];
|
|
471
|
+
|
|
472
|
+
signedDistancesToTriangles.resize(currentTriangleCount);
|
|
473
|
+
triangleVisibilityFlags.resize(currentTriangleCount);
|
|
474
|
+
|
|
475
|
+
// Unrolled dot product (kSpatialDimension is always 3)
|
|
476
|
+
for (int j = 0; j < currentTriangleCount; j++) {
|
|
477
|
+
const S* normalPtr = &triangleNormals[j * kSpatialDimension];
|
|
478
|
+
signedDistancesToTriangles[j] = candidateVertexCoords[0] * normalPtr[0]
|
|
479
|
+
+ candidateVertexCoords[1] * normalPtr[1]
|
|
480
|
+
+ candidateVertexCoords[2] * normalPtr[2];
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
int numVisibleTriangles = 0;
|
|
484
|
+
for (int j = 0; j < currentTriangleCount; j++) {
|
|
485
|
+
if (signedDistancesToTriangles[j] + triangleOffsets[j]
|
|
486
|
+
> static_cast<S>(0.0)) {
|
|
487
|
+
numVisibleTriangles++;
|
|
488
|
+
triangleVisibilityFlags[j] = 1;
|
|
489
|
+
} else
|
|
490
|
+
triangleVisibilityFlags[j] = 0;
|
|
491
|
+
}
|
|
492
|
+
int numOccludedTriangles = currentTriangleCount - numVisibleTriangles;
|
|
493
|
+
|
|
494
|
+
if (numVisibleTriangles != 0) {
|
|
495
|
+
visibleTriangleIndices.resize(numVisibleTriangles);
|
|
496
|
+
int k = 0;
|
|
497
|
+
for (int j = 0; j < currentTriangleCount; j++) {
|
|
498
|
+
if (triangleVisibilityFlags[j] == 1) {
|
|
499
|
+
visibleTriangleIndices[k] = j;
|
|
500
|
+
k++;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
occludedTriangleData.resize(numOccludedTriangles * kSpatialDimension);
|
|
505
|
+
sharedEdgeFlags.resize(numOccludedTriangles * kSpatialDimension);
|
|
506
|
+
k = 0;
|
|
507
|
+
for (int j = 0; j < currentTriangleCount; j++) {
|
|
508
|
+
if (triangleVisibilityFlags[j] == 0) {
|
|
509
|
+
for (int l = 0; l < kSpatialDimension; l++)
|
|
510
|
+
occludedTriangleData[k * kSpatialDimension + l]
|
|
511
|
+
= triangleIndices[j * kSpatialDimension + l];
|
|
512
|
+
k++;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
int horizonEdgeCounter = 0;
|
|
517
|
+
for (int j = 0; j < numVisibleTriangles; j++) {
|
|
518
|
+
int vis = visibleTriangleIndices[j];
|
|
519
|
+
for (k = 0; k < kSpatialDimension; k++)
|
|
520
|
+
sortedCurrentFace[k] = triangleIndices[vis * kSpatialDimension + k];
|
|
521
|
+
convhull_internal::sortInt(sortedCurrentFace, kSpatialDimension);
|
|
522
|
+
convhull_internal::isMember(
|
|
523
|
+
occludedTriangleData.data(),
|
|
524
|
+
sortedCurrentFace,
|
|
525
|
+
sharedEdgeFlags.data(),
|
|
526
|
+
numOccludedTriangles * kSpatialDimension,
|
|
527
|
+
kSpatialDimension);
|
|
528
|
+
|
|
529
|
+
candidateHorizonFaces.clear();
|
|
530
|
+
for (k = 0; k < numOccludedTriangles; k++) {
|
|
531
|
+
int f0Sum = 0;
|
|
532
|
+
for (int l = 0; l < kSpatialDimension; l++)
|
|
533
|
+
f0Sum += sharedEdgeFlags[k * kSpatialDimension + l];
|
|
534
|
+
if (f0Sum == kSpatialDimension - 1) {
|
|
535
|
+
candidateHorizonFaces.push_back(k);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
for (size_t k = 0; k < candidateHorizonFaces.size(); k++) {
|
|
540
|
+
horizonEdgeCounter++;
|
|
541
|
+
horizonEdgeVertices.resize(
|
|
542
|
+
horizonEdgeCounter * (kSpatialDimension - 1));
|
|
543
|
+
for (int l = 0; l < kSpatialDimension; l++)
|
|
544
|
+
currentFaceVertices[l] = occludedTriangleData
|
|
545
|
+
[candidateHorizonFaces[k] * kSpatialDimension + l];
|
|
546
|
+
int h = 0;
|
|
547
|
+
for (int l = 0; l < kSpatialDimension; l++) {
|
|
548
|
+
if (sharedEdgeFlags
|
|
549
|
+
[candidateHorizonFaces[k] * kSpatialDimension + l]) {
|
|
550
|
+
horizonEdgeVertices
|
|
551
|
+
[(horizonEdgeCounter - 1) * (kSpatialDimension - 1) + h]
|
|
552
|
+
= currentFaceVertices[l];
|
|
553
|
+
h++;
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
int numHorizonEdges = horizonEdgeCounter;
|
|
560
|
+
int l = 0;
|
|
561
|
+
for (int j = 0; j < currentTriangleCount; j++) {
|
|
562
|
+
if (!triangleVisibilityFlags[j]) {
|
|
563
|
+
for (k = 0; k < kSpatialDimension; k++)
|
|
564
|
+
triangleIndices[l * kSpatialDimension + k]
|
|
565
|
+
= triangleIndices[j * kSpatialDimension + k];
|
|
566
|
+
|
|
567
|
+
for (k = 0; k < kSpatialDimension; k++)
|
|
568
|
+
triangleNormals[l * kSpatialDimension + k]
|
|
569
|
+
= triangleNormals[j * kSpatialDimension + k];
|
|
570
|
+
triangleOffsets[l] = triangleOffsets[j];
|
|
571
|
+
l++;
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
currentTriangleCount = currentTriangleCount - numVisibleTriangles;
|
|
576
|
+
int firstNewTriangleIndex = currentTriangleCount;
|
|
577
|
+
|
|
578
|
+
int numNewTriangles = numHorizonEdges;
|
|
579
|
+
int totalTrianglesAfterExpansion = currentTriangleCount + numNewTriangles;
|
|
580
|
+
if (totalTrianglesAfterExpansion > convhull_internal::kMaxNumFaces) {
|
|
581
|
+
hullConstructionFailed = true;
|
|
582
|
+
currentTriangleCount = 0;
|
|
583
|
+
break;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
triangleIndices.resize(totalTrianglesAfterExpansion * kSpatialDimension);
|
|
587
|
+
triangleNormals.resize(totalTrianglesAfterExpansion * kSpatialDimension);
|
|
588
|
+
triangleOffsets.resize(totalTrianglesAfterExpansion);
|
|
589
|
+
|
|
590
|
+
for (int j = 0; j < numNewTriangles; j++) {
|
|
591
|
+
currentTriangleCount++;
|
|
592
|
+
for (k = 0; k < kSpatialDimension - 1; k++)
|
|
593
|
+
triangleIndices[(currentTriangleCount - 1) * kSpatialDimension + k]
|
|
594
|
+
= horizonEdgeVertices[j * (kSpatialDimension - 1) + k];
|
|
595
|
+
triangleIndices
|
|
596
|
+
[(currentTriangleCount - 1) * kSpatialDimension
|
|
597
|
+
+ (kSpatialDimension - 1)]
|
|
598
|
+
= i;
|
|
599
|
+
|
|
600
|
+
S triangleVertexCoords
|
|
601
|
+
[convhull_internal::kDimensions * convhull_internal::kDimensions];
|
|
602
|
+
for (k = 0; k < kSpatialDimension; k++)
|
|
603
|
+
for (l = 0; l < kSpatialDimension; l++)
|
|
604
|
+
triangleVertexCoords[k * kSpatialDimension + l] = perturbedVertices
|
|
605
|
+
[(triangleIndices
|
|
606
|
+
[(currentTriangleCount - 1) * kSpatialDimension + k])
|
|
607
|
+
* (kSpatialDimension + 1)
|
|
608
|
+
+ l];
|
|
609
|
+
|
|
610
|
+
S tempNormal[convhull_internal::kDimensions];
|
|
611
|
+
S tempOffset;
|
|
612
|
+
convhull_internal::computePlane3d(
|
|
613
|
+
triangleVertexCoords, tempNormal, &tempOffset);
|
|
614
|
+
for (k = 0; k < kSpatialDimension; k++)
|
|
615
|
+
triangleNormals[(currentTriangleCount - 1) * kSpatialDimension + k]
|
|
616
|
+
= tempNormal[k];
|
|
617
|
+
triangleOffsets[(currentTriangleCount - 1)] = tempOffset;
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
allTriangleIndices.resize(numInputVertices);
|
|
621
|
+
faceContainsVertexFlags.resize(numInputVertices);
|
|
622
|
+
for (int j = 0; j < numInputVertices; j++)
|
|
623
|
+
allTriangleIndices[j] = j;
|
|
624
|
+
|
|
625
|
+
for (k = firstNewTriangleIndex; k < currentTriangleCount; k++) {
|
|
626
|
+
for (int j = 0; j < kSpatialDimension; j++)
|
|
627
|
+
sortedCurrentFace[j] = triangleIndices[k * kSpatialDimension + j];
|
|
628
|
+
convhull_internal::sortInt(sortedCurrentFace, kSpatialDimension);
|
|
629
|
+
convhull_internal::isMember(
|
|
630
|
+
allTriangleIndices.data(),
|
|
631
|
+
sortedCurrentFace,
|
|
632
|
+
faceContainsVertexFlags.data(),
|
|
633
|
+
numInputVertices,
|
|
634
|
+
kSpatialDimension);
|
|
635
|
+
|
|
636
|
+
int numCandidateOrientationTriangles = 0;
|
|
637
|
+
for (int j = 0; j < numInputVertices; j++)
|
|
638
|
+
if (!faceContainsVertexFlags[j])
|
|
639
|
+
numCandidateOrientationTriangles++;
|
|
640
|
+
|
|
641
|
+
nonMatchingTriangles.resize(numCandidateOrientationTriangles);
|
|
642
|
+
l = 0;
|
|
643
|
+
for (int j = 0; j < numInputVertices; j++) {
|
|
644
|
+
if (!faceContainsVertexFlags[j]) {
|
|
645
|
+
nonMatchingTriangles[l] = allTriangleIndices[j];
|
|
646
|
+
l++;
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
int index = 0;
|
|
651
|
+
S orientationDeterminant = static_cast<S>(0.0);
|
|
652
|
+
|
|
653
|
+
while (orientationDeterminant == static_cast<S>(0.0)) {
|
|
654
|
+
for (int j = 0; j < kSpatialDimension; j++)
|
|
655
|
+
for (l = 0; l < kSpatialDimension + 1; l++)
|
|
656
|
+
A[j * (kSpatialDimension + 1) + l] = perturbedVertices
|
|
657
|
+
[(triangleIndices[k * kSpatialDimension + j])
|
|
658
|
+
* (kSpatialDimension + 1)
|
|
659
|
+
+ l];
|
|
660
|
+
for (int j = kSpatialDimension; j < kSpatialDimension + 1; j++)
|
|
661
|
+
for (l = 0; l < kSpatialDimension + 1; l++)
|
|
662
|
+
A[j * (kSpatialDimension + 1) + l] = perturbedVertices
|
|
663
|
+
[nonMatchingTriangles[index] * (kSpatialDimension + 1) + l];
|
|
664
|
+
index++;
|
|
665
|
+
orientationDeterminant = convhull_internal::det4x4(A);
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
if (orientationDeterminant < static_cast<S>(0.0)) {
|
|
669
|
+
for (int j = 0; j < 2; j++)
|
|
670
|
+
swapBuffer[j] = triangleIndices
|
|
671
|
+
[k * kSpatialDimension + kSpatialDimension - j - 1];
|
|
672
|
+
for (int j = 0; j < 2; j++)
|
|
673
|
+
triangleIndices[k * kSpatialDimension + kSpatialDimension - j - 1]
|
|
674
|
+
= swapBuffer[1 - j];
|
|
675
|
+
|
|
676
|
+
for (int j = 0; j < kSpatialDimension; j++)
|
|
677
|
+
triangleNormals[k * kSpatialDimension + j]
|
|
678
|
+
= -triangleNormals[k * kSpatialDimension + j];
|
|
679
|
+
triangleOffsets[k] = -triangleOffsets[k];
|
|
680
|
+
#ifndef NDEBUG
|
|
681
|
+
for (l = 0; l < kSpatialDimension; l++)
|
|
682
|
+
for (int j = 0; j < kSpatialDimension + 1; j++)
|
|
683
|
+
A[l * (kSpatialDimension + 1) + j] = perturbedVertices
|
|
684
|
+
[(triangleIndices[k * kSpatialDimension + l])
|
|
685
|
+
* (kSpatialDimension + 1)
|
|
686
|
+
+ j];
|
|
687
|
+
for (; l < kSpatialDimension + 1; l++)
|
|
688
|
+
for (int j = 0; j < kSpatialDimension + 1; j++)
|
|
689
|
+
A[l * (kSpatialDimension + 1) + j] = perturbedVertices
|
|
690
|
+
[nonMatchingTriangles[index] * (kSpatialDimension + 1) + j];
|
|
691
|
+
orientationDeterminant = convhull_internal::det4x4(A);
|
|
692
|
+
assert(
|
|
693
|
+
orientationDeterminant
|
|
694
|
+
> -std::numeric_limits<S>::epsilon() * static_cast<S>(100.0));
|
|
695
|
+
#endif
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
if (hullConstructionFailed) {
|
|
702
|
+
outFaces.clear();
|
|
703
|
+
numOutputTriangles = 0;
|
|
704
|
+
} else {
|
|
705
|
+
outFaces.resize(currentTriangleCount * kSpatialDimension);
|
|
706
|
+
std::memcpy(
|
|
707
|
+
outFaces.data(),
|
|
708
|
+
triangleIndices.data(),
|
|
709
|
+
currentTriangleCount * kSpatialDimension * sizeof(int));
|
|
710
|
+
numOutputTriangles = currentTriangleCount;
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
//==============================================================================
|
|
715
|
+
// Eigen-based API implementation (Thin Wrapper)
|
|
716
|
+
//==============================================================================
|
|
717
|
+
// NOTE: After comprehensive benchmarking, we found that explicit SIMD using
|
|
718
|
+
// Eigen makes operations 1.5-11x SLOWER than the compiler-optimized scalar
|
|
719
|
+
// code. Modern compilers (GCC/Clang with -O3) already auto-vectorize the scalar
|
|
720
|
+
// operations effectively. Therefore, we keep this as a thin wrapper to the
|
|
721
|
+
// optimized legacy implementation.
|
|
722
|
+
//==============================================================================
|
|
723
|
+
|
|
724
|
+
template <typename S>
|
|
725
|
+
inline void convexHull3dBuild(
|
|
726
|
+
const std::vector<Eigen::Matrix<S, 3, 1>>& inVertices,
|
|
727
|
+
std::vector<int>& outFaces,
|
|
728
|
+
int& numOutputTriangles)
|
|
729
|
+
{
|
|
730
|
+
// Convert Eigen vectors to legacy format
|
|
731
|
+
// This thin wrapper provides modern C++ API while using the fastest
|
|
732
|
+
// implementation underneath (compiler auto-vectorized scalar code)
|
|
733
|
+
std::vector<ConvexHullVertex<S>> legacyVertices(inVertices.size());
|
|
734
|
+
for (size_t i = 0; i < inVertices.size(); ++i) {
|
|
735
|
+
legacyVertices[i].x = inVertices[i](0);
|
|
736
|
+
legacyVertices[i].y = inVertices[i](1);
|
|
737
|
+
legacyVertices[i].z = inVertices[i](2);
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
convexHull3dBuild(legacyVertices, outFaces, numOutputTriangles);
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
} // namespace dart::math::detail
|