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

Sign up to get free protection for your applications and to get access to all the features.
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