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.

Files changed (994) hide show
  1. dartpy-7.0.0.dev0.dist-info/METADATA +86 -0
  2. dartpy-7.0.0.dev0.dist-info/RECORD +994 -0
  3. dartpy-7.0.0.dev0.dist-info/WHEEL +5 -0
  4. dartpy-7.0.0.dev0.dist-info/licenses/LICENSE +31 -0
  5. dartpy.cpython-314-x86_64-linux-gnu.so +0 -0
  6. dartpy.libs/libBulletCollision-f96eb02c.so.3.25 +0 -0
  7. dartpy.libs/libBulletDynamics-3cff1f18.so.3.25 +0 -0
  8. dartpy.libs/libBulletSoftBody-220f01bd.so.3.25 +0 -0
  9. dartpy.libs/libLinearMath-71568d02.so.3.25 +0 -0
  10. dartpy.libs/libOpenThreads-8bc434db.so.3.3.1 +0 -0
  11. dartpy.libs/libSDL2-2-3db87ac0.0.so.0.3200.56 +0 -0
  12. dartpy.libs/libassimp-44cf3e77.so.5.4.3 +0 -0
  13. dartpy.libs/libccd-4f119cf4.so.2.0 +0 -0
  14. dartpy.libs/libconsole_bridge-f26e11cc.so.1.0 +0 -0
  15. dartpy.libs/libfcl-a48f76e3.so.0.7.0 +0 -0
  16. dartpy.libs/libfmt-277170bf.so.11.2.0 +0 -0
  17. dartpy.libs/libfontconfig-4f3ddb6b.so.1.14.0 +0 -0
  18. dartpy.libs/libfreetype-64806fc6.so.6.20.4 +0 -0
  19. dartpy.libs/libglfw-6f066845.so.3.4 +0 -0
  20. dartpy.libs/libimgui-ab87b07d.so +0 -0
  21. dartpy.libs/libnlopt-e40d2105.so.1.0.0 +0 -0
  22. dartpy.libs/liboctomap-38e56f99.so.1.10.0 +0 -0
  23. dartpy.libs/liboctomath-bff26442.so.1.10.0 +0 -0
  24. dartpy.libs/libode-cb84e60c.so.8.2.0 +0 -0
  25. dartpy.libs/libosg-e67375e5.so.3.6.5 +0 -0
  26. dartpy.libs/libosgDB-36efdcbf.so.3.6.5 +0 -0
  27. dartpy.libs/libosgGA-6af4078b.so.3.6.5 +0 -0
  28. dartpy.libs/libosgManipulator-3270f659.so.3.6.5 +0 -0
  29. dartpy.libs/libosgShadow-127a8d77.so.3.6.5 +0 -0
  30. dartpy.libs/libosgText-87d82d87.so.3.6.5 +0 -0
  31. dartpy.libs/libosgUtil-55896958.so.3.6.5 +0 -0
  32. dartpy.libs/libosgViewer-76d832e3.so.3.6.5 +0 -0
  33. dartpy.libs/libpng16-bd65464e.so.16.50.0 +0 -0
  34. dartpy.libs/libtinyxml2-8d10763c.so.11.0.0 +0 -0
  35. dartpy.libs/liburdfdom_model-7b26ae88.so.4.0 +0 -0
  36. dartpy.libs/liburdfdom_model_state-95a5ad6e.so.4.0 +0 -0
  37. dartpy.libs/liburdfdom_sensor-55a145ea.so.4.0 +0 -0
  38. dartpy.libs/liburdfdom_world-a32c7194.so.4.0 +0 -0
  39. dartpy.libs/libvulkan-730b9f9d.so.1.4.328 +0 -0
  40. include/dart/collision/CollisionDetector.hpp +305 -0
  41. include/dart/collision/CollisionFilter.hpp +126 -0
  42. include/dart/collision/CollisionGroup.hpp +546 -0
  43. include/dart/collision/CollisionObject.hpp +90 -0
  44. include/dart/collision/CollisionOption.hpp +71 -0
  45. include/dart/collision/CollisionResult.hpp +109 -0
  46. include/dart/collision/Contact.hpp +103 -0
  47. include/dart/collision/DistanceFilter.hpp +66 -0
  48. include/dart/collision/DistanceOption.hpp +80 -0
  49. include/dart/collision/DistanceResult.hpp +123 -0
  50. include/dart/collision/Option.hpp +42 -0
  51. include/dart/collision/RaycastOption.hpp +58 -0
  52. include/dart/collision/RaycastResult.hpp +80 -0
  53. include/dart/collision/Result.hpp +42 -0
  54. include/dart/collision/SmartPointer.hpp +51 -0
  55. include/dart/collision/all.hpp +17 -0
  56. include/dart/collision/bullet/BulletCollisionDetector.hpp +168 -0
  57. include/dart/collision/bullet/BulletCollisionGroup.hpp +98 -0
  58. include/dart/collision/bullet/BulletCollisionObject.hpp +75 -0
  59. include/dart/collision/bullet/BulletCollisionShape.hpp +62 -0
  60. include/dart/collision/bullet/BulletInclude.hpp +47 -0
  61. include/dart/collision/bullet/BulletTypes.hpp +57 -0
  62. include/dart/collision/bullet/all.hpp +8 -0
  63. include/dart/collision/bullet/bullet.hpp +14 -0
  64. include/dart/collision/bullet/detail/BulletCollisionDispatcher.hpp +70 -0
  65. include/dart/collision/bullet/detail/BulletOverlapFilterCallback.hpp +72 -0
  66. include/dart/collision/collision.hpp +14 -0
  67. include/dart/collision/dart/DARTCollide.hpp +106 -0
  68. include/dart/collision/dart/DARTCollisionDetector.hpp +109 -0
  69. include/dart/collision/dart/DARTCollisionGroup.hpp +82 -0
  70. include/dart/collision/dart/DARTCollisionObject.hpp +63 -0
  71. include/dart/collision/dart/all.hpp +6 -0
  72. include/dart/collision/dart/dart.hpp +14 -0
  73. include/dart/collision/detail/CollisionDetector.hpp +66 -0
  74. include/dart/collision/detail/CollisionGroup.hpp +287 -0
  75. include/dart/collision/detail/Contact-impl.hpp +56 -0
  76. include/dart/collision/detail/UnorderedPairs.hpp +153 -0
  77. include/dart/collision/fcl/BackwardCompatibility.hpp +145 -0
  78. include/dart/collision/fcl/CollisionShapes.hpp +374 -0
  79. include/dart/collision/fcl/FCLCollisionDetector.hpp +204 -0
  80. include/dart/collision/fcl/FCLCollisionGroup.hpp +95 -0
  81. include/dart/collision/fcl/FCLCollisionObject.hpp +72 -0
  82. include/dart/collision/fcl/FCLTypes.hpp +62 -0
  83. include/dart/collision/fcl/TriTriIntersectionTest.hpp +17 -0
  84. include/dart/collision/fcl/all.hpp +9 -0
  85. include/dart/collision/fcl/fcl.hpp +14 -0
  86. include/dart/collision/fcl/tri_tri_intersection_test.hpp +332 -0
  87. include/dart/collision/ode/OdeCollisionDetector.hpp +131 -0
  88. include/dart/collision/ode/OdeCollisionGroup.hpp +87 -0
  89. include/dart/collision/ode/OdeCollisionObject.hpp +89 -0
  90. include/dart/collision/ode/OdeTypes.hpp +51 -0
  91. include/dart/collision/ode/all.hpp +6 -0
  92. include/dart/collision/ode/detail/OdeBox.hpp +58 -0
  93. include/dart/collision/ode/detail/OdeCapsule.hpp +58 -0
  94. include/dart/collision/ode/detail/OdeCylinder.hpp +58 -0
  95. include/dart/collision/ode/detail/OdeGeom.hpp +83 -0
  96. include/dart/collision/ode/detail/OdeHeightmap-impl.hpp +170 -0
  97. include/dart/collision/ode/detail/OdeHeightmap.hpp +70 -0
  98. include/dart/collision/ode/detail/OdeMesh.hpp +83 -0
  99. include/dart/collision/ode/detail/OdePlane.hpp +67 -0
  100. include/dart/collision/ode/detail/OdeSphere.hpp +58 -0
  101. include/dart/collision/ode/ode.hpp +14 -0
  102. include/dart/common/Aspect.hpp +215 -0
  103. include/dart/common/AspectWithVersion.hpp +180 -0
  104. include/dart/common/CAllocator.hpp +65 -0
  105. include/dart/common/Castable.hpp +102 -0
  106. include/dart/common/ClassWithVirtualBase.hpp +47 -0
  107. include/dart/common/Cloneable.hpp +327 -0
  108. include/dart/common/Composite.hpp +205 -0
  109. include/dart/common/CompositeJoiner.hpp +160 -0
  110. include/dart/common/Console.hpp +75 -0
  111. include/dart/common/Deprecated.hpp +126 -0
  112. include/dart/common/EmbeddedAspect.hpp +466 -0
  113. include/dart/common/Empty.hpp +55 -0
  114. include/dart/common/Factory.hpp +146 -0
  115. include/dart/common/Filesystem.hpp +112 -0
  116. include/dart/common/FreeListAllocator.hpp +162 -0
  117. include/dart/common/IncludeWindows.hpp +50 -0
  118. include/dart/common/LocalResource.hpp +76 -0
  119. include/dart/common/LocalResourceRetriever.hpp +63 -0
  120. include/dart/common/LockableReference.hpp +166 -0
  121. include/dart/common/Logging.hpp +146 -0
  122. include/dart/common/Macros.hpp +78 -0
  123. include/dart/common/Memory.hpp +215 -0
  124. include/dart/common/MemoryAllocator.hpp +120 -0
  125. include/dart/common/MemoryAllocatorDebugger.hpp +98 -0
  126. include/dart/common/MemoryManager.hpp +189 -0
  127. include/dart/common/Metaprogramming.hpp +68 -0
  128. include/dart/common/NameManager.hpp +184 -0
  129. include/dart/common/Observer.hpp +85 -0
  130. include/dart/common/Optional.hpp +48 -0
  131. include/dart/common/Platform.hpp +92 -0
  132. include/dart/common/PoolAllocator.hpp +141 -0
  133. include/dart/common/Profile.hpp +56 -0
  134. include/dart/common/ProxyAspect.hpp +93 -0
  135. include/dart/common/RequiresAspect.hpp +79 -0
  136. include/dart/common/Resource.hpp +96 -0
  137. include/dart/common/ResourceRetriever.hpp +82 -0
  138. include/dart/common/SharedLibrary.hpp +201 -0
  139. include/dart/common/Signal.hpp +250 -0
  140. include/dart/common/Singleton.hpp +85 -0
  141. include/dart/common/SmartPointer.hpp +63 -0
  142. include/dart/common/SpecializedForAspect.hpp +207 -0
  143. include/dart/common/StlAllocator.hpp +111 -0
  144. include/dart/common/StlHelpers.hpp +61 -0
  145. include/dart/common/Stopwatch.hpp +143 -0
  146. include/dart/common/String.hpp +71 -0
  147. include/dart/common/SubPtr.hpp +17 -0
  148. include/dart/common/Subject.hpp +84 -0
  149. include/dart/common/Timer.hpp +119 -0
  150. include/dart/common/Uri.hpp +229 -0
  151. include/dart/common/VersionCounter.hpp +68 -0
  152. include/dart/common/Virtual.hpp +51 -0
  153. include/dart/common/all.hpp +53 -0
  154. include/dart/common/common.hpp +14 -0
  155. include/dart/common/detail/Aspect.hpp +102 -0
  156. include/dart/common/detail/AspectWithVersion.hpp +455 -0
  157. include/dart/common/detail/Castable-impl.hpp +109 -0
  158. include/dart/common/detail/Cloneable.hpp +638 -0
  159. include/dart/common/detail/Composite.hpp +241 -0
  160. include/dart/common/detail/CompositeData.hpp +393 -0
  161. include/dart/common/detail/CompositeJoiner.hpp +128 -0
  162. include/dart/common/detail/ConnectionBody.hpp +157 -0
  163. include/dart/common/detail/EmbeddedAspect.hpp +487 -0
  164. include/dart/common/detail/Factory-impl.hpp +200 -0
  165. include/dart/common/detail/LockableReference-impl.hpp +156 -0
  166. include/dart/common/detail/Logging-impl.hpp +162 -0
  167. include/dart/common/detail/Memory-impl.hpp +66 -0
  168. include/dart/common/detail/MemoryAllocator-impl.hpp +97 -0
  169. include/dart/common/detail/MemoryAllocatorDebugger-impl.hpp +201 -0
  170. include/dart/common/detail/MemoryManager-impl.hpp +102 -0
  171. include/dart/common/detail/Metaprogramming-impl.hpp +89 -0
  172. include/dart/common/detail/NameManager.hpp +301 -0
  173. include/dart/common/detail/NoOp.hpp +57 -0
  174. include/dart/common/detail/ProxyAspect.hpp +172 -0
  175. include/dart/common/detail/RequiresAspect.hpp +51 -0
  176. include/dart/common/detail/SharedLibraryManager.hpp +106 -0
  177. include/dart/common/detail/Signal.hpp +242 -0
  178. include/dart/common/detail/Singleton-impl.hpp +74 -0
  179. include/dart/common/detail/SpecializedForAspect.hpp +331 -0
  180. include/dart/common/detail/StlAllocator-impl.hpp +108 -0
  181. include/dart/common/detail/Stopwatch-impl.hpp +242 -0
  182. include/dart/common/detail/SubPtr.hpp +17 -0
  183. include/dart/common/detail/TemplateJoinerDispatchMacro.hpp +59 -0
  184. include/dart/common/detail/sub_ptr.hpp +139 -0
  185. include/dart/common/sub_ptr.hpp +103 -0
  186. include/dart/config.hpp +102 -0
  187. include/dart/constraint/BalanceConstraint.hpp +202 -0
  188. include/dart/constraint/BallJointConstraint.hpp +142 -0
  189. include/dart/constraint/BoxedLcpConstraintSolver.hpp +182 -0
  190. include/dart/constraint/BoxedLcpSolver.hpp +101 -0
  191. include/dart/constraint/ConstrainedGroup.hpp +120 -0
  192. include/dart/constraint/ConstraintBase.hpp +141 -0
  193. include/dart/constraint/ConstraintSolver.hpp +325 -0
  194. include/dart/constraint/ContactConstraint.hpp +286 -0
  195. include/dart/constraint/ContactSurface.hpp +191 -0
  196. include/dart/constraint/DantzigBoxedLcpSolver.hpp +71 -0
  197. include/dart/constraint/DantzigLCPSolver.hpp +87 -0
  198. include/dart/constraint/DynamicJointConstraint.hpp +120 -0
  199. include/dart/constraint/JointConstraint.hpp +182 -0
  200. include/dart/constraint/JointCoulombFrictionConstraint.hpp +149 -0
  201. include/dart/constraint/JointLimitConstraint.hpp +185 -0
  202. include/dart/constraint/LCPSolver.hpp +71 -0
  203. include/dart/constraint/MimicMotorConstraint.hpp +164 -0
  204. include/dart/constraint/PGSLCPSolver.hpp +109 -0
  205. include/dart/constraint/PgsBoxedLcpSolver.hpp +106 -0
  206. include/dart/constraint/ServoMotorConstraint.hpp +151 -0
  207. include/dart/constraint/SmartPointer.hpp +69 -0
  208. include/dart/constraint/SoftContactConstraint.hpp +262 -0
  209. include/dart/constraint/WeldJointConstraint.hpp +133 -0
  210. include/dart/constraint/all.hpp +25 -0
  211. include/dart/constraint/constraint.hpp +14 -0
  212. include/dart/constraint/detail/ConstraintSolver-impl.hpp +78 -0
  213. include/dart/dart.hpp +44 -0
  214. include/dart/dynamics/ArrowShape.hpp +121 -0
  215. include/dart/dynamics/AssimpInputResourceAdaptor.hpp +129 -0
  216. include/dart/dynamics/BallJoint.hpp +143 -0
  217. include/dart/dynamics/BodyNode.hpp +1279 -0
  218. include/dart/dynamics/BoxShape.hpp +90 -0
  219. include/dart/dynamics/Branch.hpp +107 -0
  220. include/dart/dynamics/CapsuleShape.hpp +105 -0
  221. include/dart/dynamics/Chain.hpp +142 -0
  222. include/dart/dynamics/CompositeNode.hpp +114 -0
  223. include/dart/dynamics/ConeShape.hpp +107 -0
  224. include/dart/dynamics/CylinderShape.hpp +96 -0
  225. include/dart/dynamics/DegreeOfFreedom.hpp +415 -0
  226. include/dart/dynamics/EllipsoidShape.hpp +115 -0
  227. include/dart/dynamics/EndEffector.hpp +158 -0
  228. include/dart/dynamics/Entity.hpp +258 -0
  229. include/dart/dynamics/EntityNode.hpp +77 -0
  230. include/dart/dynamics/EulerJoint.hpp +174 -0
  231. include/dart/dynamics/FixedFrame.hpp +105 -0
  232. include/dart/dynamics/FixedJacobianNode.hpp +168 -0
  233. include/dart/dynamics/Frame.hpp +388 -0
  234. include/dart/dynamics/FreeJoint.hpp +369 -0
  235. include/dart/dynamics/GenericJoint.hpp +825 -0
  236. include/dart/dynamics/Group.hpp +270 -0
  237. include/dart/dynamics/HeightmapShape.hpp +195 -0
  238. include/dart/dynamics/HierarchicalIK.hpp +419 -0
  239. include/dart/dynamics/IkFast.hpp +277 -0
  240. include/dart/dynamics/Inertia.hpp +176 -0
  241. include/dart/dynamics/InvalidIndex.hpp +46 -0
  242. include/dart/dynamics/InverseKinematics.hpp +1401 -0
  243. include/dart/dynamics/JacobianNode.hpp +312 -0
  244. include/dart/dynamics/Joint.hpp +1128 -0
  245. include/dart/dynamics/LineSegmentShape.hpp +140 -0
  246. include/dart/dynamics/Linkage.hpp +246 -0
  247. include/dart/dynamics/Marker.hpp +126 -0
  248. include/dart/dynamics/MeshShape.hpp +225 -0
  249. include/dart/dynamics/MetaSkeleton.hpp +1034 -0
  250. include/dart/dynamics/MimicDofProperties.hpp +62 -0
  251. include/dart/dynamics/MultiSphereConvexHullShape.hpp +111 -0
  252. include/dart/dynamics/MultiSphereShape.hpp +42 -0
  253. include/dart/dynamics/Node.hpp +273 -0
  254. include/dart/dynamics/NodeManagerJoiner.hpp +190 -0
  255. include/dart/dynamics/PlanarJoint.hpp +161 -0
  256. include/dart/dynamics/PlaneShape.hpp +105 -0
  257. include/dart/dynamics/PointCloudShape.hpp +186 -0
  258. include/dart/dynamics/PointMass.hpp +709 -0
  259. include/dart/dynamics/PrismaticJoint.hpp +120 -0
  260. include/dart/dynamics/PyramidShape.hpp +122 -0
  261. include/dart/dynamics/ReferentialSkeleton.hpp +550 -0
  262. include/dart/dynamics/RevoluteJoint.hpp +120 -0
  263. include/dart/dynamics/ScrewJoint.hpp +126 -0
  264. include/dart/dynamics/Shape.hpp +231 -0
  265. include/dart/dynamics/ShapeFrame.hpp +291 -0
  266. include/dart/dynamics/ShapeNode.hpp +134 -0
  267. include/dart/dynamics/SharedLibraryIkFast.hpp +147 -0
  268. include/dart/dynamics/SimpleFrame.hpp +247 -0
  269. include/dart/dynamics/Skeleton.hpp +1350 -0
  270. include/dart/dynamics/SmartPointer.hpp +185 -0
  271. include/dart/dynamics/SoftBodyNode.hpp +472 -0
  272. include/dart/dynamics/SoftMeshShape.hpp +100 -0
  273. include/dart/dynamics/SpecializedNodeManager.hpp +230 -0
  274. include/dart/dynamics/SphereShape.hpp +89 -0
  275. include/dart/dynamics/TemplatedJacobianNode.hpp +128 -0
  276. include/dart/dynamics/TranslationalJoint.hpp +105 -0
  277. include/dart/dynamics/TranslationalJoint2D.hpp +156 -0
  278. include/dart/dynamics/UniversalJoint.hpp +128 -0
  279. include/dart/dynamics/VoxelGridShape.hpp +171 -0
  280. include/dart/dynamics/WeldJoint.hpp +116 -0
  281. include/dart/dynamics/ZeroDofJoint.hpp +562 -0
  282. include/dart/dynamics/all.hpp +69 -0
  283. include/dart/dynamics/detail/BasicNodeManager.hpp +539 -0
  284. include/dart/dynamics/detail/BodyNode.hpp +344 -0
  285. include/dart/dynamics/detail/BodyNodeAspect.hpp +177 -0
  286. include/dart/dynamics/detail/BodyNodePtr.hpp +351 -0
  287. include/dart/dynamics/detail/CompositeNode.hpp +93 -0
  288. include/dart/dynamics/detail/DegreeOfFreedomPtr.hpp +338 -0
  289. include/dart/dynamics/detail/EndEffectorAspect.hpp +106 -0
  290. include/dart/dynamics/detail/EntityNode.hpp +81 -0
  291. include/dart/dynamics/detail/EntityNodeAspect.hpp +101 -0
  292. include/dart/dynamics/detail/EulerJointAspect.hpp +93 -0
  293. include/dart/dynamics/detail/FixedFrameAspect.hpp +58 -0
  294. include/dart/dynamics/detail/FixedJacobianNode.hpp +55 -0
  295. include/dart/dynamics/detail/GenericJoint.hpp +2471 -0
  296. include/dart/dynamics/detail/GenericJointAspect.hpp +353 -0
  297. include/dart/dynamics/detail/HeightmapShape-impl.hpp +243 -0
  298. include/dart/dynamics/detail/InverseKinematics.hpp +83 -0
  299. include/dart/dynamics/detail/InverseKinematicsPtr.hpp +341 -0
  300. include/dart/dynamics/detail/JointAspect.hpp +161 -0
  301. include/dart/dynamics/detail/JointPtr.hpp +293 -0
  302. include/dart/dynamics/detail/MarkerAspect.hpp +68 -0
  303. include/dart/dynamics/detail/MetaSkeleton-impl.hpp +151 -0
  304. include/dart/dynamics/detail/Node.hpp +532 -0
  305. include/dart/dynamics/detail/NodeManagerJoiner.hpp +184 -0
  306. include/dart/dynamics/detail/NodePtr.hpp +259 -0
  307. include/dart/dynamics/detail/PlanarJointAspect.hpp +136 -0
  308. include/dart/dynamics/detail/PrismaticJointAspect.hpp +85 -0
  309. include/dart/dynamics/detail/RevoluteJointAspect.hpp +86 -0
  310. include/dart/dynamics/detail/ScrewJointAspect.hpp +90 -0
  311. include/dart/dynamics/detail/ShapeFrameAspect.hpp +169 -0
  312. include/dart/dynamics/detail/ShapeNode.hpp +51 -0
  313. include/dart/dynamics/detail/Skeleton.hpp +92 -0
  314. include/dart/dynamics/detail/SkeletonAspect.hpp +181 -0
  315. include/dart/dynamics/detail/SoftBodyNodeAspect.hpp +132 -0
  316. include/dart/dynamics/detail/SpecializedNodeManager.hpp +324 -0
  317. include/dart/dynamics/detail/TemplatedJacobianNode.hpp +294 -0
  318. include/dart/dynamics/detail/TranslationalJoint2DAspect.hpp +140 -0
  319. include/dart/dynamics/detail/UniversalJointAspect.hpp +86 -0
  320. include/dart/dynamics/dynamics.hpp +14 -0
  321. include/dart/dynamics/ikfast.h +345 -0
  322. include/dart/external/odelcpsolver/common.h +418 -0
  323. include/dart/external/odelcpsolver/error.h +62 -0
  324. include/dart/external/odelcpsolver/lcp.h +75 -0
  325. include/dart/external/odelcpsolver/matrix.h +277 -0
  326. include/dart/external/odelcpsolver/misc.h +82 -0
  327. include/dart/external/odelcpsolver/odeconfig.h +110 -0
  328. include/dart/gui/osg/DefaultEventHandler.hpp +237 -0
  329. include/dart/gui/osg/DragAndDrop.hpp +360 -0
  330. include/dart/gui/osg/GridVisual.hpp +218 -0
  331. include/dart/gui/osg/ImGuiHandler.hpp +113 -0
  332. include/dart/gui/osg/ImGuiViewer.hpp +83 -0
  333. include/dart/gui/osg/ImGuiWidget.hpp +91 -0
  334. include/dart/gui/osg/IncludeImGui.hpp +75 -0
  335. include/dart/gui/osg/InteractiveFrame.hpp +170 -0
  336. include/dart/gui/osg/MouseEventHandler.hpp +76 -0
  337. include/dart/gui/osg/RealTimeWorldNode.hpp +126 -0
  338. include/dart/gui/osg/ShapeFrameNode.hpp +117 -0
  339. include/dart/gui/osg/SupportPolygonVisual.hpp +202 -0
  340. include/dart/gui/osg/TrackballManipulator.hpp +97 -0
  341. include/dart/gui/osg/Utils.hpp +120 -0
  342. include/dart/gui/osg/Viewer.hpp +427 -0
  343. include/dart/gui/osg/WorldNode.hpp +211 -0
  344. include/dart/gui/osg/all.hpp +19 -0
  345. include/dart/gui/osg/detail/CameraModeCallback.hpp +82 -0
  346. include/dart/gui/osg/detail/Utils-impl.hpp +160 -0
  347. include/dart/gui/osg/osg.hpp +14 -0
  348. include/dart/gui/osg/render/BoxShapeNode.hpp +74 -0
  349. include/dart/gui/osg/render/CapsuleShapeNode.hpp +75 -0
  350. include/dart/gui/osg/render/ConeShapeNode.hpp +74 -0
  351. include/dart/gui/osg/render/CylinderShapeNode.hpp +75 -0
  352. include/dart/gui/osg/render/EllipsoidShapeNode.hpp +76 -0
  353. include/dart/gui/osg/render/HeightmapShapeNode.hpp +485 -0
  354. include/dart/gui/osg/render/LineSegmentShapeNode.hpp +75 -0
  355. include/dart/gui/osg/render/MeshShapeNode.hpp +86 -0
  356. include/dart/gui/osg/render/MultiSphereShapeNode.hpp +76 -0
  357. include/dart/gui/osg/render/PlaneShapeNode.hpp +75 -0
  358. include/dart/gui/osg/render/PointCloudShapeNode.hpp +85 -0
  359. include/dart/gui/osg/render/PyramidShapeNode.hpp +75 -0
  360. include/dart/gui/osg/render/ShapeNode.hpp +126 -0
  361. include/dart/gui/osg/render/SoftMeshShapeNode.hpp +75 -0
  362. include/dart/gui/osg/render/SphereShapeNode.hpp +76 -0
  363. include/dart/gui/osg/render/VoxelGridShapeNode.hpp +83 -0
  364. include/dart/gui/osg/render/WarningShapeNode.hpp +64 -0
  365. include/dart/gui/osg/render/all.hpp +19 -0
  366. include/dart/gui/osg/render/render.hpp +14 -0
  367. include/dart/integration/EulerIntegrator.hpp +64 -0
  368. include/dart/integration/Integrator.hpp +104 -0
  369. include/dart/integration/RK4Integrator.hpp +68 -0
  370. include/dart/integration/SemiImplicitEulerIntegrator.hpp +64 -0
  371. include/dart/integration/all.hpp +6 -0
  372. include/dart/integration/integration.hpp +14 -0
  373. include/dart/lcpsolver/Lemke.hpp +54 -0
  374. include/dart/lcpsolver/ODELCPSolver.hpp +88 -0
  375. include/dart/lcpsolver/all.hpp +4 -0
  376. include/dart/lcpsolver/lcpsolver.hpp +14 -0
  377. include/dart/math/ConfigurationSpace.hpp +144 -0
  378. include/dart/math/Constants.hpp +79 -0
  379. include/dart/math/Geometry.hpp +659 -0
  380. include/dart/math/Helpers.hpp +481 -0
  381. include/dart/math/Icosphere.hpp +106 -0
  382. include/dart/math/MathTypes.hpp +100 -0
  383. include/dart/math/Mesh.hpp +108 -0
  384. include/dart/math/Random.hpp +225 -0
  385. include/dart/math/TriMesh.hpp +121 -0
  386. include/dart/math/all.hpp +11 -0
  387. include/dart/math/detail/ConfigurationSpace.hpp +235 -0
  388. include/dart/math/detail/Convhull-impl.hpp +743 -0
  389. include/dart/math/detail/Convhull.hpp +118 -0
  390. include/dart/math/detail/Geometry-impl.hpp +113 -0
  391. include/dart/math/detail/Icosphere-impl.hpp +214 -0
  392. include/dart/math/detail/Mesh-impl.hpp +151 -0
  393. include/dart/math/detail/Random-impl.hpp +353 -0
  394. include/dart/math/detail/TriMesh-impl.hpp +202 -0
  395. include/dart/math/math.hpp +14 -0
  396. include/dart/optimizer/Function.hpp +203 -0
  397. include/dart/optimizer/GenericMultiObjectiveProblem.hpp +174 -0
  398. include/dart/optimizer/GradientDescentSolver.hpp +240 -0
  399. include/dart/optimizer/MultiObjectiveProblem.hpp +168 -0
  400. include/dart/optimizer/MultiObjectiveSolver.hpp +168 -0
  401. include/dart/optimizer/Population.hpp +108 -0
  402. include/dart/optimizer/Problem.hpp +191 -0
  403. include/dart/optimizer/Solver.hpp +182 -0
  404. include/dart/optimizer/all.hpp +10 -0
  405. include/dart/optimizer/ipopt/BackwardCompatibility.hpp +43 -0
  406. include/dart/optimizer/ipopt/IpoptSolver.hpp +223 -0
  407. include/dart/optimizer/ipopt/all.hpp +4 -0
  408. include/dart/optimizer/ipopt/ipopt.hpp +14 -0
  409. include/dart/optimizer/nlopt/NloptSolver.hpp +212 -0
  410. include/dart/optimizer/nlopt/all.hpp +3 -0
  411. include/dart/optimizer/nlopt/nlopt.hpp +14 -0
  412. include/dart/optimizer/optimizer.hpp +14 -0
  413. include/dart/simulation/Recording.hpp +118 -0
  414. include/dart/simulation/SmartPointer.hpp +46 -0
  415. include/dart/simulation/World.hpp +405 -0
  416. include/dart/simulation/all.hpp +5 -0
  417. include/dart/simulation/detail/World-impl.hpp +129 -0
  418. include/dart/simulation/simulation.hpp +14 -0
  419. include/dart/utils/C3D.hpp +107 -0
  420. include/dart/utils/CompositeResourceRetriever.hpp +97 -0
  421. include/dart/utils/DartResourceRetriever.hpp +104 -0
  422. include/dart/utils/FileInfoC3D.hpp +91 -0
  423. include/dart/utils/FileInfoDof.hpp +109 -0
  424. include/dart/utils/FileInfoWorld.hpp +75 -0
  425. include/dart/utils/PackageResourceRetriever.hpp +118 -0
  426. include/dart/utils/SkelParser.hpp +70 -0
  427. include/dart/utils/VskParser.hpp +108 -0
  428. include/dart/utils/XmlHelpers.hpp +243 -0
  429. include/dart/utils/all.hpp +14 -0
  430. include/dart/utils/detail/XmlHelpers-impl.hpp +213 -0
  431. include/dart/utils/mjcf/MjcfParser.hpp +80 -0
  432. include/dart/utils/mjcf/all.hpp +3 -0
  433. include/dart/utils/mjcf/mjcf.hpp +14 -0
  434. include/dart/utils/sdf/SdfParser.hpp +98 -0
  435. include/dart/utils/sdf/all.hpp +3 -0
  436. include/dart/utils/sdf/sdf.hpp +14 -0
  437. include/dart/utils/urdf/BackwardCompatibility.hpp +52 -0
  438. include/dart/utils/urdf/DartLoader.hpp +277 -0
  439. include/dart/utils/urdf/IncludeUrdf.hpp +47 -0
  440. include/dart/utils/urdf/URDFTypes.hpp +42 -0
  441. include/dart/utils/urdf/all.hpp +5 -0
  442. include/dart/utils/urdf/urdf.hpp +14 -0
  443. include/dart/utils/urdf/urdf_world_parser.hpp +83 -0
  444. include/dart/utils/utils.hpp +14 -0
  445. lib64/libdart-collision-bullet.a +0 -0
  446. lib64/libdart-collision-ode.a +0 -0
  447. lib64/libdart-external-odelcpsolver.a +0 -0
  448. lib64/libdart-gui-osg.a +0 -0
  449. lib64/libdart-optimizer-ipopt.a +0 -0
  450. lib64/libdart-optimizer-nlopt.a +0 -0
  451. lib64/libdart-utils-urdf.a +0 -0
  452. lib64/libdart-utils.a +0 -0
  453. lib64/libdart.a +0 -0
  454. lib64/pkgconfig/dart.pc +12 -0
  455. share/dart/cmake/DARTConfig.cmake +194 -0
  456. share/dart/cmake/DARTConfigVersion.cmake +65 -0
  457. share/dart/cmake/DARTFindBullet.cmake +96 -0
  458. share/dart/cmake/DARTFindEigen3.cmake +9 -0
  459. share/dart/cmake/DARTFindIPOPT.cmake +20 -0
  460. share/dart/cmake/DARTFindNLOPT.cmake +17 -0
  461. share/dart/cmake/DARTFindODE.cmake +23 -0
  462. share/dart/cmake/DARTFindOpenSceneGraph.cmake +69 -0
  463. share/dart/cmake/DARTFindassimp.cmake +18 -0
  464. share/dart/cmake/DARTFindfcl.cmake +23 -0
  465. share/dart/cmake/DARTFindfmt.cmake +9 -0
  466. share/dart/cmake/DARTFindimgui.cmake +21 -0
  467. share/dart/cmake/DARTFindoctomap.cmake +17 -0
  468. share/dart/cmake/DARTFindspdlog.cmake +9 -0
  469. share/dart/cmake/DARTFindtinyxml2.cmake +27 -0
  470. share/dart/cmake/DARTFindurdfdom.cmake +29 -0
  471. share/dart/cmake/FindIPOPT.cmake +54 -0
  472. share/dart/cmake/FindNLOPT.cmake +54 -0
  473. share/dart/cmake/FindODE.cmake +54 -0
  474. share/dart/cmake/Findassimp.cmake +56 -0
  475. share/dart/cmake/Findfcl.cmake +67 -0
  476. share/dart/cmake/Findimgui.cmake +70 -0
  477. share/dart/cmake/Findtinyxml2.cmake +54 -0
  478. share/dart/cmake/dart_collision-bulletComponent.cmake +19 -0
  479. share/dart/cmake/dart_collision-bulletTargets-release.cmake +19 -0
  480. share/dart/cmake/dart_collision-bulletTargets.cmake +122 -0
  481. share/dart/cmake/dart_collision-odeComponent.cmake +19 -0
  482. share/dart/cmake/dart_collision-odeTargets-release.cmake +19 -0
  483. share/dart/cmake/dart_collision-odeTargets.cmake +122 -0
  484. share/dart/cmake/dart_dartComponent.cmake +19 -0
  485. share/dart/cmake/dart_dartTargets-release.cmake +19 -0
  486. share/dart/cmake/dart_dartTargets.cmake +125 -0
  487. share/dart/cmake/dart_external-odelcpsolverComponent.cmake +19 -0
  488. share/dart/cmake/dart_external-odelcpsolverTargets-release.cmake +19 -0
  489. share/dart/cmake/dart_external-odelcpsolverTargets.cmake +106 -0
  490. share/dart/cmake/dart_gui-osgComponent.cmake +19 -0
  491. share/dart/cmake/dart_gui-osgTargets-release.cmake +19 -0
  492. share/dart/cmake/dart_gui-osgTargets.cmake +122 -0
  493. share/dart/cmake/dart_optimizer-ipoptComponent.cmake +19 -0
  494. share/dart/cmake/dart_optimizer-ipoptTargets-release.cmake +19 -0
  495. share/dart/cmake/dart_optimizer-ipoptTargets.cmake +123 -0
  496. share/dart/cmake/dart_optimizer-nloptComponent.cmake +19 -0
  497. share/dart/cmake/dart_optimizer-nloptTargets-release.cmake +19 -0
  498. share/dart/cmake/dart_optimizer-nloptTargets.cmake +123 -0
  499. share/dart/cmake/dart_utils-urdfComponent.cmake +19 -0
  500. share/dart/cmake/dart_utils-urdfTargets-release.cmake +19 -0
  501. share/dart/cmake/dart_utils-urdfTargets.cmake +122 -0
  502. share/dart/cmake/dart_utilsComponent.cmake +19 -0
  503. share/dart/cmake/dart_utilsTargets-release.cmake +19 -0
  504. share/dart/cmake/dart_utilsTargets.cmake +122 -0
  505. share/dart/package.xml +42 -0
  506. share/doc/dart/data/c3d/nick_freeform_001.c3d +0 -0
  507. share/doc/dart/data/c3d/squat.c3d +0 -0
  508. share/doc/dart/data/dof/RHand.dof +205 -0
  509. share/doc/dart/data/dof/fixedHand.dof +205 -0
  510. share/doc/dart/data/dof/init_Tpose.dof +240 -0
  511. share/doc/dart/data/dof/same.dof +1003 -0
  512. share/doc/dart/data/dof/simMotion.dof +1817 -0
  513. share/doc/dart/data/dof/simMotion1.dof +1355 -0
  514. share/doc/dart/data/etc/fort.4 +43 -0
  515. share/doc/dart/data/humanJointLimits/neuralnets/net-larm +0 -0
  516. share/doc/dart/data/humanJointLimits/neuralnets/net-lleg +0 -0
  517. share/doc/dart/data/mjcf/openai/LICENSE.md +36 -0
  518. share/doc/dart/data/mjcf/openai/ant.xml +81 -0
  519. share/doc/dart/data/mjcf/openai/half_cheetah.xml +96 -0
  520. share/doc/dart/data/mjcf/openai/hopper.xml +50 -0
  521. share/doc/dart/data/mjcf/openai/humanoid.xml +121 -0
  522. share/doc/dart/data/mjcf/openai/humanoidstandup.xml +121 -0
  523. share/doc/dart/data/mjcf/openai/inverted_double_pendulum.xml +47 -0
  524. share/doc/dart/data/mjcf/openai/inverted_pendulum.xml +27 -0
  525. share/doc/dart/data/mjcf/openai/point.xml +31 -0
  526. share/doc/dart/data/mjcf/openai/pusher.xml +91 -0
  527. share/doc/dart/data/mjcf/openai/reacher.xml +39 -0
  528. share/doc/dart/data/mjcf/openai/robotics/fetch/pick_and_place.xml +35 -0
  529. share/doc/dart/data/mjcf/openai/robotics/fetch/push.xml +32 -0
  530. share/doc/dart/data/mjcf/openai/robotics/fetch/reach.xml +26 -0
  531. share/doc/dart/data/mjcf/openai/robotics/fetch/robot.xml +123 -0
  532. share/doc/dart/data/mjcf/openai/robotics/fetch/shared.xml +66 -0
  533. share/doc/dart/data/mjcf/openai/robotics/fetch/slide.xml +32 -0
  534. share/doc/dart/data/mjcf/openai/robotics/stls/.get +0 -0
  535. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/base_link_collision.stl +0 -0
  536. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/bellows_link_collision.stl +0 -0
  537. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/elbow_flex_link_collision.stl +0 -0
  538. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/estop_link.stl +0 -0
  539. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/forearm_roll_link_collision.stl +0 -0
  540. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/gripper_link.stl +0 -0
  541. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/head_pan_link_collision.stl +0 -0
  542. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/head_tilt_link_collision.stl +0 -0
  543. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/l_wheel_link_collision.stl +0 -0
  544. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/laser_link.stl +0 -0
  545. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/r_wheel_link_collision.stl +0 -0
  546. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/shoulder_lift_link_collision.stl +0 -0
  547. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/shoulder_pan_link_collision.stl +0 -0
  548. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/torso_fixed_link.stl +0 -0
  549. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/torso_lift_link_collision.stl +0 -0
  550. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/upperarm_roll_link_collision.stl +0 -0
  551. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/wrist_flex_link_collision.stl +0 -0
  552. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/wrist_roll_link_collision.stl +0 -0
  553. share/doc/dart/data/mjcf/openai/robotics/textures/block.png +0 -0
  554. share/doc/dart/data/mjcf/openai/robotics/textures/block_hidden.png +0 -0
  555. share/doc/dart/data/mjcf/openai/striker.xml +101 -0
  556. share/doc/dart/data/mjcf/openai/swimmer.xml +39 -0
  557. share/doc/dart/data/mjcf/openai/thrower.xml +127 -0
  558. share/doc/dart/data/mjcf/openai/walker2d.xml +62 -0
  559. share/doc/dart/data/mjcf/test/default.xml +17 -0
  560. share/doc/dart/data/mjcf/test/include_default.xml +8 -0
  561. share/doc/dart/data/mjcf/test/include_main.xml +12 -0
  562. share/doc/dart/data/obj/Body_Hip.obj +22830 -0
  563. share/doc/dart/data/obj/BoxSmall.obj +23 -0
  564. share/doc/dart/data/obj/foot.obj +10970 -0
  565. share/doc/dart/data/other/torus1.path +11991 -0
  566. share/doc/dart/data/other/torus1.tris +5329 -0
  567. share/doc/dart/data/other/torus2.path +11991 -0
  568. share/doc/dart/data/other/torus2.tris +12961 -0
  569. share/doc/dart/data/screencap/.KEEP +0 -0
  570. share/doc/dart/data/sdf/atlas/atlas_v3.urdf +914 -0
  571. share/doc/dart/data/sdf/atlas/atlas_v3_no_head.sdf +1541 -0
  572. share/doc/dart/data/sdf/atlas/atlas_v3_no_head.urdf +914 -0
  573. share/doc/dart/data/sdf/atlas/atlas_v3_no_head_soft_feet.sdf +1567 -0
  574. share/doc/dart/data/sdf/atlas/ground.urdf +28 -0
  575. share/doc/dart/data/sdf/atlas/head.dae +8607 -0
  576. share/doc/dart/data/sdf/atlas/head.stl +0 -0
  577. share/doc/dart/data/sdf/atlas/head_camera.dae +2326 -0
  578. share/doc/dart/data/sdf/atlas/head_camera.stl +0 -0
  579. share/doc/dart/data/sdf/atlas/l_clav.dae +1278 -0
  580. share/doc/dart/data/sdf/atlas/l_clav.stl +0 -0
  581. share/doc/dart/data/sdf/atlas/l_farm.dae +1204 -0
  582. share/doc/dart/data/sdf/atlas/l_farm.stl +0 -0
  583. share/doc/dart/data/sdf/atlas/l_foot.dae +1330 -0
  584. share/doc/dart/data/sdf/atlas/l_foot.stl +0 -0
  585. share/doc/dart/data/sdf/atlas/l_hand.dae +964 -0
  586. share/doc/dart/data/sdf/atlas/l_hand.stl +0 -0
  587. share/doc/dart/data/sdf/atlas/l_larm.dae +1378 -0
  588. share/doc/dart/data/sdf/atlas/l_larm.stl +0 -0
  589. share/doc/dart/data/sdf/atlas/l_lglut.dae +897 -0
  590. share/doc/dart/data/sdf/atlas/l_lglut.stl +0 -0
  591. share/doc/dart/data/sdf/atlas/l_lleg.dae +6660 -0
  592. share/doc/dart/data/sdf/atlas/l_lleg.stl +0 -0
  593. share/doc/dart/data/sdf/atlas/l_scap.dae +1531 -0
  594. share/doc/dart/data/sdf/atlas/l_scap.stl +0 -0
  595. share/doc/dart/data/sdf/atlas/l_talus.dae +374 -0
  596. share/doc/dart/data/sdf/atlas/l_talus.stl +0 -0
  597. share/doc/dart/data/sdf/atlas/l_uarm.dae +1204 -0
  598. share/doc/dart/data/sdf/atlas/l_uarm.stl +0 -0
  599. share/doc/dart/data/sdf/atlas/l_uglut.dae +398 -0
  600. share/doc/dart/data/sdf/atlas/l_uglut.stl +0 -0
  601. share/doc/dart/data/sdf/atlas/l_uleg.dae +9087 -0
  602. share/doc/dart/data/sdf/atlas/l_uleg.stl +0 -0
  603. share/doc/dart/data/sdf/atlas/ltorso.dae +614 -0
  604. share/doc/dart/data/sdf/atlas/ltorso.stl +0 -0
  605. share/doc/dart/data/sdf/atlas/mtorso.dae +266 -0
  606. share/doc/dart/data/sdf/atlas/mtorso.stl +0 -0
  607. share/doc/dart/data/sdf/atlas/pelvis.dae +8727 -0
  608. share/doc/dart/data/sdf/atlas/pelvis.stl +0 -0
  609. share/doc/dart/data/sdf/atlas/r_clav.dae +1278 -0
  610. share/doc/dart/data/sdf/atlas/r_clav.stl +0 -0
  611. share/doc/dart/data/sdf/atlas/r_farm.dae +1204 -0
  612. share/doc/dart/data/sdf/atlas/r_farm.stl +0 -0
  613. share/doc/dart/data/sdf/atlas/r_foot.dae +1330 -0
  614. share/doc/dart/data/sdf/atlas/r_foot.stl +0 -0
  615. share/doc/dart/data/sdf/atlas/r_hand.dae +904 -0
  616. share/doc/dart/data/sdf/atlas/r_hand.stl +0 -0
  617. share/doc/dart/data/sdf/atlas/r_larm.dae +1378 -0
  618. share/doc/dart/data/sdf/atlas/r_larm.stl +0 -0
  619. share/doc/dart/data/sdf/atlas/r_lglut.dae +897 -0
  620. share/doc/dart/data/sdf/atlas/r_lglut.stl +0 -0
  621. share/doc/dart/data/sdf/atlas/r_lleg.dae +6661 -0
  622. share/doc/dart/data/sdf/atlas/r_lleg.stl +0 -0
  623. share/doc/dart/data/sdf/atlas/r_scap.dae +1531 -0
  624. share/doc/dart/data/sdf/atlas/r_scap.stl +0 -0
  625. share/doc/dart/data/sdf/atlas/r_talus.dae +374 -0
  626. share/doc/dart/data/sdf/atlas/r_talus.stl +0 -0
  627. share/doc/dart/data/sdf/atlas/r_uarm.dae +1144 -0
  628. share/doc/dart/data/sdf/atlas/r_uarm.stl +0 -0
  629. share/doc/dart/data/sdf/atlas/r_uglut.dae +398 -0
  630. share/doc/dart/data/sdf/atlas/r_uglut.stl +0 -0
  631. share/doc/dart/data/sdf/atlas/r_uleg.dae +9087 -0
  632. share/doc/dart/data/sdf/atlas/r_uleg.stl +0 -0
  633. share/doc/dart/data/sdf/atlas/utorso.dae +28342 -0
  634. share/doc/dart/data/sdf/atlas/utorso.stl +0 -0
  635. share/doc/dart/data/sdf/atlas/utorso_mod.dae +16508 -0
  636. share/doc/dart/data/sdf/atlas/utorso_mod.stl +0 -0
  637. share/doc/dart/data/sdf/atlas/utorso_pack.dae +8521 -0
  638. share/doc/dart/data/sdf/atlas/utorso_pack.stl +0 -0
  639. share/doc/dart/data/sdf/benchmark.world +2510 -0
  640. share/doc/dart/data/sdf/double_pendulum.world +168 -0
  641. share/doc/dart/data/sdf/double_pendulum_with_base.world +263 -0
  642. share/doc/dart/data/sdf/empty.world +13 -0
  643. share/doc/dart/data/sdf/ground.world +48 -0
  644. share/doc/dart/data/sdf/materials/textures/atlas_cage_and_camera_diffuse_flat.jpg +0 -0
  645. share/doc/dart/data/sdf/materials/textures/drc_extremities_diffuse.jpg +0 -0
  646. share/doc/dart/data/sdf/materials/textures/drc_labels_1.jpg +0 -0
  647. share/doc/dart/data/sdf/materials/textures/drc_torso_head_diffuse.jpg +0 -0
  648. share/doc/dart/data/sdf/materials/textures/extremities_diffuse_unplugged.jpg +0 -0
  649. share/doc/dart/data/sdf/materials/textures/right_leg_diffuse_unplugged.jpg +0 -0
  650. share/doc/dart/data/sdf/materials/textures/torso_diffuse_unplugged.jpg +0 -0
  651. share/doc/dart/data/sdf/quad.sdf +867 -0
  652. share/doc/dart/data/sdf/test/force_torque_test.world +173 -0
  653. share/doc/dart/data/sdf/test/force_torque_test2.world +214 -0
  654. share/doc/dart/data/sdf/test/issue1193_revolute_test.sdf +70 -0
  655. share/doc/dart/data/sdf/test/issue1193_revolute_with_offset_test.sdf +70 -0
  656. share/doc/dart/data/sdf/test/issue1624_cubes.sdf +5037 -0
  657. share/doc/dart/data/sdf/test/single_bodynode_skeleton.world +55 -0
  658. share/doc/dart/data/sdf/test/test_issue1583.model +45 -0
  659. share/doc/dart/data/sdf/test/test_issue1596.model +182 -0
  660. share/doc/dart/data/sdf/test/test_skeleton_joint.world +278 -0
  661. share/doc/dart/data/skel/biped.skel +850 -0
  662. share/doc/dart/data/skel/bullet_collision.skel +174 -0
  663. share/doc/dart/data/skel/chain.skel +212 -0
  664. share/doc/dart/data/skel/cube.skel +71 -0
  665. share/doc/dart/data/skel/cubes.skel +137 -0
  666. share/doc/dart/data/skel/empty.skel +10 -0
  667. share/doc/dart/data/skel/freeChain.skel +212 -0
  668. share/doc/dart/data/skel/fullbody1.skel +1177 -0
  669. share/doc/dart/data/skel/ground.skel +31 -0
  670. share/doc/dart/data/skel/joint_limit.skel +123 -0
  671. share/doc/dart/data/skel/kima/abdomen.dae +18933 -0
  672. share/doc/dart/data/skel/kima/head.dae +34634 -0
  673. share/doc/dart/data/skel/kima/kima_human_edited.skel +933 -0
  674. share/doc/dart/data/skel/kima/kima_human_left_arm.skel +323 -0
  675. share/doc/dart/data/skel/kima/kima_human_left_leg.skel +327 -0
  676. share/doc/dart/data/skel/kima/l-clavicle.dae +20111 -0
  677. share/doc/dart/data/skel/kima/l-foot.dae +28208 -0
  678. share/doc/dart/data/skel/kima/pelvis.dae +35919 -0
  679. share/doc/dart/data/skel/kima/r-clavicle.dae +20090 -0
  680. share/doc/dart/data/skel/kima/thorax.dae +47337 -0
  681. share/doc/dart/data/skel/mesh_collision.skel +137 -0
  682. share/doc/dart/data/skel/shapes.skel +378 -0
  683. share/doc/dart/data/skel/skateboard.skel +222 -0
  684. share/doc/dart/data/skel/softBodies.skel +284 -0
  685. share/doc/dart/data/skel/soft_cubes.skel +134 -0
  686. share/doc/dart/data/skel/soft_open_chain.skel +241 -0
  687. share/doc/dart/data/skel/sphere.skel +74 -0
  688. share/doc/dart/data/skel/spheres.skel +118 -0
  689. share/doc/dart/data/skel/test/SimplePendulum.skel +141 -0
  690. share/doc/dart/data/skel/test/ball_joints.skel +49 -0
  691. share/doc/dart/data/skel/test/box_stacking.skel +346 -0
  692. share/doc/dart/data/skel/test/boxes.skel +52 -0
  693. share/doc/dart/data/skel/test/chainwhipa.skel +193 -0
  694. share/doc/dart/data/skel/test/collision_of_prescribed_joints_test.skel +249 -0
  695. share/doc/dart/data/skel/test/dof_attribute_test.skel +206 -0
  696. share/doc/dart/data/skel/test/double_pendulum.skel +76 -0
  697. share/doc/dart/data/skel/test/double_pendulum_ball_joint.skel +76 -0
  698. share/doc/dart/data/skel/test/double_pendulum_euler_joint.skel +78 -0
  699. share/doc/dart/data/skel/test/double_pendulum_with_base.skel +1390 -0
  700. share/doc/dart/data/skel/test/drop.skel +116 -0
  701. share/doc/dart/data/skel/test/drop_BENCHMARK.skel +10 -0
  702. share/doc/dart/data/skel/test/drop_unrotated_box.skel +156 -0
  703. share/doc/dart/data/skel/test/empty.skel +10 -0
  704. share/doc/dart/data/skel/test/file_info_world_test.skel +1177 -0
  705. share/doc/dart/data/skel/test/free_joints.skel +49 -0
  706. share/doc/dart/data/skel/test/gazebo/drop_test.skel +161 -0
  707. share/doc/dart/data/skel/test/gazebo/force_torque_test.skel +138 -0
  708. share/doc/dart/data/skel/test/gazebo/force_torque_test2.skel +171 -0
  709. share/doc/dart/data/skel/test/hybrid_dynamics_test.skel +172 -0
  710. share/doc/dart/data/skel/test/joint_actuator_type_test.skel +185 -0
  711. share/doc/dart/data/skel/test/joint_dynamics_elements_test.skel +103 -0
  712. share/doc/dart/data/skel/test/joint_friction_test.skel +80 -0
  713. share/doc/dart/data/skel/test/joint_limit_test.skel +80 -0
  714. share/doc/dart/data/skel/test/planar_joint.skel +167 -0
  715. share/doc/dart/data/skel/test/serial_chain_BENCHMARK.skel +10 -0
  716. share/doc/dart/data/skel/test/serial_chain_ball_joint.skel +212 -0
  717. share/doc/dart/data/skel/test/serial_chain_ball_joint_20.skel +412 -0
  718. share/doc/dart/data/skel/test/serial_chain_ball_joint_40.skel +812 -0
  719. share/doc/dart/data/skel/test/serial_chain_eulerxyz_joint.skel +224 -0
  720. share/doc/dart/data/skel/test/serial_chain_revolute_joint.skel +244 -0
  721. share/doc/dart/data/skel/test/simple_tree_structure.skel +108 -0
  722. share/doc/dart/data/skel/test/simple_tree_structure_ball_joint.skel +108 -0
  723. share/doc/dart/data/skel/test/simple_tree_structure_euler_joint.skel +111 -0
  724. share/doc/dart/data/skel/test/single_pendulum.skel +55 -0
  725. share/doc/dart/data/skel/test/single_pendulum_ball_joint.skel +55 -0
  726. share/doc/dart/data/skel/test/single_pendulum_euler_joint.skel +56 -0
  727. share/doc/dart/data/skel/test/spheres.skel +118 -0
  728. share/doc/dart/data/skel/test/test_adaptive_deformable.skel +88 -0
  729. share/doc/dart/data/skel/test/test_articulated_bodies.skel +112 -0
  730. share/doc/dart/data/skel/test/test_articulated_bodies_10bodies.skel +401 -0
  731. share/doc/dart/data/skel/test/test_double_pendulum.skel +105 -0
  732. share/doc/dart/data/skel/test/test_drop_box.skel +87 -0
  733. share/doc/dart/data/skel/test/test_drop_box_offset.skel +87 -0
  734. share/doc/dart/data/skel/test/test_drop_low_stiffness.skel +86 -0
  735. share/doc/dart/data/skel/test/test_drop_sphere.skel +86 -0
  736. share/doc/dart/data/skel/test/test_shapes.skel +324 -0
  737. share/doc/dart/data/skel/test/test_single_body.skel +55 -0
  738. share/doc/dart/data/skel/test/test_single_pendulum.skel +55 -0
  739. share/doc/dart/data/skel/test/translational_joints.skel +49 -0
  740. share/doc/dart/data/skel/test/tree_structure.skel +428 -0
  741. share/doc/dart/data/skel/test/tree_structure_ball_joint.skel +441 -0
  742. share/doc/dart/data/skel/test/tree_structure_euler_joint.skel +441 -0
  743. share/doc/dart/data/skel/two_cubes.skel +118 -0
  744. share/doc/dart/data/skel/vehicle.skel +322 -0
  745. share/doc/dart/data/test/hello_world.txt +1 -0
  746. share/doc/dart/data/urdf/KR5/KR5 sixx R650.urdf +397 -0
  747. share/doc/dart/data/urdf/KR5/ground.urdf +28 -0
  748. share/doc/dart/data/urdf/KR5/meshes/base_link.STL +0 -0
  749. share/doc/dart/data/urdf/KR5/meshes/bicep.STL +0 -0
  750. share/doc/dart/data/urdf/KR5/meshes/elbow.STL +0 -0
  751. share/doc/dart/data/urdf/KR5/meshes/forearm.STL +0 -0
  752. share/doc/dart/data/urdf/KR5/meshes/palm.STL +0 -0
  753. share/doc/dart/data/urdf/KR5/meshes/shoulder.STL +0 -0
  754. share/doc/dart/data/urdf/KR5/meshes/wrist.STL +0 -0
  755. share/doc/dart/data/urdf/drchubo/CMakeLists.txt +5 -0
  756. share/doc/dart/data/urdf/drchubo/drchubo.urdf +1508 -0
  757. share/doc/dart/data/urdf/drchubo/meshes/convhull_LAP_merged.stl +0 -0
  758. share/doc/dart/data/urdf/drchubo/meshes/convhull_LAR_merged.stl +0 -0
  759. share/doc/dart/data/urdf/drchubo/meshes/convhull_LEP_merged.stl +0 -0
  760. share/doc/dart/data/urdf/drchubo/meshes/convhull_LF1.stl +0 -0
  761. share/doc/dart/data/urdf/drchubo/meshes/convhull_LF2.stl +0 -0
  762. share/doc/dart/data/urdf/drchubo/meshes/convhull_LF3.stl +0 -0
  763. share/doc/dart/data/urdf/drchubo/meshes/convhull_LHP_merged.stl +0 -0
  764. share/doc/dart/data/urdf/drchubo/meshes/convhull_LHR_merged.stl +0 -0
  765. share/doc/dart/data/urdf/drchubo/meshes/convhull_LHY_merged.stl +0 -0
  766. share/doc/dart/data/urdf/drchubo/meshes/convhull_LKP_merged.stl +0 -0
  767. share/doc/dart/data/urdf/drchubo/meshes/convhull_LSP_merged.stl +0 -0
  768. share/doc/dart/data/urdf/drchubo/meshes/convhull_LSR_merged.stl +0 -0
  769. share/doc/dart/data/urdf/drchubo/meshes/convhull_LSY_merged.stl +0 -0
  770. share/doc/dart/data/urdf/drchubo/meshes/convhull_LWP_merged.stl +0 -0
  771. share/doc/dart/data/urdf/drchubo/meshes/convhull_LWR_merged.stl +0 -0
  772. share/doc/dart/data/urdf/drchubo/meshes/convhull_LWY_merged.stl +0 -0
  773. share/doc/dart/data/urdf/drchubo/meshes/convhull_NK1_merged.stl +0 -0
  774. share/doc/dart/data/urdf/drchubo/meshes/convhull_NK2.stl +0 -0
  775. share/doc/dart/data/urdf/drchubo/meshes/convhull_NKY_merged.stl +0 -0
  776. share/doc/dart/data/urdf/drchubo/meshes/convhull_RAP_merged.stl +0 -0
  777. share/doc/dart/data/urdf/drchubo/meshes/convhull_RAR_merged.stl +0 -0
  778. share/doc/dart/data/urdf/drchubo/meshes/convhull_REP_merged.stl +0 -0
  779. share/doc/dart/data/urdf/drchubo/meshes/convhull_RF1.stl +0 -0
  780. share/doc/dart/data/urdf/drchubo/meshes/convhull_RF2.stl +0 -0
  781. share/doc/dart/data/urdf/drchubo/meshes/convhull_RF3.stl +0 -0
  782. share/doc/dart/data/urdf/drchubo/meshes/convhull_RHP_merged.stl +0 -0
  783. share/doc/dart/data/urdf/drchubo/meshes/convhull_RHR_merged.stl +0 -0
  784. share/doc/dart/data/urdf/drchubo/meshes/convhull_RHY_merged.stl +0 -0
  785. share/doc/dart/data/urdf/drchubo/meshes/convhull_RKP_merged.stl +0 -0
  786. share/doc/dart/data/urdf/drchubo/meshes/convhull_RSP_merged.stl +0 -0
  787. share/doc/dart/data/urdf/drchubo/meshes/convhull_RSR_merged.stl +0 -0
  788. share/doc/dart/data/urdf/drchubo/meshes/convhull_RSY_merged.stl +0 -0
  789. share/doc/dart/data/urdf/drchubo/meshes/convhull_RWP_merged.stl +0 -0
  790. share/doc/dart/data/urdf/drchubo/meshes/convhull_RWR_merged.stl +0 -0
  791. share/doc/dart/data/urdf/drchubo/meshes/convhull_RWY_merged.stl +0 -0
  792. share/doc/dart/data/urdf/drchubo/meshes/convhull_TSY_merged.stl +0 -0
  793. share/doc/dart/data/urdf/drchubo/meshes/convhull_Torso_merged.stl +0 -0
  794. share/doc/dart/data/urdf/drchubo/package.xml +11 -0
  795. share/doc/dart/data/urdf/test/invalid.urdf +1 -0
  796. share/doc/dart/data/urdf/test/invalid_mesh.stl +1 -0
  797. share/doc/dart/data/urdf/test/invalid_mesh.urdf +10 -0
  798. share/doc/dart/data/urdf/test/issue838.urdf +86 -0
  799. share/doc/dart/data/urdf/test/joint_properties.urdf +60 -0
  800. share/doc/dart/data/urdf/test/missing_mesh.urdf +10 -0
  801. share/doc/dart/data/urdf/test/missing_package.urdf +10 -0
  802. share/doc/dart/data/urdf/test/primitive_geometry.urdf +12 -0
  803. share/doc/dart/data/urdf/test/testWorld.urdf +9 -0
  804. share/doc/dart/data/urdf/wam/meshes/images/base_gray_128x.jpg +0 -0
  805. share/doc/dart/data/urdf/wam/meshes/images/forearm_256x.jpg +0 -0
  806. share/doc/dart/data/urdf/wam/meshes/images/lpu_128x.jpg +0 -0
  807. share/doc/dart/data/urdf/wam/meshes/images/shoulder_256x.jpg +0 -0
  808. share/doc/dart/data/urdf/wam/meshes/images/upperarm_128x.jpg +0 -0
  809. share/doc/dart/data/urdf/wam/meshes/images/wrist_yaw_128x.jpg +0 -0
  810. share/doc/dart/data/urdf/wam/meshes/wam/wam1.STL +0 -0
  811. share/doc/dart/data/urdf/wam/meshes/wam/wam1.dae +187 -0
  812. share/doc/dart/data/urdf/wam/meshes/wam/wam1_collision.STL +0 -0
  813. share/doc/dart/data/urdf/wam/meshes/wam/wam2.STL +0 -0
  814. share/doc/dart/data/urdf/wam/meshes/wam/wam2.dae +187 -0
  815. share/doc/dart/data/urdf/wam/meshes/wam/wam2_collision.STL +0 -0
  816. share/doc/dart/data/urdf/wam/meshes/wam/wam3.STL +0 -0
  817. share/doc/dart/data/urdf/wam/meshes/wam/wam3.dae +187 -0
  818. share/doc/dart/data/urdf/wam/meshes/wam/wam3_collision.STL +0 -0
  819. share/doc/dart/data/urdf/wam/meshes/wam/wam4.STL +0 -0
  820. share/doc/dart/data/urdf/wam/meshes/wam/wam4.dae +187 -0
  821. share/doc/dart/data/urdf/wam/meshes/wam/wam4_collision.STL +0 -0
  822. share/doc/dart/data/urdf/wam/meshes/wam/wam5.STL +0 -0
  823. share/doc/dart/data/urdf/wam/meshes/wam/wam5.dae +187 -0
  824. share/doc/dart/data/urdf/wam/meshes/wam/wam5_collision.STL +0 -0
  825. share/doc/dart/data/urdf/wam/meshes/wam/wam6.STL +0 -0
  826. share/doc/dart/data/urdf/wam/meshes/wam/wam6.dae +187 -0
  827. share/doc/dart/data/urdf/wam/meshes/wam/wam6_collision.STL +0 -0
  828. share/doc/dart/data/urdf/wam/meshes/wam/wam7.STL +0 -0
  829. share/doc/dart/data/urdf/wam/meshes/wam/wam7.dae +137 -0
  830. share/doc/dart/data/urdf/wam/meshes/wam/wam7_collision.STL +0 -0
  831. share/doc/dart/data/urdf/wam/meshes/wam/wam_base.STL +0 -0
  832. share/doc/dart/data/urdf/wam/meshes/wam/wam_base.dae +103 -0
  833. share/doc/dart/data/urdf/wam/meshes/wam/wam_base_collision.STL +0 -0
  834. share/doc/dart/data/urdf/wam/wam.urdf +230 -0
  835. share/doc/dart/data/vsk/Nick01.vsk +398 -0
  836. share/doc/dart/data/vsk/SehoonVSK3.vsk +398 -0
  837. share/doc/dart/data/vsk/Yuting.vsk +398 -0
  838. share/doc/dart/data/vsk/test/empty.vsk +3 -0
  839. share/doc/dart/examples/CMakeLists.txt +44 -0
  840. share/doc/dart/examples/README.md +33 -0
  841. share/doc/dart/examples/add_delete_skels/CMakeLists.txt +19 -0
  842. share/doc/dart/examples/add_delete_skels/main.cpp +165 -0
  843. share/doc/dart/examples/atlas_puppet/CMakeLists.txt +19 -0
  844. share/doc/dart/examples/atlas_puppet/README.md +20 -0
  845. share/doc/dart/examples/atlas_puppet/main.cpp +930 -0
  846. share/doc/dart/examples/atlas_simbicon/AtlasSimbiconEventHandler.cpp +71 -0
  847. share/doc/dart/examples/atlas_simbicon/AtlasSimbiconEventHandler.hpp +56 -0
  848. share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWidget.cpp +187 -0
  849. share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWidget.hpp +85 -0
  850. share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWorldNode.cpp +134 -0
  851. share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWorldNode.hpp +75 -0
  852. share/doc/dart/examples/atlas_simbicon/CMakeLists.txt +19 -0
  853. share/doc/dart/examples/atlas_simbicon/Controller.cpp +996 -0
  854. share/doc/dart/examples/atlas_simbicon/Controller.hpp +203 -0
  855. share/doc/dart/examples/atlas_simbicon/README.md +20 -0
  856. share/doc/dart/examples/atlas_simbicon/State.cpp +674 -0
  857. share/doc/dart/examples/atlas_simbicon/State.hpp +336 -0
  858. share/doc/dart/examples/atlas_simbicon/StateMachine.cpp +222 -0
  859. share/doc/dart/examples/atlas_simbicon/StateMachine.hpp +134 -0
  860. share/doc/dart/examples/atlas_simbicon/TerminalCondition.cpp +111 -0
  861. share/doc/dart/examples/atlas_simbicon/TerminalCondition.hpp +102 -0
  862. share/doc/dart/examples/atlas_simbicon/main.cpp +102 -0
  863. share/doc/dart/examples/biped_stand/CMakeLists.txt +19 -0
  864. share/doc/dart/examples/biped_stand/README.md +20 -0
  865. share/doc/dart/examples/biped_stand/main.cpp +287 -0
  866. share/doc/dart/examples/box_stacking/CMakeLists.txt +19 -0
  867. share/doc/dart/examples/box_stacking/README.md +20 -0
  868. share/doc/dart/examples/box_stacking/main.cpp +417 -0
  869. share/doc/dart/examples/boxes/CMakeLists.txt +19 -0
  870. share/doc/dart/examples/boxes/README.md +20 -0
  871. share/doc/dart/examples/boxes/main.cpp +157 -0
  872. share/doc/dart/examples/drag_and_drop/CMakeLists.txt +19 -0
  873. share/doc/dart/examples/drag_and_drop/README.md +20 -0
  874. share/doc/dart/examples/drag_and_drop/main.cpp +101 -0
  875. share/doc/dart/examples/empty/CMakeLists.txt +19 -0
  876. share/doc/dart/examples/empty/README.md +20 -0
  877. share/doc/dart/examples/empty/main.cpp +164 -0
  878. share/doc/dart/examples/fetch/CMakeLists.txt +19 -0
  879. share/doc/dart/examples/fetch/README.md +20 -0
  880. share/doc/dart/examples/fetch/main.cpp +246 -0
  881. share/doc/dart/examples/hardcoded_design/CMakeLists.txt +19 -0
  882. share/doc/dart/examples/hardcoded_design/HardcodedEventHandler.cpp +71 -0
  883. share/doc/dart/examples/hardcoded_design/HardcodedEventHandler.hpp +56 -0
  884. share/doc/dart/examples/hardcoded_design/README.md +27 -0
  885. share/doc/dart/examples/hardcoded_design/main.cpp +186 -0
  886. share/doc/dart/examples/heightmap/CMakeLists.txt +19 -0
  887. share/doc/dart/examples/heightmap/README.md +20 -0
  888. share/doc/dart/examples/heightmap/main.cpp +460 -0
  889. share/doc/dart/examples/hello_world/CMakeLists.txt +19 -0
  890. share/doc/dart/examples/hello_world/README.md +20 -0
  891. share/doc/dart/examples/hello_world/main.cpp +114 -0
  892. share/doc/dart/examples/hubo_puppet/CMakeLists.txt +19 -0
  893. share/doc/dart/examples/hubo_puppet/README.md +20 -0
  894. share/doc/dart/examples/hubo_puppet/main.cpp +1464 -0
  895. share/doc/dart/examples/human_joint_limits/CMakeLists.txt +49 -0
  896. share/doc/dart/examples/human_joint_limits/HumanArmJointLimitConstraint.cpp +411 -0
  897. share/doc/dart/examples/human_joint_limits/HumanArmJointLimitConstraint.hpp +182 -0
  898. share/doc/dart/examples/human_joint_limits/HumanLegJointLimitConstraint.cpp +432 -0
  899. share/doc/dart/examples/human_joint_limits/HumanLegJointLimitConstraint.hpp +179 -0
  900. share/doc/dart/examples/human_joint_limits/main.cpp +157 -0
  901. share/doc/dart/examples/hybrid_dynamics/CMakeLists.txt +19 -0
  902. share/doc/dart/examples/hybrid_dynamics/README.md +17 -0
  903. share/doc/dart/examples/hybrid_dynamics/main.cpp +187 -0
  904. share/doc/dart/examples/imgui/CMakeLists.txt +19 -0
  905. share/doc/dart/examples/imgui/README.md +20 -0
  906. share/doc/dart/examples/imgui/main.cpp +289 -0
  907. share/doc/dart/examples/joint_constraints/CMakeLists.txt +19 -0
  908. share/doc/dart/examples/joint_constraints/Controller.cpp +110 -0
  909. share/doc/dart/examples/joint_constraints/Controller.hpp +105 -0
  910. share/doc/dart/examples/joint_constraints/README.md +22 -0
  911. share/doc/dart/examples/joint_constraints/main.cpp +242 -0
  912. share/doc/dart/examples/mixed_chain/CMakeLists.txt +19 -0
  913. share/doc/dart/examples/mixed_chain/README.md +35 -0
  914. share/doc/dart/examples/mixed_chain/main.cpp +188 -0
  915. share/doc/dart/examples/operational_space_control/CMakeLists.txt +19 -0
  916. share/doc/dart/examples/operational_space_control/README.md +20 -0
  917. share/doc/dart/examples/operational_space_control/main.cpp +338 -0
  918. share/doc/dart/examples/point_cloud/CMakeLists.txt +19 -0
  919. share/doc/dart/examples/point_cloud/README.md +20 -0
  920. share/doc/dart/examples/point_cloud/main.cpp +740 -0
  921. share/doc/dart/examples/rerun/CMakeLists.txt +19 -0
  922. share/doc/dart/examples/rigid_chain/CMakeLists.txt +19 -0
  923. share/doc/dart/examples/rigid_chain/README.md +19 -0
  924. share/doc/dart/examples/rigid_chain/main.cpp +110 -0
  925. share/doc/dart/examples/rigid_cubes/CMakeLists.txt +19 -0
  926. share/doc/dart/examples/rigid_cubes/README.md +91 -0
  927. share/doc/dart/examples/rigid_cubes/main.cpp +201 -0
  928. share/doc/dart/examples/rigid_loop/CMakeLists.txt +19 -0
  929. share/doc/dart/examples/rigid_loop/README.md +34 -0
  930. share/doc/dart/examples/rigid_loop/main.cpp +127 -0
  931. share/doc/dart/examples/rigid_shapes/CMakeLists.txt +19 -0
  932. share/doc/dart/examples/rigid_shapes/README.md +19 -0
  933. share/doc/dart/examples/rigid_shapes/main.cpp +250 -0
  934. share/doc/dart/examples/simple_frames/CMakeLists.txt +19 -0
  935. share/doc/dart/examples/simple_frames/README.md +27 -0
  936. share/doc/dart/examples/simple_frames/main.cpp +124 -0
  937. share/doc/dart/examples/simulation_event_handler/CMakeLists.txt +19 -0
  938. share/doc/dart/examples/simulation_event_handler/README.md +189 -0
  939. share/doc/dart/examples/simulation_event_handler/SimulationEventHandler.cpp +572 -0
  940. share/doc/dart/examples/simulation_event_handler/SimulationEventHandler.hpp +211 -0
  941. share/doc/dart/examples/simulation_event_handler/main.cpp +277 -0
  942. share/doc/dart/examples/soft_bodies/CMakeLists.txt +19 -0
  943. share/doc/dart/examples/soft_bodies/README.md +20 -0
  944. share/doc/dart/examples/soft_bodies/main.cpp +219 -0
  945. share/doc/dart/examples/speed_test/CMakeLists.txt +19 -0
  946. share/doc/dart/examples/speed_test/README.md +20 -0
  947. share/doc/dart/examples/speed_test/main.cpp +250 -0
  948. share/doc/dart/examples/tinkertoy/CMakeLists.txt +19 -0
  949. share/doc/dart/examples/tinkertoy/README.md +20 -0
  950. share/doc/dart/examples/tinkertoy/TinkertoyWidget.cpp +208 -0
  951. share/doc/dart/examples/tinkertoy/TinkertoyWidget.hpp +70 -0
  952. share/doc/dart/examples/tinkertoy/TinkertoyWorldNode.cpp +35 -0
  953. share/doc/dart/examples/tinkertoy/TinkertoyWorldNode.hpp +470 -0
  954. share/doc/dart/examples/tinkertoy/main.cpp +186 -0
  955. share/doc/dart/examples/vehicle/CMakeLists.txt +19 -0
  956. share/doc/dart/examples/vehicle/README.md +22 -0
  957. share/doc/dart/examples/vehicle/main.cpp +195 -0
  958. share/doc/dart/examples/wam_ikfast/CMakeLists.txt +22 -0
  959. share/doc/dart/examples/wam_ikfast/Helpers.cpp +148 -0
  960. share/doc/dart/examples/wam_ikfast/Helpers.hpp +46 -0
  961. share/doc/dart/examples/wam_ikfast/InputHandler.cpp +110 -0
  962. share/doc/dart/examples/wam_ikfast/InputHandler.hpp +73 -0
  963. share/doc/dart/examples/wam_ikfast/README.md +20 -0
  964. share/doc/dart/examples/wam_ikfast/WamWorld.cpp +46 -0
  965. share/doc/dart/examples/wam_ikfast/WamWorld.hpp +53 -0
  966. share/doc/dart/examples/wam_ikfast/ikfast/CMakeLists.txt +11 -0
  967. share/doc/dart/examples/wam_ikfast/ikfast/ikfast71.Transform6D.4_6_9_10_11_12_f8.cpp +14930 -0
  968. share/doc/dart/examples/wam_ikfast/osgWamIkFast.cpp +96 -0
  969. share/doc/dart/tutorials/CMakeLists.txt +12 -0
  970. share/doc/dart/tutorials/README.md +45 -0
  971. share/doc/dart/tutorials/tutorial_biped/CMakeLists.txt +19 -0
  972. share/doc/dart/tutorials/tutorial_biped/README +18 -0
  973. share/doc/dart/tutorials/tutorial_biped/main.cpp +374 -0
  974. share/doc/dart/tutorials/tutorial_biped_finished/CMakeLists.txt +19 -0
  975. share/doc/dart/tutorials/tutorial_biped_finished/README +18 -0
  976. share/doc/dart/tutorials/tutorial_biped_finished/main.cpp +532 -0
  977. share/doc/dart/tutorials/tutorial_collisions/CMakeLists.txt +19 -0
  978. share/doc/dart/tutorials/tutorial_collisions/README +18 -0
  979. share/doc/dart/tutorials/tutorial_collisions/main.cpp +506 -0
  980. share/doc/dart/tutorials/tutorial_collisions_finished/CMakeLists.txt +19 -0
  981. share/doc/dart/tutorials/tutorial_collisions_finished/README +18 -0
  982. share/doc/dart/tutorials/tutorial_collisions_finished/main.cpp +679 -0
  983. share/doc/dart/tutorials/tutorial_dominoes/CMakeLists.txt +19 -0
  984. share/doc/dart/tutorials/tutorial_dominoes/README +18 -0
  985. share/doc/dart/tutorials/tutorial_dominoes/main.cpp +394 -0
  986. share/doc/dart/tutorials/tutorial_dominoes_finished/CMakeLists.txt +19 -0
  987. share/doc/dart/tutorials/tutorial_dominoes_finished/README +18 -0
  988. share/doc/dart/tutorials/tutorial_dominoes_finished/main.cpp +559 -0
  989. share/doc/dart/tutorials/tutorial_multi_pendulum/CMakeLists.txt +19 -0
  990. share/doc/dart/tutorials/tutorial_multi_pendulum/README +18 -0
  991. share/doc/dart/tutorials/tutorial_multi_pendulum/main.cpp +443 -0
  992. share/doc/dart/tutorials/tutorial_multi_pendulum_finished/CMakeLists.txt +19 -0
  993. share/doc/dart/tutorials/tutorial_multi_pendulum_finished/README +18 -0
  994. 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