ruby-bullet 0.1.0-x86-linux → 0.1.1-x86-linux

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.
Files changed (284) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +3 -0
  3. data/Rakefile +14 -2
  4. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionWorld.i +2 -2
  5. data/bindings/bullet/interface/bullet_wrap.cpp +17548 -6035
  6. data/bindings/bullet/interface/bullet_wrap.h +7 -7
  7. data/bindings/bullet/interface/bullet_wrap.o +0 -0
  8. data/lib/bullet.so +0 -0
  9. data/lib/ruby-bullet/version.rb +1 -1
  10. data/ruby-bullet.gemspec +0 -3
  11. metadata +169 -444
  12. data/deps/include/bullet/Bullet-C-Api.h +0 -176
  13. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.h +0 -1051
  14. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h +0 -82
  15. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h +0 -270
  16. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h +0 -80
  17. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDbvt.h +0 -1257
  18. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h +0 -146
  19. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDispatcher.h +0 -110
  20. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h +0 -151
  21. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h +0 -469
  22. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h +0 -40
  23. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.h +0 -579
  24. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h +0 -171
  25. data/deps/include/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.h +0 -51
  26. data/deps/include/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h +0 -36
  27. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h +0 -66
  28. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h +0 -66
  29. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.h +0 -44
  30. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionConfiguration.h +0 -48
  31. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h +0 -45
  32. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.h +0 -172
  33. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionObject.h +0 -524
  34. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.h +0 -509
  35. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h +0 -86
  36. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h +0 -95
  37. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h +0 -116
  38. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h +0 -109
  39. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h +0 -84
  40. data/deps/include/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h +0 -137
  41. data/deps/include/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h +0 -54
  42. data/deps/include/bullet/BulletCollision/CollisionDispatch/btGhostObject.h +0 -175
  43. data/deps/include/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h +0 -46
  44. data/deps/include/bullet/BulletCollision/CollisionDispatch/btManifoldResult.h +0 -128
  45. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.h +0 -81
  46. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h +0 -75
  47. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h +0 -66
  48. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h +0 -69
  49. data/deps/include/bullet/BulletCollision/CollisionDispatch/btUnionFind.h +0 -129
  50. data/deps/include/bullet/BulletCollision/CollisionShapes/btBox2dShape.h +0 -369
  51. data/deps/include/bullet/BulletCollision/CollisionShapes/btBoxShape.h +0 -312
  52. data/deps/include/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h +0 -139
  53. data/deps/include/bullet/BulletCollision/CollisionShapes/btCapsuleShape.h +0 -173
  54. data/deps/include/bullet/BulletCollision/CollisionShapes/btCollisionMargin.h +0 -27
  55. data/deps/include/bullet/BulletCollision/CollisionShapes/btCollisionShape.h +0 -150
  56. data/deps/include/bullet/BulletCollision/CollisionShapes/btCompoundShape.h +0 -212
  57. data/deps/include/bullet/BulletCollision/CollisionShapes/btConcaveShape.h +0 -60
  58. data/deps/include/bullet/BulletCollision/CollisionShapes/btConeShape.h +0 -103
  59. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvex2dShape.h +0 -80
  60. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexHullShape.h +0 -122
  61. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.h +0 -224
  62. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.h +0 -105
  63. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.h +0 -62
  64. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexShape.h +0 -84
  65. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h +0 -75
  66. data/deps/include/bullet/BulletCollision/CollisionShapes/btCylinderShape.h +0 -200
  67. data/deps/include/bullet/BulletCollision/CollisionShapes/btEmptyShape.h +0 -70
  68. data/deps/include/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h +0 -161
  69. data/deps/include/bullet/BulletCollision/CollisionShapes/btMaterial.h +0 -35
  70. data/deps/include/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.h +0 -60
  71. data/deps/include/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.h +0 -99
  72. data/deps/include/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h +0 -120
  73. data/deps/include/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.h +0 -65
  74. data/deps/include/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h +0 -112
  75. data/deps/include/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h +0 -93
  76. data/deps/include/bullet/BulletCollision/CollisionShapes/btShapeHull.h +0 -59
  77. data/deps/include/bullet/BulletCollision/CollisionShapes/btSphereShape.h +0 -73
  78. data/deps/include/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.h +0 -103
  79. data/deps/include/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.h +0 -162
  80. data/deps/include/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.h +0 -74
  81. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.h +0 -69
  82. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleCallback.h +0 -42
  83. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h +0 -133
  84. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h +0 -84
  85. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleInfoMap.h +0 -241
  86. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleMesh.h +0 -69
  87. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.h +0 -89
  88. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleShape.h +0 -182
  89. data/deps/include/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.h +0 -87
  90. data/deps/include/bullet/BulletCollision/Gimpact/btBoxCollision.h +0 -647
  91. data/deps/include/bullet/BulletCollision/Gimpact/btClipPolygon.h +0 -182
  92. data/deps/include/bullet/BulletCollision/Gimpact/btContactProcessing.h +0 -145
  93. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactBvh.h +0 -396
  94. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h +0 -306
  95. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactMassUtil.h +0 -60
  96. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.h +0 -372
  97. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactShape.h +0 -1171
  98. data/deps/include/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.h +0 -163
  99. data/deps/include/bullet/BulletCollision/Gimpact/btGeometryOperations.h +0 -212
  100. data/deps/include/bullet/BulletCollision/Gimpact/btQuantization.h +0 -88
  101. data/deps/include/bullet/BulletCollision/Gimpact/btTriangleShapeEx.h +0 -180
  102. data/deps/include/bullet/BulletCollision/Gimpact/gim_array.h +0 -326
  103. data/deps/include/bullet/BulletCollision/Gimpact/gim_basic_geometry_operations.h +0 -543
  104. data/deps/include/bullet/BulletCollision/Gimpact/gim_bitset.h +0 -123
  105. data/deps/include/bullet/BulletCollision/Gimpact/gim_box_collision.h +0 -590
  106. data/deps/include/bullet/BulletCollision/Gimpact/gim_box_set.h +0 -674
  107. data/deps/include/bullet/BulletCollision/Gimpact/gim_clip_polygon.h +0 -210
  108. data/deps/include/bullet/BulletCollision/Gimpact/gim_contact.h +0 -164
  109. data/deps/include/bullet/BulletCollision/Gimpact/gim_geom_types.h +0 -97
  110. data/deps/include/bullet/BulletCollision/Gimpact/gim_geometry.h +0 -42
  111. data/deps/include/bullet/BulletCollision/Gimpact/gim_hash_table.h +0 -902
  112. data/deps/include/bullet/BulletCollision/Gimpact/gim_linear_math.h +0 -1573
  113. data/deps/include/bullet/BulletCollision/Gimpact/gim_math.h +0 -157
  114. data/deps/include/bullet/BulletCollision/Gimpact/gim_memory.h +0 -190
  115. data/deps/include/bullet/BulletCollision/Gimpact/gim_radixsort.h +0 -406
  116. data/deps/include/bullet/BulletCollision/Gimpact/gim_tri_collision.h +0 -379
  117. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h +0 -59
  118. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.h +0 -73
  119. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h +0 -42
  120. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h +0 -91
  121. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h +0 -50
  122. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h +0 -75
  123. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h +0 -43
  124. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h +0 -103
  125. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h +0 -158
  126. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h +0 -40
  127. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h +0 -228
  128. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btPointCollector.h +0 -64
  129. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h +0 -46
  130. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h +0 -72
  131. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h +0 -63
  132. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h +0 -50
  133. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h +0 -179
  134. data/deps/include/bullet/BulletCollision/btBulletCollisionCommon.h +0 -69
  135. data/deps/include/bullet/BulletDynamics/Character/btCharacterControllerInterface.h +0 -46
  136. data/deps/include/bullet/BulletDynamics/Character/btKinematicCharacterController.h +0 -163
  137. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h +0 -346
  138. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btConstraintSolver.h +0 -52
  139. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.h +0 -71
  140. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btContactSolverInfo.h +0 -87
  141. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h +0 -614
  142. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h +0 -99
  143. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.h +0 -58
  144. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.h +0 -381
  145. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btJacobianEntry.h +0 -156
  146. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h +0 -161
  147. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h +0 -130
  148. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.h +0 -333
  149. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h +0 -107
  150. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSolverBody.h +0 -191
  151. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSolverConstraint.h +0 -98
  152. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.h +0 -452
  153. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.h +0 -62
  154. data/deps/include/bullet/BulletDynamics/Dynamics/btActionInterface.h +0 -46
  155. data/deps/include/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h +0 -203
  156. data/deps/include/bullet/BulletDynamics/Dynamics/btDynamicsWorld.h +0 -151
  157. data/deps/include/bullet/BulletDynamics/Dynamics/btRigidBody.h +0 -691
  158. data/deps/include/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h +0 -89
  159. data/deps/include/bullet/BulletDynamics/Vehicle/btRaycastVehicle.h +0 -236
  160. data/deps/include/bullet/BulletDynamics/Vehicle/btVehicleRaycaster.h +0 -35
  161. data/deps/include/bullet/BulletDynamics/Vehicle/btWheelInfo.h +0 -119
  162. data/deps/include/bullet/BulletDynamics/btBulletDynamicsCommon.h +0 -48
  163. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverBuffer_DX11.h +0 -323
  164. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverLinkData_DX11.h +0 -103
  165. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverLinkData_DX11SIMDAware.h +0 -173
  166. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverTriangleData_DX11.h +0 -96
  167. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverVertexBuffer_DX11.h +0 -107
  168. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverVertexData_DX11.h +0 -63
  169. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11.h +0 -691
  170. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11SIMDAware.h +0 -81
  171. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverBuffer_OpenCL.h +0 -209
  172. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverLinkData_OpenCL.h +0 -99
  173. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverLinkData_OpenCLSIMDAware.h +0 -169
  174. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverOutputCLtoGL.h +0 -62
  175. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverTriangleData_OpenCL.h +0 -84
  176. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverVertexBuffer_OpenGL.h +0 -166
  177. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverVertexData_OpenCL.h +0 -52
  178. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCL.h +0 -527
  179. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCLSIMDAware.h +0 -81
  180. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/Shared/btSoftBodySolverData.h +0 -748
  181. data/deps/include/bullet/BulletMultiThreaded/HeapManager.h +0 -117
  182. data/deps/include/bullet/BulletMultiThreaded/PlatformDefinitions.h +0 -99
  183. data/deps/include/bullet/BulletMultiThreaded/PosixThreadSupport.h +0 -142
  184. data/deps/include/bullet/BulletMultiThreaded/PpuAddressSpace.h +0 -37
  185. data/deps/include/bullet/BulletMultiThreaded/SequentialThreadSupport.h +0 -96
  186. data/deps/include/bullet/BulletMultiThreaded/SpuCollisionObjectWrapper.h +0 -40
  187. data/deps/include/bullet/BulletMultiThreaded/SpuCollisionTaskProcess.h +0 -163
  188. data/deps/include/bullet/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h +0 -120
  189. data/deps/include/bullet/BulletMultiThreaded/SpuDoubleBuffer.h +0 -126
  190. data/deps/include/bullet/BulletMultiThreaded/SpuFakeDma.h +0 -135
  191. data/deps/include/bullet/BulletMultiThreaded/SpuGatheringCollisionDispatcher.h +0 -72
  192. data/deps/include/bullet/BulletMultiThreaded/SpuLibspe2Support.h +0 -180
  193. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h +0 -167
  194. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h +0 -128
  195. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h +0 -106
  196. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h +0 -51
  197. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h +0 -140
  198. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h +0 -19
  199. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h +0 -48
  200. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h +0 -70
  201. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h +0 -65
  202. data/deps/include/bullet/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h +0 -54
  203. data/deps/include/bullet/BulletMultiThreaded/SpuSampleTaskProcess.h +0 -153
  204. data/deps/include/bullet/BulletMultiThreaded/SpuSync.h +0 -149
  205. data/deps/include/bullet/BulletMultiThreaded/TrbDynBody.h +0 -79
  206. data/deps/include/bullet/BulletMultiThreaded/TrbStateVec.h +0 -339
  207. data/deps/include/bullet/BulletMultiThreaded/Win32ThreadSupport.h +0 -138
  208. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphase.h +0 -138
  209. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedCode.h +0 -430
  210. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedDefs.h +0 -61
  211. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedTypes.h +0 -67
  212. data/deps/include/bullet/BulletMultiThreaded/btGpuDefines.h +0 -211
  213. data/deps/include/bullet/BulletMultiThreaded/btGpuUtilsSharedCode.h +0 -55
  214. data/deps/include/bullet/BulletMultiThreaded/btGpuUtilsSharedDefs.h +0 -52
  215. data/deps/include/bullet/BulletMultiThreaded/btParallelConstraintSolver.h +0 -285
  216. data/deps/include/bullet/BulletMultiThreaded/btThreadSupportInterface.h +0 -85
  217. data/deps/include/bullet/BulletMultiThreaded/vectormath2bullet.h +0 -73
  218. data/deps/include/bullet/BulletSoftBody/btDefaultSoftBodySolver.h +0 -63
  219. data/deps/include/bullet/BulletSoftBody/btSoftBody.h +0 -987
  220. data/deps/include/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h +0 -153
  221. data/deps/include/bullet/BulletSoftBody/btSoftBodyData.h +0 -217
  222. data/deps/include/bullet/BulletSoftBody/btSoftBodyHelpers.h +0 -143
  223. data/deps/include/bullet/BulletSoftBody/btSoftBodyInternals.h +0 -930
  224. data/deps/include/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h +0 -48
  225. data/deps/include/bullet/BulletSoftBody/btSoftBodySolverVertexBuffer.h +0 -165
  226. data/deps/include/bullet/BulletSoftBody/btSoftBodySolvers.h +0 -154
  227. data/deps/include/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.h +0 -75
  228. data/deps/include/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.h +0 -107
  229. data/deps/include/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.h +0 -69
  230. data/deps/include/bullet/BulletSoftBody/btSparseSDF.h +0 -306
  231. data/deps/include/bullet/LinearMath/btAabbUtil2.h +0 -236
  232. data/deps/include/bullet/LinearMath/btAlignedAllocator.h +0 -107
  233. data/deps/include/bullet/LinearMath/btAlignedObjectArray.h +0 -494
  234. data/deps/include/bullet/LinearMath/btConvexHull.h +0 -241
  235. data/deps/include/bullet/LinearMath/btConvexHullComputer.h +0 -103
  236. data/deps/include/bullet/LinearMath/btDefaultMotionState.h +0 -40
  237. data/deps/include/bullet/LinearMath/btGeometryUtil.h +0 -42
  238. data/deps/include/bullet/LinearMath/btGrahamScan2dConvexHull.h +0 -110
  239. data/deps/include/bullet/LinearMath/btHashMap.h +0 -450
  240. data/deps/include/bullet/LinearMath/btIDebugDraw.h +0 -418
  241. data/deps/include/bullet/LinearMath/btList.h +0 -73
  242. data/deps/include/bullet/LinearMath/btMatrix3x3.h +0 -771
  243. data/deps/include/bullet/LinearMath/btMinMax.h +0 -71
  244. data/deps/include/bullet/LinearMath/btMotionState.h +0 -40
  245. data/deps/include/bullet/LinearMath/btPoolAllocator.h +0 -121
  246. data/deps/include/bullet/LinearMath/btQuadWord.h +0 -180
  247. data/deps/include/bullet/LinearMath/btQuaternion.h +0 -430
  248. data/deps/include/bullet/LinearMath/btQuickprof.h +0 -203
  249. data/deps/include/bullet/LinearMath/btRandom.h +0 -42
  250. data/deps/include/bullet/LinearMath/btScalar.h +0 -539
  251. data/deps/include/bullet/LinearMath/btSerializer.h +0 -639
  252. data/deps/include/bullet/LinearMath/btStackAlloc.h +0 -116
  253. data/deps/include/bullet/LinearMath/btTransform.h +0 -307
  254. data/deps/include/bullet/LinearMath/btTransformUtil.h +0 -228
  255. data/deps/include/bullet/LinearMath/btVector3.h +0 -766
  256. data/deps/include/bullet/MiniCL/MiniCLTask/MiniCLTask.h +0 -62
  257. data/deps/include/bullet/MiniCL/MiniCLTaskScheduler.h +0 -194
  258. data/deps/include/bullet/MiniCL/cl.h +0 -867
  259. data/deps/include/bullet/MiniCL/cl_MiniCL_Defs.h +0 -439
  260. data/deps/include/bullet/MiniCL/cl_gl.h +0 -113
  261. data/deps/include/bullet/MiniCL/cl_platform.h +0 -254
  262. data/deps/include/bullet/btBulletCollisionCommon.h +0 -69
  263. data/deps/include/bullet/btBulletDynamicsCommon.h +0 -48
  264. data/deps/include/bullet/vectormath/scalar/boolInVec.h +0 -225
  265. data/deps/include/bullet/vectormath/scalar/floatInVec.h +0 -343
  266. data/deps/include/bullet/vectormath/scalar/mat_aos.h +0 -1630
  267. data/deps/include/bullet/vectormath/scalar/quat_aos.h +0 -433
  268. data/deps/include/bullet/vectormath/scalar/vec_aos.h +0 -1426
  269. data/deps/include/bullet/vectormath/scalar/vectormath_aos.h +0 -1872
  270. data/deps/include/bullet/vectormath/sse/boolInVec.h +0 -247
  271. data/deps/include/bullet/vectormath/sse/floatInVec.h +0 -340
  272. data/deps/include/bullet/vectormath/sse/mat_aos.h +0 -2190
  273. data/deps/include/bullet/vectormath/sse/quat_aos.h +0 -579
  274. data/deps/include/bullet/vectormath/sse/vec_aos.h +0 -1455
  275. data/deps/include/bullet/vectormath/sse/vecidx_aos.h +0 -80
  276. data/deps/include/bullet/vectormath/sse/vectormath_aos.h +0 -2547
  277. data/deps/include/bullet/vectormath/vmInclude.h +0 -27
  278. data/deps/lib/libBulletCollision.a +0 -0
  279. data/deps/lib/libBulletDynamics.a +0 -0
  280. data/deps/lib/libBulletMultiThreaded.a +0 -0
  281. data/deps/lib/libBulletSoftBody.a +0 -0
  282. data/deps/lib/libBulletSoftBodySolvers_OpenCL_Mini.a +0 -0
  283. data/deps/lib/libLinearMath.a +0 -0
  284. data/deps/lib/libMiniCL.a +0 -0
@@ -1,1573 +0,0 @@
1
- #ifndef GIM_LINEAR_H_INCLUDED
2
- #define GIM_LINEAR_H_INCLUDED
3
-
4
- /*! \file gim_linear_math.h
5
- *\author Francisco Leon Najera
6
- Type Independant Vector and matrix operations.
7
- */
8
- /*
9
- -----------------------------------------------------------------------------
10
- This source file is part of GIMPACT Library.
11
-
12
- For the latest info, see http://gimpact.sourceforge.net/
13
-
14
- Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.
15
- email: projectileman@yahoo.com
16
-
17
- This library is free software; you can redistribute it and/or
18
- modify it under the terms of EITHER:
19
- (1) The GNU Lesser General Public License as published by the Free
20
- Software Foundation; either version 2.1 of the License, or (at
21
- your option) any later version. The text of the GNU Lesser
22
- General Public License is included with this library in the
23
- file GIMPACT-LICENSE-LGPL.TXT.
24
- (2) The BSD-style license that is included with this library in
25
- the file GIMPACT-LICENSE-BSD.TXT.
26
- (3) The zlib/libpng license that is included with this library in
27
- the file GIMPACT-LICENSE-ZLIB.TXT.
28
-
29
- This library is distributed in the hope that it will be useful,
30
- but WITHOUT ANY WARRANTY; without even the implied warranty of
31
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files
32
- GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.
33
-
34
- -----------------------------------------------------------------------------
35
- */
36
-
37
-
38
- #include "gim_math.h"
39
- #include "gim_geom_types.h"
40
-
41
-
42
-
43
-
44
- //! Zero out a 2D vector
45
- #define VEC_ZERO_2(a) \
46
- { \
47
- (a)[0] = (a)[1] = 0.0f; \
48
- }\
49
-
50
-
51
- //! Zero out a 3D vector
52
- #define VEC_ZERO(a) \
53
- { \
54
- (a)[0] = (a)[1] = (a)[2] = 0.0f; \
55
- }\
56
-
57
-
58
- /// Zero out a 4D vector
59
- #define VEC_ZERO_4(a) \
60
- { \
61
- (a)[0] = (a)[1] = (a)[2] = (a)[3] = 0.0f; \
62
- }\
63
-
64
-
65
- /// Vector copy
66
- #define VEC_COPY_2(b,a) \
67
- { \
68
- (b)[0] = (a)[0]; \
69
- (b)[1] = (a)[1]; \
70
- }\
71
-
72
-
73
- /// Copy 3D vector
74
- #define VEC_COPY(b,a) \
75
- { \
76
- (b)[0] = (a)[0]; \
77
- (b)[1] = (a)[1]; \
78
- (b)[2] = (a)[2]; \
79
- }\
80
-
81
-
82
- /// Copy 4D vector
83
- #define VEC_COPY_4(b,a) \
84
- { \
85
- (b)[0] = (a)[0]; \
86
- (b)[1] = (a)[1]; \
87
- (b)[2] = (a)[2]; \
88
- (b)[3] = (a)[3]; \
89
- }\
90
-
91
- /// VECTOR SWAP
92
- #define VEC_SWAP(b,a) \
93
- { \
94
- GIM_SWAP_NUMBERS((b)[0],(a)[0]);\
95
- GIM_SWAP_NUMBERS((b)[1],(a)[1]);\
96
- GIM_SWAP_NUMBERS((b)[2],(a)[2]);\
97
- }\
98
-
99
- /// Vector difference
100
- #define VEC_DIFF_2(v21,v2,v1) \
101
- { \
102
- (v21)[0] = (v2)[0] - (v1)[0]; \
103
- (v21)[1] = (v2)[1] - (v1)[1]; \
104
- }\
105
-
106
-
107
- /// Vector difference
108
- #define VEC_DIFF(v21,v2,v1) \
109
- { \
110
- (v21)[0] = (v2)[0] - (v1)[0]; \
111
- (v21)[1] = (v2)[1] - (v1)[1]; \
112
- (v21)[2] = (v2)[2] - (v1)[2]; \
113
- }\
114
-
115
-
116
- /// Vector difference
117
- #define VEC_DIFF_4(v21,v2,v1) \
118
- { \
119
- (v21)[0] = (v2)[0] - (v1)[0]; \
120
- (v21)[1] = (v2)[1] - (v1)[1]; \
121
- (v21)[2] = (v2)[2] - (v1)[2]; \
122
- (v21)[3] = (v2)[3] - (v1)[3]; \
123
- }\
124
-
125
-
126
- /// Vector sum
127
- #define VEC_SUM_2(v21,v2,v1) \
128
- { \
129
- (v21)[0] = (v2)[0] + (v1)[0]; \
130
- (v21)[1] = (v2)[1] + (v1)[1]; \
131
- }\
132
-
133
-
134
- /// Vector sum
135
- #define VEC_SUM(v21,v2,v1) \
136
- { \
137
- (v21)[0] = (v2)[0] + (v1)[0]; \
138
- (v21)[1] = (v2)[1] + (v1)[1]; \
139
- (v21)[2] = (v2)[2] + (v1)[2]; \
140
- }\
141
-
142
-
143
- /// Vector sum
144
- #define VEC_SUM_4(v21,v2,v1) \
145
- { \
146
- (v21)[0] = (v2)[0] + (v1)[0]; \
147
- (v21)[1] = (v2)[1] + (v1)[1]; \
148
- (v21)[2] = (v2)[2] + (v1)[2]; \
149
- (v21)[3] = (v2)[3] + (v1)[3]; \
150
- }\
151
-
152
-
153
- /// scalar times vector
154
- #define VEC_SCALE_2(c,a,b) \
155
- { \
156
- (c)[0] = (a)*(b)[0]; \
157
- (c)[1] = (a)*(b)[1]; \
158
- }\
159
-
160
-
161
- /// scalar times vector
162
- #define VEC_SCALE(c,a,b) \
163
- { \
164
- (c)[0] = (a)*(b)[0]; \
165
- (c)[1] = (a)*(b)[1]; \
166
- (c)[2] = (a)*(b)[2]; \
167
- }\
168
-
169
-
170
- /// scalar times vector
171
- #define VEC_SCALE_4(c,a,b) \
172
- { \
173
- (c)[0] = (a)*(b)[0]; \
174
- (c)[1] = (a)*(b)[1]; \
175
- (c)[2] = (a)*(b)[2]; \
176
- (c)[3] = (a)*(b)[3]; \
177
- }\
178
-
179
-
180
- /// accumulate scaled vector
181
- #define VEC_ACCUM_2(c,a,b) \
182
- { \
183
- (c)[0] += (a)*(b)[0]; \
184
- (c)[1] += (a)*(b)[1]; \
185
- }\
186
-
187
-
188
- /// accumulate scaled vector
189
- #define VEC_ACCUM(c,a,b) \
190
- { \
191
- (c)[0] += (a)*(b)[0]; \
192
- (c)[1] += (a)*(b)[1]; \
193
- (c)[2] += (a)*(b)[2]; \
194
- }\
195
-
196
-
197
- /// accumulate scaled vector
198
- #define VEC_ACCUM_4(c,a,b) \
199
- { \
200
- (c)[0] += (a)*(b)[0]; \
201
- (c)[1] += (a)*(b)[1]; \
202
- (c)[2] += (a)*(b)[2]; \
203
- (c)[3] += (a)*(b)[3]; \
204
- }\
205
-
206
-
207
- /// Vector dot product
208
- #define VEC_DOT_2(a,b) ((a)[0]*(b)[0] + (a)[1]*(b)[1])
209
-
210
-
211
- /// Vector dot product
212
- #define VEC_DOT(a,b) ((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2])
213
-
214
- /// Vector dot product
215
- #define VEC_DOT_4(a,b) ((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2] + (a)[3]*(b)[3])
216
-
217
- /// vector impact parameter (squared)
218
- #define VEC_IMPACT_SQ(bsq,direction,position) {\
219
- GREAL _llel_ = VEC_DOT(direction, position);\
220
- bsq = VEC_DOT(position, position) - _llel_*_llel_;\
221
- }\
222
-
223
-
224
- /// vector impact parameter
225
- #define VEC_IMPACT(bsq,direction,position) {\
226
- VEC_IMPACT_SQ(bsq,direction,position); \
227
- GIM_SQRT(bsq,bsq); \
228
- }\
229
-
230
- /// Vector length
231
- #define VEC_LENGTH_2(a,l)\
232
- {\
233
- GREAL _pp = VEC_DOT_2(a,a);\
234
- GIM_SQRT(_pp,l);\
235
- }\
236
-
237
-
238
- /// Vector length
239
- #define VEC_LENGTH(a,l)\
240
- {\
241
- GREAL _pp = VEC_DOT(a,a);\
242
- GIM_SQRT(_pp,l);\
243
- }\
244
-
245
-
246
- /// Vector length
247
- #define VEC_LENGTH_4(a,l)\
248
- {\
249
- GREAL _pp = VEC_DOT_4(a,a);\
250
- GIM_SQRT(_pp,l);\
251
- }\
252
-
253
- /// Vector inv length
254
- #define VEC_INV_LENGTH_2(a,l)\
255
- {\
256
- GREAL _pp = VEC_DOT_2(a,a);\
257
- GIM_INV_SQRT(_pp,l);\
258
- }\
259
-
260
-
261
- /// Vector inv length
262
- #define VEC_INV_LENGTH(a,l)\
263
- {\
264
- GREAL _pp = VEC_DOT(a,a);\
265
- GIM_INV_SQRT(_pp,l);\
266
- }\
267
-
268
-
269
- /// Vector inv length
270
- #define VEC_INV_LENGTH_4(a,l)\
271
- {\
272
- GREAL _pp = VEC_DOT_4(a,a);\
273
- GIM_INV_SQRT(_pp,l);\
274
- }\
275
-
276
-
277
-
278
- /// distance between two points
279
- #define VEC_DISTANCE(_len,_va,_vb) {\
280
- vec3f _tmp_; \
281
- VEC_DIFF(_tmp_, _vb, _va); \
282
- VEC_LENGTH(_tmp_,_len); \
283
- }\
284
-
285
-
286
- /// Vector length
287
- #define VEC_CONJUGATE_LENGTH(a,l)\
288
- {\
289
- GREAL _pp = 1.0 - a[0]*a[0] - a[1]*a[1] - a[2]*a[2];\
290
- GIM_SQRT(_pp,l);\
291
- }\
292
-
293
-
294
- /// Vector length
295
- #define VEC_NORMALIZE(a) { \
296
- GREAL len;\
297
- VEC_INV_LENGTH(a,len); \
298
- if(len<G_REAL_INFINITY)\
299
- {\
300
- a[0] *= len; \
301
- a[1] *= len; \
302
- a[2] *= len; \
303
- } \
304
- }\
305
-
306
- /// Set Vector size
307
- #define VEC_RENORMALIZE(a,newlen) { \
308
- GREAL len;\
309
- VEC_INV_LENGTH(a,len); \
310
- if(len<G_REAL_INFINITY)\
311
- {\
312
- len *= newlen;\
313
- a[0] *= len; \
314
- a[1] *= len; \
315
- a[2] *= len; \
316
- } \
317
- }\
318
-
319
- /// Vector cross
320
- #define VEC_CROSS(c,a,b) \
321
- { \
322
- c[0] = (a)[1] * (b)[2] - (a)[2] * (b)[1]; \
323
- c[1] = (a)[2] * (b)[0] - (a)[0] * (b)[2]; \
324
- c[2] = (a)[0] * (b)[1] - (a)[1] * (b)[0]; \
325
- }\
326
-
327
-
328
- /*! Vector perp -- assumes that n is of unit length
329
- * accepts vector v, subtracts out any component parallel to n */
330
- #define VEC_PERPENDICULAR(vp,v,n) \
331
- { \
332
- GREAL dot = VEC_DOT(v, n); \
333
- vp[0] = (v)[0] - dot*(n)[0]; \
334
- vp[1] = (v)[1] - dot*(n)[1]; \
335
- vp[2] = (v)[2] - dot*(n)[2]; \
336
- }\
337
-
338
-
339
- /*! Vector parallel -- assumes that n is of unit length */
340
- #define VEC_PARALLEL(vp,v,n) \
341
- { \
342
- GREAL dot = VEC_DOT(v, n); \
343
- vp[0] = (dot) * (n)[0]; \
344
- vp[1] = (dot) * (n)[1]; \
345
- vp[2] = (dot) * (n)[2]; \
346
- }\
347
-
348
- /*! Same as Vector parallel -- n can have any length
349
- * accepts vector v, subtracts out any component perpendicular to n */
350
- #define VEC_PROJECT(vp,v,n) \
351
- { \
352
- GREAL scalar = VEC_DOT(v, n); \
353
- scalar/= VEC_DOT(n, n); \
354
- vp[0] = (scalar) * (n)[0]; \
355
- vp[1] = (scalar) * (n)[1]; \
356
- vp[2] = (scalar) * (n)[2]; \
357
- }\
358
-
359
-
360
- /*! accepts vector v*/
361
- #define VEC_UNPROJECT(vp,v,n) \
362
- { \
363
- GREAL scalar = VEC_DOT(v, n); \
364
- scalar = VEC_DOT(n, n)/scalar; \
365
- vp[0] = (scalar) * (n)[0]; \
366
- vp[1] = (scalar) * (n)[1]; \
367
- vp[2] = (scalar) * (n)[2]; \
368
- }\
369
-
370
-
371
- /*! Vector reflection -- assumes n is of unit length
372
- Takes vector v, reflects it against reflector n, and returns vr */
373
- #define VEC_REFLECT(vr,v,n) \
374
- { \
375
- GREAL dot = VEC_DOT(v, n); \
376
- vr[0] = (v)[0] - 2.0 * (dot) * (n)[0]; \
377
- vr[1] = (v)[1] - 2.0 * (dot) * (n)[1]; \
378
- vr[2] = (v)[2] - 2.0 * (dot) * (n)[2]; \
379
- }\
380
-
381
-
382
- /*! Vector blending
383
- Takes two vectors a, b, blends them together with two scalars */
384
- #define VEC_BLEND_AB(vr,sa,a,sb,b) \
385
- { \
386
- vr[0] = (sa) * (a)[0] + (sb) * (b)[0]; \
387
- vr[1] = (sa) * (a)[1] + (sb) * (b)[1]; \
388
- vr[2] = (sa) * (a)[2] + (sb) * (b)[2]; \
389
- }\
390
-
391
- /*! Vector blending
392
- Takes two vectors a, b, blends them together with s <=1 */
393
- #define VEC_BLEND(vr,a,b,s) VEC_BLEND_AB(vr,(1-s),a,s,b)
394
-
395
- #define VEC_SET3(a,b,op,c) a[0]=b[0] op c[0]; a[1]=b[1] op c[1]; a[2]=b[2] op c[2];
396
-
397
- //! Finds the bigger cartesian coordinate from a vector
398
- #define VEC_MAYOR_COORD(vec, maxc)\
399
- {\
400
- GREAL A[] = {fabs(vec[0]),fabs(vec[1]),fabs(vec[2])};\
401
- maxc = A[0]>A[1]?(A[0]>A[2]?0:2):(A[1]>A[2]?1:2);\
402
- }\
403
-
404
- //! Finds the 2 smallest cartesian coordinates from a vector
405
- #define VEC_MINOR_AXES(vec, i0, i1)\
406
- {\
407
- VEC_MAYOR_COORD(vec,i0);\
408
- i0 = (i0+1)%3;\
409
- i1 = (i0+1)%3;\
410
- }\
411
-
412
-
413
-
414
-
415
- #define VEC_EQUAL(v1,v2) (v1[0]==v2[0]&&v1[1]==v2[1]&&v1[2]==v2[2])
416
-
417
- #define VEC_NEAR_EQUAL(v1,v2) (GIM_NEAR_EQUAL(v1[0],v2[0])&&GIM_NEAR_EQUAL(v1[1],v2[1])&&GIM_NEAR_EQUAL(v1[2],v2[2]))
418
-
419
-
420
- /// Vector cross
421
- #define X_AXIS_CROSS_VEC(dst,src)\
422
- { \
423
- dst[0] = 0.0f; \
424
- dst[1] = -src[2]; \
425
- dst[2] = src[1]; \
426
- }\
427
-
428
- #define Y_AXIS_CROSS_VEC(dst,src)\
429
- { \
430
- dst[0] = src[2]; \
431
- dst[1] = 0.0f; \
432
- dst[2] = -src[0]; \
433
- }\
434
-
435
- #define Z_AXIS_CROSS_VEC(dst,src)\
436
- { \
437
- dst[0] = -src[1]; \
438
- dst[1] = src[0]; \
439
- dst[2] = 0.0f; \
440
- }\
441
-
442
-
443
-
444
-
445
-
446
-
447
- /// initialize matrix
448
- #define IDENTIFY_MATRIX_3X3(m) \
449
- { \
450
- m[0][0] = 1.0; \
451
- m[0][1] = 0.0; \
452
- m[0][2] = 0.0; \
453
- \
454
- m[1][0] = 0.0; \
455
- m[1][1] = 1.0; \
456
- m[1][2] = 0.0; \
457
- \
458
- m[2][0] = 0.0; \
459
- m[2][1] = 0.0; \
460
- m[2][2] = 1.0; \
461
- }\
462
-
463
- /*! initialize matrix */
464
- #define IDENTIFY_MATRIX_4X4(m) \
465
- { \
466
- m[0][0] = 1.0; \
467
- m[0][1] = 0.0; \
468
- m[0][2] = 0.0; \
469
- m[0][3] = 0.0; \
470
- \
471
- m[1][0] = 0.0; \
472
- m[1][1] = 1.0; \
473
- m[1][2] = 0.0; \
474
- m[1][3] = 0.0; \
475
- \
476
- m[2][0] = 0.0; \
477
- m[2][1] = 0.0; \
478
- m[2][2] = 1.0; \
479
- m[2][3] = 0.0; \
480
- \
481
- m[3][0] = 0.0; \
482
- m[3][1] = 0.0; \
483
- m[3][2] = 0.0; \
484
- m[3][3] = 1.0; \
485
- }\
486
-
487
- /*! initialize matrix */
488
- #define ZERO_MATRIX_4X4(m) \
489
- { \
490
- m[0][0] = 0.0; \
491
- m[0][1] = 0.0; \
492
- m[0][2] = 0.0; \
493
- m[0][3] = 0.0; \
494
- \
495
- m[1][0] = 0.0; \
496
- m[1][1] = 0.0; \
497
- m[1][2] = 0.0; \
498
- m[1][3] = 0.0; \
499
- \
500
- m[2][0] = 0.0; \
501
- m[2][1] = 0.0; \
502
- m[2][2] = 0.0; \
503
- m[2][3] = 0.0; \
504
- \
505
- m[3][0] = 0.0; \
506
- m[3][1] = 0.0; \
507
- m[3][2] = 0.0; \
508
- m[3][3] = 0.0; \
509
- }\
510
-
511
- /*! matrix rotation X */
512
- #define ROTX_CS(m,cosine,sine) \
513
- { \
514
- /* rotation about the x-axis */ \
515
- \
516
- m[0][0] = 1.0; \
517
- m[0][1] = 0.0; \
518
- m[0][2] = 0.0; \
519
- m[0][3] = 0.0; \
520
- \
521
- m[1][0] = 0.0; \
522
- m[1][1] = (cosine); \
523
- m[1][2] = (sine); \
524
- m[1][3] = 0.0; \
525
- \
526
- m[2][0] = 0.0; \
527
- m[2][1] = -(sine); \
528
- m[2][2] = (cosine); \
529
- m[2][3] = 0.0; \
530
- \
531
- m[3][0] = 0.0; \
532
- m[3][1] = 0.0; \
533
- m[3][2] = 0.0; \
534
- m[3][3] = 1.0; \
535
- }\
536
-
537
- /*! matrix rotation Y */
538
- #define ROTY_CS(m,cosine,sine) \
539
- { \
540
- /* rotation about the y-axis */ \
541
- \
542
- m[0][0] = (cosine); \
543
- m[0][1] = 0.0; \
544
- m[0][2] = -(sine); \
545
- m[0][3] = 0.0; \
546
- \
547
- m[1][0] = 0.0; \
548
- m[1][1] = 1.0; \
549
- m[1][2] = 0.0; \
550
- m[1][3] = 0.0; \
551
- \
552
- m[2][0] = (sine); \
553
- m[2][1] = 0.0; \
554
- m[2][2] = (cosine); \
555
- m[2][3] = 0.0; \
556
- \
557
- m[3][0] = 0.0; \
558
- m[3][1] = 0.0; \
559
- m[3][2] = 0.0; \
560
- m[3][3] = 1.0; \
561
- }\
562
-
563
- /*! matrix rotation Z */
564
- #define ROTZ_CS(m,cosine,sine) \
565
- { \
566
- /* rotation about the z-axis */ \
567
- \
568
- m[0][0] = (cosine); \
569
- m[0][1] = (sine); \
570
- m[0][2] = 0.0; \
571
- m[0][3] = 0.0; \
572
- \
573
- m[1][0] = -(sine); \
574
- m[1][1] = (cosine); \
575
- m[1][2] = 0.0; \
576
- m[1][3] = 0.0; \
577
- \
578
- m[2][0] = 0.0; \
579
- m[2][1] = 0.0; \
580
- m[2][2] = 1.0; \
581
- m[2][3] = 0.0; \
582
- \
583
- m[3][0] = 0.0; \
584
- m[3][1] = 0.0; \
585
- m[3][2] = 0.0; \
586
- m[3][3] = 1.0; \
587
- }\
588
-
589
- /*! matrix copy */
590
- #define COPY_MATRIX_2X2(b,a) \
591
- { \
592
- b[0][0] = a[0][0]; \
593
- b[0][1] = a[0][1]; \
594
- \
595
- b[1][0] = a[1][0]; \
596
- b[1][1] = a[1][1]; \
597
- \
598
- }\
599
-
600
-
601
- /*! matrix copy */
602
- #define COPY_MATRIX_2X3(b,a) \
603
- { \
604
- b[0][0] = a[0][0]; \
605
- b[0][1] = a[0][1]; \
606
- b[0][2] = a[0][2]; \
607
- \
608
- b[1][0] = a[1][0]; \
609
- b[1][1] = a[1][1]; \
610
- b[1][2] = a[1][2]; \
611
- }\
612
-
613
-
614
- /*! matrix copy */
615
- #define COPY_MATRIX_3X3(b,a) \
616
- { \
617
- b[0][0] = a[0][0]; \
618
- b[0][1] = a[0][1]; \
619
- b[0][2] = a[0][2]; \
620
- \
621
- b[1][0] = a[1][0]; \
622
- b[1][1] = a[1][1]; \
623
- b[1][2] = a[1][2]; \
624
- \
625
- b[2][0] = a[2][0]; \
626
- b[2][1] = a[2][1]; \
627
- b[2][2] = a[2][2]; \
628
- }\
629
-
630
-
631
- /*! matrix copy */
632
- #define COPY_MATRIX_4X4(b,a) \
633
- { \
634
- b[0][0] = a[0][0]; \
635
- b[0][1] = a[0][1]; \
636
- b[0][2] = a[0][2]; \
637
- b[0][3] = a[0][3]; \
638
- \
639
- b[1][0] = a[1][0]; \
640
- b[1][1] = a[1][1]; \
641
- b[1][2] = a[1][2]; \
642
- b[1][3] = a[1][3]; \
643
- \
644
- b[2][0] = a[2][0]; \
645
- b[2][1] = a[2][1]; \
646
- b[2][2] = a[2][2]; \
647
- b[2][3] = a[2][3]; \
648
- \
649
- b[3][0] = a[3][0]; \
650
- b[3][1] = a[3][1]; \
651
- b[3][2] = a[3][2]; \
652
- b[3][3] = a[3][3]; \
653
- }\
654
-
655
-
656
- /*! matrix transpose */
657
- #define TRANSPOSE_MATRIX_2X2(b,a) \
658
- { \
659
- b[0][0] = a[0][0]; \
660
- b[0][1] = a[1][0]; \
661
- \
662
- b[1][0] = a[0][1]; \
663
- b[1][1] = a[1][1]; \
664
- }\
665
-
666
-
667
- /*! matrix transpose */
668
- #define TRANSPOSE_MATRIX_3X3(b,a) \
669
- { \
670
- b[0][0] = a[0][0]; \
671
- b[0][1] = a[1][0]; \
672
- b[0][2] = a[2][0]; \
673
- \
674
- b[1][0] = a[0][1]; \
675
- b[1][1] = a[1][1]; \
676
- b[1][2] = a[2][1]; \
677
- \
678
- b[2][0] = a[0][2]; \
679
- b[2][1] = a[1][2]; \
680
- b[2][2] = a[2][2]; \
681
- }\
682
-
683
-
684
- /*! matrix transpose */
685
- #define TRANSPOSE_MATRIX_4X4(b,a) \
686
- { \
687
- b[0][0] = a[0][0]; \
688
- b[0][1] = a[1][0]; \
689
- b[0][2] = a[2][0]; \
690
- b[0][3] = a[3][0]; \
691
- \
692
- b[1][0] = a[0][1]; \
693
- b[1][1] = a[1][1]; \
694
- b[1][2] = a[2][1]; \
695
- b[1][3] = a[3][1]; \
696
- \
697
- b[2][0] = a[0][2]; \
698
- b[2][1] = a[1][2]; \
699
- b[2][2] = a[2][2]; \
700
- b[2][3] = a[3][2]; \
701
- \
702
- b[3][0] = a[0][3]; \
703
- b[3][1] = a[1][3]; \
704
- b[3][2] = a[2][3]; \
705
- b[3][3] = a[3][3]; \
706
- }\
707
-
708
-
709
- /*! multiply matrix by scalar */
710
- #define SCALE_MATRIX_2X2(b,s,a) \
711
- { \
712
- b[0][0] = (s) * a[0][0]; \
713
- b[0][1] = (s) * a[0][1]; \
714
- \
715
- b[1][0] = (s) * a[1][0]; \
716
- b[1][1] = (s) * a[1][1]; \
717
- }\
718
-
719
-
720
- /*! multiply matrix by scalar */
721
- #define SCALE_MATRIX_3X3(b,s,a) \
722
- { \
723
- b[0][0] = (s) * a[0][0]; \
724
- b[0][1] = (s) * a[0][1]; \
725
- b[0][2] = (s) * a[0][2]; \
726
- \
727
- b[1][0] = (s) * a[1][0]; \
728
- b[1][1] = (s) * a[1][1]; \
729
- b[1][2] = (s) * a[1][2]; \
730
- \
731
- b[2][0] = (s) * a[2][0]; \
732
- b[2][1] = (s) * a[2][1]; \
733
- b[2][2] = (s) * a[2][2]; \
734
- }\
735
-
736
-
737
- /*! multiply matrix by scalar */
738
- #define SCALE_MATRIX_4X4(b,s,a) \
739
- { \
740
- b[0][0] = (s) * a[0][0]; \
741
- b[0][1] = (s) * a[0][1]; \
742
- b[0][2] = (s) * a[0][2]; \
743
- b[0][3] = (s) * a[0][3]; \
744
- \
745
- b[1][0] = (s) * a[1][0]; \
746
- b[1][1] = (s) * a[1][1]; \
747
- b[1][2] = (s) * a[1][2]; \
748
- b[1][3] = (s) * a[1][3]; \
749
- \
750
- b[2][0] = (s) * a[2][0]; \
751
- b[2][1] = (s) * a[2][1]; \
752
- b[2][2] = (s) * a[2][2]; \
753
- b[2][3] = (s) * a[2][3]; \
754
- \
755
- b[3][0] = s * a[3][0]; \
756
- b[3][1] = s * a[3][1]; \
757
- b[3][2] = s * a[3][2]; \
758
- b[3][3] = s * a[3][3]; \
759
- }\
760
-
761
-
762
- /*! multiply matrix by scalar */
763
- #define SCALE_VEC_MATRIX_2X2(b,svec,a) \
764
- { \
765
- b[0][0] = svec[0] * a[0][0]; \
766
- b[1][0] = svec[0] * a[1][0]; \
767
- \
768
- b[0][1] = svec[1] * a[0][1]; \
769
- b[1][1] = svec[1] * a[1][1]; \
770
- }\
771
-
772
-
773
- /*! multiply matrix by scalar. Each columns is scaled by each scalar vector component */
774
- #define SCALE_VEC_MATRIX_3X3(b,svec,a) \
775
- { \
776
- b[0][0] = svec[0] * a[0][0]; \
777
- b[1][0] = svec[0] * a[1][0]; \
778
- b[2][0] = svec[0] * a[2][0]; \
779
- \
780
- b[0][1] = svec[1] * a[0][1]; \
781
- b[1][1] = svec[1] * a[1][1]; \
782
- b[2][1] = svec[1] * a[2][1]; \
783
- \
784
- b[0][2] = svec[2] * a[0][2]; \
785
- b[1][2] = svec[2] * a[1][2]; \
786
- b[2][2] = svec[2] * a[2][2]; \
787
- }\
788
-
789
-
790
- /*! multiply matrix by scalar */
791
- #define SCALE_VEC_MATRIX_4X4(b,svec,a) \
792
- { \
793
- b[0][0] = svec[0] * a[0][0]; \
794
- b[1][0] = svec[0] * a[1][0]; \
795
- b[2][0] = svec[0] * a[2][0]; \
796
- b[3][0] = svec[0] * a[3][0]; \
797
- \
798
- b[0][1] = svec[1] * a[0][1]; \
799
- b[1][1] = svec[1] * a[1][1]; \
800
- b[2][1] = svec[1] * a[2][1]; \
801
- b[3][1] = svec[1] * a[3][1]; \
802
- \
803
- b[0][2] = svec[2] * a[0][2]; \
804
- b[1][2] = svec[2] * a[1][2]; \
805
- b[2][2] = svec[2] * a[2][2]; \
806
- b[3][2] = svec[2] * a[3][2]; \
807
- \
808
- b[0][3] = svec[3] * a[0][3]; \
809
- b[1][3] = svec[3] * a[1][3]; \
810
- b[2][3] = svec[3] * a[2][3]; \
811
- b[3][3] = svec[3] * a[3][3]; \
812
- }\
813
-
814
-
815
- /*! multiply matrix by scalar */
816
- #define ACCUM_SCALE_MATRIX_2X2(b,s,a) \
817
- { \
818
- b[0][0] += (s) * a[0][0]; \
819
- b[0][1] += (s) * a[0][1]; \
820
- \
821
- b[1][0] += (s) * a[1][0]; \
822
- b[1][1] += (s) * a[1][1]; \
823
- }\
824
-
825
-
826
- /*! multiply matrix by scalar */
827
- #define ACCUM_SCALE_MATRIX_3X3(b,s,a) \
828
- { \
829
- b[0][0] += (s) * a[0][0]; \
830
- b[0][1] += (s) * a[0][1]; \
831
- b[0][2] += (s) * a[0][2]; \
832
- \
833
- b[1][0] += (s) * a[1][0]; \
834
- b[1][1] += (s) * a[1][1]; \
835
- b[1][2] += (s) * a[1][2]; \
836
- \
837
- b[2][0] += (s) * a[2][0]; \
838
- b[2][1] += (s) * a[2][1]; \
839
- b[2][2] += (s) * a[2][2]; \
840
- }\
841
-
842
-
843
- /*! multiply matrix by scalar */
844
- #define ACCUM_SCALE_MATRIX_4X4(b,s,a) \
845
- { \
846
- b[0][0] += (s) * a[0][0]; \
847
- b[0][1] += (s) * a[0][1]; \
848
- b[0][2] += (s) * a[0][2]; \
849
- b[0][3] += (s) * a[0][3]; \
850
- \
851
- b[1][0] += (s) * a[1][0]; \
852
- b[1][1] += (s) * a[1][1]; \
853
- b[1][2] += (s) * a[1][2]; \
854
- b[1][3] += (s) * a[1][3]; \
855
- \
856
- b[2][0] += (s) * a[2][0]; \
857
- b[2][1] += (s) * a[2][1]; \
858
- b[2][2] += (s) * a[2][2]; \
859
- b[2][3] += (s) * a[2][3]; \
860
- \
861
- b[3][0] += (s) * a[3][0]; \
862
- b[3][1] += (s) * a[3][1]; \
863
- b[3][2] += (s) * a[3][2]; \
864
- b[3][3] += (s) * a[3][3]; \
865
- }\
866
-
867
- /*! matrix product */
868
- /*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/
869
- #define MATRIX_PRODUCT_2X2(c,a,b) \
870
- { \
871
- c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]; \
872
- c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]; \
873
- \
874
- c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]; \
875
- c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]; \
876
- \
877
- }\
878
-
879
- /*! matrix product */
880
- /*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/
881
- #define MATRIX_PRODUCT_3X3(c,a,b) \
882
- { \
883
- c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]; \
884
- c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]; \
885
- c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]; \
886
- \
887
- c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0]; \
888
- c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1]; \
889
- c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2]; \
890
- \
891
- c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0]; \
892
- c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1]; \
893
- c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2]; \
894
- }\
895
-
896
-
897
- /*! matrix product */
898
- /*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/
899
- #define MATRIX_PRODUCT_4X4(c,a,b) \
900
- { \
901
- c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]+a[0][3]*b[3][0];\
902
- c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]+a[0][3]*b[3][1];\
903
- c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]+a[0][3]*b[3][2];\
904
- c[0][3] = a[0][0]*b[0][3]+a[0][1]*b[1][3]+a[0][2]*b[2][3]+a[0][3]*b[3][3];\
905
- \
906
- c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0]+a[1][3]*b[3][0];\
907
- c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1]+a[1][3]*b[3][1];\
908
- c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2]+a[1][3]*b[3][2];\
909
- c[1][3] = a[1][0]*b[0][3]+a[1][1]*b[1][3]+a[1][2]*b[2][3]+a[1][3]*b[3][3];\
910
- \
911
- c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0]+a[2][3]*b[3][0];\
912
- c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1]+a[2][3]*b[3][1];\
913
- c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2]+a[2][3]*b[3][2];\
914
- c[2][3] = a[2][0]*b[0][3]+a[2][1]*b[1][3]+a[2][2]*b[2][3]+a[2][3]*b[3][3];\
915
- \
916
- c[3][0] = a[3][0]*b[0][0]+a[3][1]*b[1][0]+a[3][2]*b[2][0]+a[3][3]*b[3][0];\
917
- c[3][1] = a[3][0]*b[0][1]+a[3][1]*b[1][1]+a[3][2]*b[2][1]+a[3][3]*b[3][1];\
918
- c[3][2] = a[3][0]*b[0][2]+a[3][1]*b[1][2]+a[3][2]*b[2][2]+a[3][3]*b[3][2];\
919
- c[3][3] = a[3][0]*b[0][3]+a[3][1]*b[1][3]+a[3][2]*b[2][3]+a[3][3]*b[3][3];\
920
- }\
921
-
922
-
923
- /*! matrix times vector */
924
- #define MAT_DOT_VEC_2X2(p,m,v) \
925
- { \
926
- p[0] = m[0][0]*v[0] + m[0][1]*v[1]; \
927
- p[1] = m[1][0]*v[0] + m[1][1]*v[1]; \
928
- }\
929
-
930
-
931
- /*! matrix times vector */
932
- #define MAT_DOT_VEC_3X3(p,m,v) \
933
- { \
934
- p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2]; \
935
- p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2]; \
936
- p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2]; \
937
- }\
938
-
939
-
940
- /*! matrix times vector
941
- v is a vec4f
942
- */
943
- #define MAT_DOT_VEC_4X4(p,m,v) \
944
- { \
945
- p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2] + m[0][3]*v[3]; \
946
- p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2] + m[1][3]*v[3]; \
947
- p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2] + m[2][3]*v[3]; \
948
- p[3] = m[3][0]*v[0] + m[3][1]*v[1] + m[3][2]*v[2] + m[3][3]*v[3]; \
949
- }\
950
-
951
- /*! matrix times vector
952
- v is a vec3f
953
- and m is a mat4f<br>
954
- Last column is added as the position
955
- */
956
- #define MAT_DOT_VEC_3X4(p,m,v) \
957
- { \
958
- p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2] + m[0][3]; \
959
- p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2] + m[1][3]; \
960
- p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2] + m[2][3]; \
961
- }\
962
-
963
-
964
- /*! vector transpose times matrix */
965
- /*! p[j] = v[0]*m[0][j] + v[1]*m[1][j] + v[2]*m[2][j]; */
966
- #define VEC_DOT_MAT_3X3(p,v,m) \
967
- { \
968
- p[0] = v[0]*m[0][0] + v[1]*m[1][0] + v[2]*m[2][0]; \
969
- p[1] = v[0]*m[0][1] + v[1]*m[1][1] + v[2]*m[2][1]; \
970
- p[2] = v[0]*m[0][2] + v[1]*m[1][2] + v[2]*m[2][2]; \
971
- }\
972
-
973
-
974
- /*! affine matrix times vector */
975
- /** The matrix is assumed to be an affine matrix, with last two
976
- * entries representing a translation */
977
- #define MAT_DOT_VEC_2X3(p,m,v) \
978
- { \
979
- p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]; \
980
- p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]; \
981
- }\
982
-
983
- //! Transform a plane
984
- #define MAT_TRANSFORM_PLANE_4X4(pout,m,plane)\
985
- { \
986
- pout[0] = m[0][0]*plane[0] + m[0][1]*plane[1] + m[0][2]*plane[2];\
987
- pout[1] = m[1][0]*plane[0] + m[1][1]*plane[1] + m[1][2]*plane[2];\
988
- pout[2] = m[2][0]*plane[0] + m[2][1]*plane[1] + m[2][2]*plane[2];\
989
- pout[3] = m[0][3]*pout[0] + m[1][3]*pout[1] + m[2][3]*pout[2] + plane[3];\
990
- }\
991
-
992
-
993
-
994
- /** inverse transpose of matrix times vector
995
- *
996
- * This macro computes inverse transpose of matrix m,
997
- * and multiplies vector v into it, to yeild vector p
998
- *
999
- * DANGER !!! Do Not use this on normal vectors!!!
1000
- * It will leave normals the wrong length !!!
1001
- * See macro below for use on normals.
1002
- */
1003
- #define INV_TRANSP_MAT_DOT_VEC_2X2(p,m,v) \
1004
- { \
1005
- GREAL det; \
1006
- \
1007
- det = m[0][0]*m[1][1] - m[0][1]*m[1][0]; \
1008
- p[0] = m[1][1]*v[0] - m[1][0]*v[1]; \
1009
- p[1] = - m[0][1]*v[0] + m[0][0]*v[1]; \
1010
- \
1011
- /* if matrix not singular, and not orthonormal, then renormalize */ \
1012
- if ((det!=1.0f) && (det != 0.0f)) { \
1013
- det = 1.0f / det; \
1014
- p[0] *= det; \
1015
- p[1] *= det; \
1016
- } \
1017
- }\
1018
-
1019
-
1020
- /** transform normal vector by inverse transpose of matrix
1021
- * and then renormalize the vector
1022
- *
1023
- * This macro computes inverse transpose of matrix m,
1024
- * and multiplies vector v into it, to yeild vector p
1025
- * Vector p is then normalized.
1026
- */
1027
- #define NORM_XFORM_2X2(p,m,v) \
1028
- { \
1029
- GREAL len; \
1030
- \
1031
- /* do nothing if off-diagonals are zero and diagonals are \
1032
- * equal */ \
1033
- if ((m[0][1] != 0.0) || (m[1][0] != 0.0) || (m[0][0] != m[1][1])) { \
1034
- p[0] = m[1][1]*v[0] - m[1][0]*v[1]; \
1035
- p[1] = - m[0][1]*v[0] + m[0][0]*v[1]; \
1036
- \
1037
- len = p[0]*p[0] + p[1]*p[1]; \
1038
- GIM_INV_SQRT(len,len); \
1039
- p[0] *= len; \
1040
- p[1] *= len; \
1041
- } else { \
1042
- VEC_COPY_2 (p, v); \
1043
- } \
1044
- }\
1045
-
1046
-
1047
- /** outer product of vector times vector transpose
1048
- *
1049
- * The outer product of vector v and vector transpose t yeilds
1050
- * dyadic matrix m.
1051
- */
1052
- #define OUTER_PRODUCT_2X2(m,v,t) \
1053
- { \
1054
- m[0][0] = v[0] * t[0]; \
1055
- m[0][1] = v[0] * t[1]; \
1056
- \
1057
- m[1][0] = v[1] * t[0]; \
1058
- m[1][1] = v[1] * t[1]; \
1059
- }\
1060
-
1061
-
1062
- /** outer product of vector times vector transpose
1063
- *
1064
- * The outer product of vector v and vector transpose t yeilds
1065
- * dyadic matrix m.
1066
- */
1067
- #define OUTER_PRODUCT_3X3(m,v,t) \
1068
- { \
1069
- m[0][0] = v[0] * t[0]; \
1070
- m[0][1] = v[0] * t[1]; \
1071
- m[0][2] = v[0] * t[2]; \
1072
- \
1073
- m[1][0] = v[1] * t[0]; \
1074
- m[1][1] = v[1] * t[1]; \
1075
- m[1][2] = v[1] * t[2]; \
1076
- \
1077
- m[2][0] = v[2] * t[0]; \
1078
- m[2][1] = v[2] * t[1]; \
1079
- m[2][2] = v[2] * t[2]; \
1080
- }\
1081
-
1082
-
1083
- /** outer product of vector times vector transpose
1084
- *
1085
- * The outer product of vector v and vector transpose t yeilds
1086
- * dyadic matrix m.
1087
- */
1088
- #define OUTER_PRODUCT_4X4(m,v,t) \
1089
- { \
1090
- m[0][0] = v[0] * t[0]; \
1091
- m[0][1] = v[0] * t[1]; \
1092
- m[0][2] = v[0] * t[2]; \
1093
- m[0][3] = v[0] * t[3]; \
1094
- \
1095
- m[1][0] = v[1] * t[0]; \
1096
- m[1][1] = v[1] * t[1]; \
1097
- m[1][2] = v[1] * t[2]; \
1098
- m[1][3] = v[1] * t[3]; \
1099
- \
1100
- m[2][0] = v[2] * t[0]; \
1101
- m[2][1] = v[2] * t[1]; \
1102
- m[2][2] = v[2] * t[2]; \
1103
- m[2][3] = v[2] * t[3]; \
1104
- \
1105
- m[3][0] = v[3] * t[0]; \
1106
- m[3][1] = v[3] * t[1]; \
1107
- m[3][2] = v[3] * t[2]; \
1108
- m[3][3] = v[3] * t[3]; \
1109
- }\
1110
-
1111
-
1112
- /** outer product of vector times vector transpose
1113
- *
1114
- * The outer product of vector v and vector transpose t yeilds
1115
- * dyadic matrix m.
1116
- */
1117
- #define ACCUM_OUTER_PRODUCT_2X2(m,v,t) \
1118
- { \
1119
- m[0][0] += v[0] * t[0]; \
1120
- m[0][1] += v[0] * t[1]; \
1121
- \
1122
- m[1][0] += v[1] * t[0]; \
1123
- m[1][1] += v[1] * t[1]; \
1124
- }\
1125
-
1126
-
1127
- /** outer product of vector times vector transpose
1128
- *
1129
- * The outer product of vector v and vector transpose t yeilds
1130
- * dyadic matrix m.
1131
- */
1132
- #define ACCUM_OUTER_PRODUCT_3X3(m,v,t) \
1133
- { \
1134
- m[0][0] += v[0] * t[0]; \
1135
- m[0][1] += v[0] * t[1]; \
1136
- m[0][2] += v[0] * t[2]; \
1137
- \
1138
- m[1][0] += v[1] * t[0]; \
1139
- m[1][1] += v[1] * t[1]; \
1140
- m[1][2] += v[1] * t[2]; \
1141
- \
1142
- m[2][0] += v[2] * t[0]; \
1143
- m[2][1] += v[2] * t[1]; \
1144
- m[2][2] += v[2] * t[2]; \
1145
- }\
1146
-
1147
-
1148
- /** outer product of vector times vector transpose
1149
- *
1150
- * The outer product of vector v and vector transpose t yeilds
1151
- * dyadic matrix m.
1152
- */
1153
- #define ACCUM_OUTER_PRODUCT_4X4(m,v,t) \
1154
- { \
1155
- m[0][0] += v[0] * t[0]; \
1156
- m[0][1] += v[0] * t[1]; \
1157
- m[0][2] += v[0] * t[2]; \
1158
- m[0][3] += v[0] * t[3]; \
1159
- \
1160
- m[1][0] += v[1] * t[0]; \
1161
- m[1][1] += v[1] * t[1]; \
1162
- m[1][2] += v[1] * t[2]; \
1163
- m[1][3] += v[1] * t[3]; \
1164
- \
1165
- m[2][0] += v[2] * t[0]; \
1166
- m[2][1] += v[2] * t[1]; \
1167
- m[2][2] += v[2] * t[2]; \
1168
- m[2][3] += v[2] * t[3]; \
1169
- \
1170
- m[3][0] += v[3] * t[0]; \
1171
- m[3][1] += v[3] * t[1]; \
1172
- m[3][2] += v[3] * t[2]; \
1173
- m[3][3] += v[3] * t[3]; \
1174
- }\
1175
-
1176
-
1177
- /** determinant of matrix
1178
- *
1179
- * Computes determinant of matrix m, returning d
1180
- */
1181
- #define DETERMINANT_2X2(d,m) \
1182
- { \
1183
- d = m[0][0] * m[1][1] - m[0][1] * m[1][0]; \
1184
- }\
1185
-
1186
-
1187
- /** determinant of matrix
1188
- *
1189
- * Computes determinant of matrix m, returning d
1190
- */
1191
- #define DETERMINANT_3X3(d,m) \
1192
- { \
1193
- d = m[0][0] * (m[1][1]*m[2][2] - m[1][2] * m[2][1]); \
1194
- d -= m[0][1] * (m[1][0]*m[2][2] - m[1][2] * m[2][0]); \
1195
- d += m[0][2] * (m[1][0]*m[2][1] - m[1][1] * m[2][0]); \
1196
- }\
1197
-
1198
-
1199
- /** i,j,th cofactor of a 4x4 matrix
1200
- *
1201
- */
1202
- #define COFACTOR_4X4_IJ(fac,m,i,j) \
1203
- { \
1204
- GUINT __ii[4], __jj[4], __k; \
1205
- \
1206
- for (__k=0; __k<i; __k++) __ii[__k] = __k; \
1207
- for (__k=i; __k<3; __k++) __ii[__k] = __k+1; \
1208
- for (__k=0; __k<j; __k++) __jj[__k] = __k; \
1209
- for (__k=j; __k<3; __k++) __jj[__k] = __k+1; \
1210
- \
1211
- (fac) = m[__ii[0]][__jj[0]] * (m[__ii[1]][__jj[1]]*m[__ii[2]][__jj[2]] \
1212
- - m[__ii[1]][__jj[2]]*m[__ii[2]][__jj[1]]); \
1213
- (fac) -= m[__ii[0]][__jj[1]] * (m[__ii[1]][__jj[0]]*m[__ii[2]][__jj[2]] \
1214
- - m[__ii[1]][__jj[2]]*m[__ii[2]][__jj[0]]);\
1215
- (fac) += m[__ii[0]][__jj[2]] * (m[__ii[1]][__jj[0]]*m[__ii[2]][__jj[1]] \
1216
- - m[__ii[1]][__jj[1]]*m[__ii[2]][__jj[0]]);\
1217
- \
1218
- __k = i+j; \
1219
- if ( __k != (__k/2)*2) { \
1220
- (fac) = -(fac); \
1221
- } \
1222
- }\
1223
-
1224
-
1225
- /** determinant of matrix
1226
- *
1227
- * Computes determinant of matrix m, returning d
1228
- */
1229
- #define DETERMINANT_4X4(d,m) \
1230
- { \
1231
- GREAL cofac; \
1232
- COFACTOR_4X4_IJ (cofac, m, 0, 0); \
1233
- d = m[0][0] * cofac; \
1234
- COFACTOR_4X4_IJ (cofac, m, 0, 1); \
1235
- d += m[0][1] * cofac; \
1236
- COFACTOR_4X4_IJ (cofac, m, 0, 2); \
1237
- d += m[0][2] * cofac; \
1238
- COFACTOR_4X4_IJ (cofac, m, 0, 3); \
1239
- d += m[0][3] * cofac; \
1240
- }\
1241
-
1242
-
1243
- /** cofactor of matrix
1244
- *
1245
- * Computes cofactor of matrix m, returning a
1246
- */
1247
- #define COFACTOR_2X2(a,m) \
1248
- { \
1249
- a[0][0] = (m)[1][1]; \
1250
- a[0][1] = - (m)[1][0]; \
1251
- a[1][0] = - (m)[0][1]; \
1252
- a[1][1] = (m)[0][0]; \
1253
- }\
1254
-
1255
-
1256
- /** cofactor of matrix
1257
- *
1258
- * Computes cofactor of matrix m, returning a
1259
- */
1260
- #define COFACTOR_3X3(a,m) \
1261
- { \
1262
- a[0][0] = m[1][1]*m[2][2] - m[1][2]*m[2][1]; \
1263
- a[0][1] = - (m[1][0]*m[2][2] - m[2][0]*m[1][2]); \
1264
- a[0][2] = m[1][0]*m[2][1] - m[1][1]*m[2][0]; \
1265
- a[1][0] = - (m[0][1]*m[2][2] - m[0][2]*m[2][1]); \
1266
- a[1][1] = m[0][0]*m[2][2] - m[0][2]*m[2][0]; \
1267
- a[1][2] = - (m[0][0]*m[2][1] - m[0][1]*m[2][0]); \
1268
- a[2][0] = m[0][1]*m[1][2] - m[0][2]*m[1][1]; \
1269
- a[2][1] = - (m[0][0]*m[1][2] - m[0][2]*m[1][0]); \
1270
- a[2][2] = m[0][0]*m[1][1] - m[0][1]*m[1][0]); \
1271
- }\
1272
-
1273
-
1274
- /** cofactor of matrix
1275
- *
1276
- * Computes cofactor of matrix m, returning a
1277
- */
1278
- #define COFACTOR_4X4(a,m) \
1279
- { \
1280
- int i,j; \
1281
- \
1282
- for (i=0; i<4; i++) { \
1283
- for (j=0; j<4; j++) { \
1284
- COFACTOR_4X4_IJ (a[i][j], m, i, j); \
1285
- } \
1286
- } \
1287
- }\
1288
-
1289
-
1290
- /** adjoint of matrix
1291
- *
1292
- * Computes adjoint of matrix m, returning a
1293
- * (Note that adjoint is just the transpose of the cofactor matrix)
1294
- */
1295
- #define ADJOINT_2X2(a,m) \
1296
- { \
1297
- a[0][0] = (m)[1][1]; \
1298
- a[1][0] = - (m)[1][0]; \
1299
- a[0][1] = - (m)[0][1]; \
1300
- a[1][1] = (m)[0][0]; \
1301
- }\
1302
-
1303
-
1304
- /** adjoint of matrix
1305
- *
1306
- * Computes adjoint of matrix m, returning a
1307
- * (Note that adjoint is just the transpose of the cofactor matrix)
1308
- */
1309
- #define ADJOINT_3X3(a,m) \
1310
- { \
1311
- a[0][0] = m[1][1]*m[2][2] - m[1][2]*m[2][1]; \
1312
- a[1][0] = - (m[1][0]*m[2][2] - m[2][0]*m[1][2]); \
1313
- a[2][0] = m[1][0]*m[2][1] - m[1][1]*m[2][0]; \
1314
- a[0][1] = - (m[0][1]*m[2][2] - m[0][2]*m[2][1]); \
1315
- a[1][1] = m[0][0]*m[2][2] - m[0][2]*m[2][0]; \
1316
- a[2][1] = - (m[0][0]*m[2][1] - m[0][1]*m[2][0]); \
1317
- a[0][2] = m[0][1]*m[1][2] - m[0][2]*m[1][1]; \
1318
- a[1][2] = - (m[0][0]*m[1][2] - m[0][2]*m[1][0]); \
1319
- a[2][2] = m[0][0]*m[1][1] - m[0][1]*m[1][0]); \
1320
- }\
1321
-
1322
-
1323
- /** adjoint of matrix
1324
- *
1325
- * Computes adjoint of matrix m, returning a
1326
- * (Note that adjoint is just the transpose of the cofactor matrix)
1327
- */
1328
- #define ADJOINT_4X4(a,m) \
1329
- { \
1330
- char _i_,_j_; \
1331
- \
1332
- for (_i_=0; _i_<4; _i_++) { \
1333
- for (_j_=0; _j_<4; _j_++) { \
1334
- COFACTOR_4X4_IJ (a[_j_][_i_], m, _i_, _j_); \
1335
- } \
1336
- } \
1337
- }\
1338
-
1339
-
1340
- /** compute adjoint of matrix and scale
1341
- *
1342
- * Computes adjoint of matrix m, scales it by s, returning a
1343
- */
1344
- #define SCALE_ADJOINT_2X2(a,s,m) \
1345
- { \
1346
- a[0][0] = (s) * m[1][1]; \
1347
- a[1][0] = - (s) * m[1][0]; \
1348
- a[0][1] = - (s) * m[0][1]; \
1349
- a[1][1] = (s) * m[0][0]; \
1350
- }\
1351
-
1352
-
1353
- /** compute adjoint of matrix and scale
1354
- *
1355
- * Computes adjoint of matrix m, scales it by s, returning a
1356
- */
1357
- #define SCALE_ADJOINT_3X3(a,s,m) \
1358
- { \
1359
- a[0][0] = (s) * (m[1][1] * m[2][2] - m[1][2] * m[2][1]); \
1360
- a[1][0] = (s) * (m[1][2] * m[2][0] - m[1][0] * m[2][2]); \
1361
- a[2][0] = (s) * (m[1][0] * m[2][1] - m[1][1] * m[2][0]); \
1362
- \
1363
- a[0][1] = (s) * (m[0][2] * m[2][1] - m[0][1] * m[2][2]); \
1364
- a[1][1] = (s) * (m[0][0] * m[2][2] - m[0][2] * m[2][0]); \
1365
- a[2][1] = (s) * (m[0][1] * m[2][0] - m[0][0] * m[2][1]); \
1366
- \
1367
- a[0][2] = (s) * (m[0][1] * m[1][2] - m[0][2] * m[1][1]); \
1368
- a[1][2] = (s) * (m[0][2] * m[1][0] - m[0][0] * m[1][2]); \
1369
- a[2][2] = (s) * (m[0][0] * m[1][1] - m[0][1] * m[1][0]); \
1370
- }\
1371
-
1372
-
1373
- /** compute adjoint of matrix and scale
1374
- *
1375
- * Computes adjoint of matrix m, scales it by s, returning a
1376
- */
1377
- #define SCALE_ADJOINT_4X4(a,s,m) \
1378
- { \
1379
- char _i_,_j_; \
1380
- for (_i_=0; _i_<4; _i_++) { \
1381
- for (_j_=0; _j_<4; _j_++) { \
1382
- COFACTOR_4X4_IJ (a[_j_][_i_], m, _i_, _j_); \
1383
- a[_j_][_i_] *= s; \
1384
- } \
1385
- } \
1386
- }\
1387
-
1388
- /** inverse of matrix
1389
- *
1390
- * Compute inverse of matrix a, returning determinant m and
1391
- * inverse b
1392
- */
1393
- #define INVERT_2X2(b,det,a) \
1394
- { \
1395
- GREAL _tmp_; \
1396
- DETERMINANT_2X2 (det, a); \
1397
- _tmp_ = 1.0 / (det); \
1398
- SCALE_ADJOINT_2X2 (b, _tmp_, a); \
1399
- }\
1400
-
1401
-
1402
- /** inverse of matrix
1403
- *
1404
- * Compute inverse of matrix a, returning determinant m and
1405
- * inverse b
1406
- */
1407
- #define INVERT_3X3(b,det,a) \
1408
- { \
1409
- GREAL _tmp_; \
1410
- DETERMINANT_3X3 (det, a); \
1411
- _tmp_ = 1.0 / (det); \
1412
- SCALE_ADJOINT_3X3 (b, _tmp_, a); \
1413
- }\
1414
-
1415
-
1416
- /** inverse of matrix
1417
- *
1418
- * Compute inverse of matrix a, returning determinant m and
1419
- * inverse b
1420
- */
1421
- #define INVERT_4X4(b,det,a) \
1422
- { \
1423
- GREAL _tmp_; \
1424
- DETERMINANT_4X4 (det, a); \
1425
- _tmp_ = 1.0 / (det); \
1426
- SCALE_ADJOINT_4X4 (b, _tmp_, a); \
1427
- }\
1428
-
1429
- //! Get the triple(3) row of a transform matrix
1430
- #define MAT_GET_ROW(mat,vec3,rowindex)\
1431
- {\
1432
- vec3[0] = mat[rowindex][0];\
1433
- vec3[1] = mat[rowindex][1];\
1434
- vec3[2] = mat[rowindex][2]; \
1435
- }\
1436
-
1437
- //! Get the tuple(2) row of a transform matrix
1438
- #define MAT_GET_ROW2(mat,vec2,rowindex)\
1439
- {\
1440
- vec2[0] = mat[rowindex][0];\
1441
- vec2[1] = mat[rowindex][1];\
1442
- }\
1443
-
1444
-
1445
- //! Get the quad (4) row of a transform matrix
1446
- #define MAT_GET_ROW4(mat,vec4,rowindex)\
1447
- {\
1448
- vec4[0] = mat[rowindex][0];\
1449
- vec4[1] = mat[rowindex][1];\
1450
- vec4[2] = mat[rowindex][2];\
1451
- vec4[3] = mat[rowindex][3];\
1452
- }\
1453
-
1454
- //! Get the triple(3) col of a transform matrix
1455
- #define MAT_GET_COL(mat,vec3,colindex)\
1456
- {\
1457
- vec3[0] = mat[0][colindex];\
1458
- vec3[1] = mat[1][colindex];\
1459
- vec3[2] = mat[2][colindex]; \
1460
- }\
1461
-
1462
- //! Get the tuple(2) col of a transform matrix
1463
- #define MAT_GET_COL2(mat,vec2,colindex)\
1464
- {\
1465
- vec2[0] = mat[0][colindex];\
1466
- vec2[1] = mat[1][colindex];\
1467
- }\
1468
-
1469
-
1470
- //! Get the quad (4) col of a transform matrix
1471
- #define MAT_GET_COL4(mat,vec4,colindex)\
1472
- {\
1473
- vec4[0] = mat[0][colindex];\
1474
- vec4[1] = mat[1][colindex];\
1475
- vec4[2] = mat[2][colindex];\
1476
- vec4[3] = mat[3][colindex];\
1477
- }\
1478
-
1479
- //! Get the triple(3) col of a transform matrix
1480
- #define MAT_GET_X(mat,vec3)\
1481
- {\
1482
- MAT_GET_COL(mat,vec3,0);\
1483
- }\
1484
-
1485
- //! Get the triple(3) col of a transform matrix
1486
- #define MAT_GET_Y(mat,vec3)\
1487
- {\
1488
- MAT_GET_COL(mat,vec3,1);\
1489
- }\
1490
-
1491
- //! Get the triple(3) col of a transform matrix
1492
- #define MAT_GET_Z(mat,vec3)\
1493
- {\
1494
- MAT_GET_COL(mat,vec3,2);\
1495
- }\
1496
-
1497
-
1498
- //! Get the triple(3) col of a transform matrix
1499
- #define MAT_SET_X(mat,vec3)\
1500
- {\
1501
- mat[0][0] = vec3[0];\
1502
- mat[1][0] = vec3[1];\
1503
- mat[2][0] = vec3[2];\
1504
- }\
1505
-
1506
- //! Get the triple(3) col of a transform matrix
1507
- #define MAT_SET_Y(mat,vec3)\
1508
- {\
1509
- mat[0][1] = vec3[0];\
1510
- mat[1][1] = vec3[1];\
1511
- mat[2][1] = vec3[2];\
1512
- }\
1513
-
1514
- //! Get the triple(3) col of a transform matrix
1515
- #define MAT_SET_Z(mat,vec3)\
1516
- {\
1517
- mat[0][2] = vec3[0];\
1518
- mat[1][2] = vec3[1];\
1519
- mat[2][2] = vec3[2];\
1520
- }\
1521
-
1522
-
1523
- //! Get the triple(3) col of a transform matrix
1524
- #define MAT_GET_TRANSLATION(mat,vec3)\
1525
- {\
1526
- vec3[0] = mat[0][3];\
1527
- vec3[1] = mat[1][3];\
1528
- vec3[2] = mat[2][3]; \
1529
- }\
1530
-
1531
- //! Set the triple(3) col of a transform matrix
1532
- #define MAT_SET_TRANSLATION(mat,vec3)\
1533
- {\
1534
- mat[0][3] = vec3[0];\
1535
- mat[1][3] = vec3[1];\
1536
- mat[2][3] = vec3[2]; \
1537
- }\
1538
-
1539
-
1540
-
1541
- //! Returns the dot product between a vec3f and the row of a matrix
1542
- #define MAT_DOT_ROW(mat,vec3,rowindex) (vec3[0]*mat[rowindex][0] + vec3[1]*mat[rowindex][1] + vec3[2]*mat[rowindex][2])
1543
-
1544
- //! Returns the dot product between a vec2f and the row of a matrix
1545
- #define MAT_DOT_ROW2(mat,vec2,rowindex) (vec2[0]*mat[rowindex][0] + vec2[1]*mat[rowindex][1])
1546
-
1547
- //! Returns the dot product between a vec4f and the row of a matrix
1548
- #define MAT_DOT_ROW4(mat,vec4,rowindex) (vec4[0]*mat[rowindex][0] + vec4[1]*mat[rowindex][1] + vec4[2]*mat[rowindex][2] + vec4[3]*mat[rowindex][3])
1549
-
1550
-
1551
- //! Returns the dot product between a vec3f and the col of a matrix
1552
- #define MAT_DOT_COL(mat,vec3,colindex) (vec3[0]*mat[0][colindex] + vec3[1]*mat[1][colindex] + vec3[2]*mat[2][colindex])
1553
-
1554
- //! Returns the dot product between a vec2f and the col of a matrix
1555
- #define MAT_DOT_COL2(mat,vec2,colindex) (vec2[0]*mat[0][colindex] + vec2[1]*mat[1][colindex])
1556
-
1557
- //! Returns the dot product between a vec4f and the col of a matrix
1558
- #define MAT_DOT_COL4(mat,vec4,colindex) (vec4[0]*mat[0][colindex] + vec4[1]*mat[1][colindex] + vec4[2]*mat[2][colindex] + vec4[3]*mat[3][colindex])
1559
-
1560
- /*!Transpose matrix times vector
1561
- v is a vec3f
1562
- and m is a mat4f<br>
1563
- */
1564
- #define INV_MAT_DOT_VEC_3X3(p,m,v) \
1565
- { \
1566
- p[0] = MAT_DOT_COL(m,v,0); \
1567
- p[1] = MAT_DOT_COL(m,v,1); \
1568
- p[2] = MAT_DOT_COL(m,v,2); \
1569
- }\
1570
-
1571
-
1572
-
1573
- #endif // GIM_VECTOR_H_INCLUDED