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,1630 +0,0 @@
1
- /*
2
- Copyright (C) 2009 Sony Computer Entertainment Inc.
3
- All rights reserved.
4
-
5
- This software is provided 'as-is', without any express or implied warranty.
6
- In no event will the authors be held liable for any damages arising from the use of this software.
7
- Permission is granted to anyone to use this software for any purpose,
8
- including commercial applications, and to alter it and redistribute it freely,
9
- subject to the following restrictions:
10
-
11
- 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
12
- 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
13
- 3. This notice may not be removed or altered from any source distribution.
14
-
15
- */
16
-
17
- #ifndef _VECTORMATH_MAT_AOS_CPP_H
18
- #define _VECTORMATH_MAT_AOS_CPP_H
19
-
20
- namespace Vectormath {
21
- namespace Aos {
22
-
23
- //-----------------------------------------------------------------------------
24
- // Constants
25
-
26
- #define _VECTORMATH_PI_OVER_2 1.570796327f
27
-
28
- //-----------------------------------------------------------------------------
29
- // Definitions
30
-
31
- inline Matrix3::Matrix3( const Matrix3 & mat )
32
- {
33
- mCol0 = mat.mCol0;
34
- mCol1 = mat.mCol1;
35
- mCol2 = mat.mCol2;
36
- }
37
-
38
- inline Matrix3::Matrix3( float scalar )
39
- {
40
- mCol0 = Vector3( scalar );
41
- mCol1 = Vector3( scalar );
42
- mCol2 = Vector3( scalar );
43
- }
44
-
45
- inline Matrix3::Matrix3( const Quat & unitQuat )
46
- {
47
- float qx, qy, qz, qw, qx2, qy2, qz2, qxqx2, qyqy2, qzqz2, qxqy2, qyqz2, qzqw2, qxqz2, qyqw2, qxqw2;
48
- qx = unitQuat.getX();
49
- qy = unitQuat.getY();
50
- qz = unitQuat.getZ();
51
- qw = unitQuat.getW();
52
- qx2 = ( qx + qx );
53
- qy2 = ( qy + qy );
54
- qz2 = ( qz + qz );
55
- qxqx2 = ( qx * qx2 );
56
- qxqy2 = ( qx * qy2 );
57
- qxqz2 = ( qx * qz2 );
58
- qxqw2 = ( qw * qx2 );
59
- qyqy2 = ( qy * qy2 );
60
- qyqz2 = ( qy * qz2 );
61
- qyqw2 = ( qw * qy2 );
62
- qzqz2 = ( qz * qz2 );
63
- qzqw2 = ( qw * qz2 );
64
- mCol0 = Vector3( ( ( 1.0f - qyqy2 ) - qzqz2 ), ( qxqy2 + qzqw2 ), ( qxqz2 - qyqw2 ) );
65
- mCol1 = Vector3( ( qxqy2 - qzqw2 ), ( ( 1.0f - qxqx2 ) - qzqz2 ), ( qyqz2 + qxqw2 ) );
66
- mCol2 = Vector3( ( qxqz2 + qyqw2 ), ( qyqz2 - qxqw2 ), ( ( 1.0f - qxqx2 ) - qyqy2 ) );
67
- }
68
-
69
- inline Matrix3::Matrix3( const Vector3 & _col0, const Vector3 & _col1, const Vector3 & _col2 )
70
- {
71
- mCol0 = _col0;
72
- mCol1 = _col1;
73
- mCol2 = _col2;
74
- }
75
-
76
- inline Matrix3 & Matrix3::setCol0( const Vector3 & _col0 )
77
- {
78
- mCol0 = _col0;
79
- return *this;
80
- }
81
-
82
- inline Matrix3 & Matrix3::setCol1( const Vector3 & _col1 )
83
- {
84
- mCol1 = _col1;
85
- return *this;
86
- }
87
-
88
- inline Matrix3 & Matrix3::setCol2( const Vector3 & _col2 )
89
- {
90
- mCol2 = _col2;
91
- return *this;
92
- }
93
-
94
- inline Matrix3 & Matrix3::setCol( int col, const Vector3 & vec )
95
- {
96
- *(&mCol0 + col) = vec;
97
- return *this;
98
- }
99
-
100
- inline Matrix3 & Matrix3::setRow( int row, const Vector3 & vec )
101
- {
102
- mCol0.setElem( row, vec.getElem( 0 ) );
103
- mCol1.setElem( row, vec.getElem( 1 ) );
104
- mCol2.setElem( row, vec.getElem( 2 ) );
105
- return *this;
106
- }
107
-
108
- inline Matrix3 & Matrix3::setElem( int col, int row, float val )
109
- {
110
- Vector3 tmpV3_0;
111
- tmpV3_0 = this->getCol( col );
112
- tmpV3_0.setElem( row, val );
113
- this->setCol( col, tmpV3_0 );
114
- return *this;
115
- }
116
-
117
- inline float Matrix3::getElem( int col, int row ) const
118
- {
119
- return this->getCol( col ).getElem( row );
120
- }
121
-
122
- inline const Vector3 Matrix3::getCol0( ) const
123
- {
124
- return mCol0;
125
- }
126
-
127
- inline const Vector3 Matrix3::getCol1( ) const
128
- {
129
- return mCol1;
130
- }
131
-
132
- inline const Vector3 Matrix3::getCol2( ) const
133
- {
134
- return mCol2;
135
- }
136
-
137
- inline const Vector3 Matrix3::getCol( int col ) const
138
- {
139
- return *(&mCol0 + col);
140
- }
141
-
142
- inline const Vector3 Matrix3::getRow( int row ) const
143
- {
144
- return Vector3( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ) );
145
- }
146
-
147
- inline Vector3 & Matrix3::operator []( int col )
148
- {
149
- return *(&mCol0 + col);
150
- }
151
-
152
- inline const Vector3 Matrix3::operator []( int col ) const
153
- {
154
- return *(&mCol0 + col);
155
- }
156
-
157
- inline Matrix3 & Matrix3::operator =( const Matrix3 & mat )
158
- {
159
- mCol0 = mat.mCol0;
160
- mCol1 = mat.mCol1;
161
- mCol2 = mat.mCol2;
162
- return *this;
163
- }
164
-
165
- inline const Matrix3 transpose( const Matrix3 & mat )
166
- {
167
- return Matrix3(
168
- Vector3( mat.getCol0().getX(), mat.getCol1().getX(), mat.getCol2().getX() ),
169
- Vector3( mat.getCol0().getY(), mat.getCol1().getY(), mat.getCol2().getY() ),
170
- Vector3( mat.getCol0().getZ(), mat.getCol1().getZ(), mat.getCol2().getZ() )
171
- );
172
- }
173
-
174
- inline const Matrix3 inverse( const Matrix3 & mat )
175
- {
176
- Vector3 tmp0, tmp1, tmp2;
177
- float detinv;
178
- tmp0 = cross( mat.getCol1(), mat.getCol2() );
179
- tmp1 = cross( mat.getCol2(), mat.getCol0() );
180
- tmp2 = cross( mat.getCol0(), mat.getCol1() );
181
- detinv = ( 1.0f / dot( mat.getCol2(), tmp2 ) );
182
- return Matrix3(
183
- Vector3( ( tmp0.getX() * detinv ), ( tmp1.getX() * detinv ), ( tmp2.getX() * detinv ) ),
184
- Vector3( ( tmp0.getY() * detinv ), ( tmp1.getY() * detinv ), ( tmp2.getY() * detinv ) ),
185
- Vector3( ( tmp0.getZ() * detinv ), ( tmp1.getZ() * detinv ), ( tmp2.getZ() * detinv ) )
186
- );
187
- }
188
-
189
- inline float determinant( const Matrix3 & mat )
190
- {
191
- return dot( mat.getCol2(), cross( mat.getCol0(), mat.getCol1() ) );
192
- }
193
-
194
- inline const Matrix3 Matrix3::operator +( const Matrix3 & mat ) const
195
- {
196
- return Matrix3(
197
- ( mCol0 + mat.mCol0 ),
198
- ( mCol1 + mat.mCol1 ),
199
- ( mCol2 + mat.mCol2 )
200
- );
201
- }
202
-
203
- inline const Matrix3 Matrix3::operator -( const Matrix3 & mat ) const
204
- {
205
- return Matrix3(
206
- ( mCol0 - mat.mCol0 ),
207
- ( mCol1 - mat.mCol1 ),
208
- ( mCol2 - mat.mCol2 )
209
- );
210
- }
211
-
212
- inline Matrix3 & Matrix3::operator +=( const Matrix3 & mat )
213
- {
214
- *this = *this + mat;
215
- return *this;
216
- }
217
-
218
- inline Matrix3 & Matrix3::operator -=( const Matrix3 & mat )
219
- {
220
- *this = *this - mat;
221
- return *this;
222
- }
223
-
224
- inline const Matrix3 Matrix3::operator -( ) const
225
- {
226
- return Matrix3(
227
- ( -mCol0 ),
228
- ( -mCol1 ),
229
- ( -mCol2 )
230
- );
231
- }
232
-
233
- inline const Matrix3 absPerElem( const Matrix3 & mat )
234
- {
235
- return Matrix3(
236
- absPerElem( mat.getCol0() ),
237
- absPerElem( mat.getCol1() ),
238
- absPerElem( mat.getCol2() )
239
- );
240
- }
241
-
242
- inline const Matrix3 Matrix3::operator *( float scalar ) const
243
- {
244
- return Matrix3(
245
- ( mCol0 * scalar ),
246
- ( mCol1 * scalar ),
247
- ( mCol2 * scalar )
248
- );
249
- }
250
-
251
- inline Matrix3 & Matrix3::operator *=( float scalar )
252
- {
253
- *this = *this * scalar;
254
- return *this;
255
- }
256
-
257
- inline const Matrix3 operator *( float scalar, const Matrix3 & mat )
258
- {
259
- return mat * scalar;
260
- }
261
-
262
- inline const Vector3 Matrix3::operator *( const Vector3 & vec ) const
263
- {
264
- return Vector3(
265
- ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ),
266
- ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ),
267
- ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) )
268
- );
269
- }
270
-
271
- inline const Matrix3 Matrix3::operator *( const Matrix3 & mat ) const
272
- {
273
- return Matrix3(
274
- ( *this * mat.mCol0 ),
275
- ( *this * mat.mCol1 ),
276
- ( *this * mat.mCol2 )
277
- );
278
- }
279
-
280
- inline Matrix3 & Matrix3::operator *=( const Matrix3 & mat )
281
- {
282
- *this = *this * mat;
283
- return *this;
284
- }
285
-
286
- inline const Matrix3 mulPerElem( const Matrix3 & mat0, const Matrix3 & mat1 )
287
- {
288
- return Matrix3(
289
- mulPerElem( mat0.getCol0(), mat1.getCol0() ),
290
- mulPerElem( mat0.getCol1(), mat1.getCol1() ),
291
- mulPerElem( mat0.getCol2(), mat1.getCol2() )
292
- );
293
- }
294
-
295
- inline const Matrix3 Matrix3::identity( )
296
- {
297
- return Matrix3(
298
- Vector3::xAxis( ),
299
- Vector3::yAxis( ),
300
- Vector3::zAxis( )
301
- );
302
- }
303
-
304
- inline const Matrix3 Matrix3::rotationX( float radians )
305
- {
306
- float s, c;
307
- s = sinf( radians );
308
- c = cosf( radians );
309
- return Matrix3(
310
- Vector3::xAxis( ),
311
- Vector3( 0.0f, c, s ),
312
- Vector3( 0.0f, -s, c )
313
- );
314
- }
315
-
316
- inline const Matrix3 Matrix3::rotationY( float radians )
317
- {
318
- float s, c;
319
- s = sinf( radians );
320
- c = cosf( radians );
321
- return Matrix3(
322
- Vector3( c, 0.0f, -s ),
323
- Vector3::yAxis( ),
324
- Vector3( s, 0.0f, c )
325
- );
326
- }
327
-
328
- inline const Matrix3 Matrix3::rotationZ( float radians )
329
- {
330
- float s, c;
331
- s = sinf( radians );
332
- c = cosf( radians );
333
- return Matrix3(
334
- Vector3( c, s, 0.0f ),
335
- Vector3( -s, c, 0.0f ),
336
- Vector3::zAxis( )
337
- );
338
- }
339
-
340
- inline const Matrix3 Matrix3::rotationZYX( const Vector3 & radiansXYZ )
341
- {
342
- float sX, cX, sY, cY, sZ, cZ, tmp0, tmp1;
343
- sX = sinf( radiansXYZ.getX() );
344
- cX = cosf( radiansXYZ.getX() );
345
- sY = sinf( radiansXYZ.getY() );
346
- cY = cosf( radiansXYZ.getY() );
347
- sZ = sinf( radiansXYZ.getZ() );
348
- cZ = cosf( radiansXYZ.getZ() );
349
- tmp0 = ( cZ * sY );
350
- tmp1 = ( sZ * sY );
351
- return Matrix3(
352
- Vector3( ( cZ * cY ), ( sZ * cY ), -sY ),
353
- Vector3( ( ( tmp0 * sX ) - ( sZ * cX ) ), ( ( tmp1 * sX ) + ( cZ * cX ) ), ( cY * sX ) ),
354
- Vector3( ( ( tmp0 * cX ) + ( sZ * sX ) ), ( ( tmp1 * cX ) - ( cZ * sX ) ), ( cY * cX ) )
355
- );
356
- }
357
-
358
- inline const Matrix3 Matrix3::rotation( float radians, const Vector3 & unitVec )
359
- {
360
- float x, y, z, s, c, oneMinusC, xy, yz, zx;
361
- s = sinf( radians );
362
- c = cosf( radians );
363
- x = unitVec.getX();
364
- y = unitVec.getY();
365
- z = unitVec.getZ();
366
- xy = ( x * y );
367
- yz = ( y * z );
368
- zx = ( z * x );
369
- oneMinusC = ( 1.0f - c );
370
- return Matrix3(
371
- Vector3( ( ( ( x * x ) * oneMinusC ) + c ), ( ( xy * oneMinusC ) + ( z * s ) ), ( ( zx * oneMinusC ) - ( y * s ) ) ),
372
- Vector3( ( ( xy * oneMinusC ) - ( z * s ) ), ( ( ( y * y ) * oneMinusC ) + c ), ( ( yz * oneMinusC ) + ( x * s ) ) ),
373
- Vector3( ( ( zx * oneMinusC ) + ( y * s ) ), ( ( yz * oneMinusC ) - ( x * s ) ), ( ( ( z * z ) * oneMinusC ) + c ) )
374
- );
375
- }
376
-
377
- inline const Matrix3 Matrix3::rotation( const Quat & unitQuat )
378
- {
379
- return Matrix3( unitQuat );
380
- }
381
-
382
- inline const Matrix3 Matrix3::scale( const Vector3 & scaleVec )
383
- {
384
- return Matrix3(
385
- Vector3( scaleVec.getX(), 0.0f, 0.0f ),
386
- Vector3( 0.0f, scaleVec.getY(), 0.0f ),
387
- Vector3( 0.0f, 0.0f, scaleVec.getZ() )
388
- );
389
- }
390
-
391
- inline const Matrix3 appendScale( const Matrix3 & mat, const Vector3 & scaleVec )
392
- {
393
- return Matrix3(
394
- ( mat.getCol0() * scaleVec.getX( ) ),
395
- ( mat.getCol1() * scaleVec.getY( ) ),
396
- ( mat.getCol2() * scaleVec.getZ( ) )
397
- );
398
- }
399
-
400
- inline const Matrix3 prependScale( const Vector3 & scaleVec, const Matrix3 & mat )
401
- {
402
- return Matrix3(
403
- mulPerElem( mat.getCol0(), scaleVec ),
404
- mulPerElem( mat.getCol1(), scaleVec ),
405
- mulPerElem( mat.getCol2(), scaleVec )
406
- );
407
- }
408
-
409
- inline const Matrix3 select( const Matrix3 & mat0, const Matrix3 & mat1, bool select1 )
410
- {
411
- return Matrix3(
412
- select( mat0.getCol0(), mat1.getCol0(), select1 ),
413
- select( mat0.getCol1(), mat1.getCol1(), select1 ),
414
- select( mat0.getCol2(), mat1.getCol2(), select1 )
415
- );
416
- }
417
-
418
- #ifdef _VECTORMATH_DEBUG
419
-
420
- inline void print( const Matrix3 & mat )
421
- {
422
- print( mat.getRow( 0 ) );
423
- print( mat.getRow( 1 ) );
424
- print( mat.getRow( 2 ) );
425
- }
426
-
427
- inline void print( const Matrix3 & mat, const char * name )
428
- {
429
- printf("%s:\n", name);
430
- print( mat );
431
- }
432
-
433
- #endif
434
-
435
- inline Matrix4::Matrix4( const Matrix4 & mat )
436
- {
437
- mCol0 = mat.mCol0;
438
- mCol1 = mat.mCol1;
439
- mCol2 = mat.mCol2;
440
- mCol3 = mat.mCol3;
441
- }
442
-
443
- inline Matrix4::Matrix4( float scalar )
444
- {
445
- mCol0 = Vector4( scalar );
446
- mCol1 = Vector4( scalar );
447
- mCol2 = Vector4( scalar );
448
- mCol3 = Vector4( scalar );
449
- }
450
-
451
- inline Matrix4::Matrix4( const Transform3 & mat )
452
- {
453
- mCol0 = Vector4( mat.getCol0(), 0.0f );
454
- mCol1 = Vector4( mat.getCol1(), 0.0f );
455
- mCol2 = Vector4( mat.getCol2(), 0.0f );
456
- mCol3 = Vector4( mat.getCol3(), 1.0f );
457
- }
458
-
459
- inline Matrix4::Matrix4( const Vector4 & _col0, const Vector4 & _col1, const Vector4 & _col2, const Vector4 & _col3 )
460
- {
461
- mCol0 = _col0;
462
- mCol1 = _col1;
463
- mCol2 = _col2;
464
- mCol3 = _col3;
465
- }
466
-
467
- inline Matrix4::Matrix4( const Matrix3 & mat, const Vector3 & translateVec )
468
- {
469
- mCol0 = Vector4( mat.getCol0(), 0.0f );
470
- mCol1 = Vector4( mat.getCol1(), 0.0f );
471
- mCol2 = Vector4( mat.getCol2(), 0.0f );
472
- mCol3 = Vector4( translateVec, 1.0f );
473
- }
474
-
475
- inline Matrix4::Matrix4( const Quat & unitQuat, const Vector3 & translateVec )
476
- {
477
- Matrix3 mat;
478
- mat = Matrix3( unitQuat );
479
- mCol0 = Vector4( mat.getCol0(), 0.0f );
480
- mCol1 = Vector4( mat.getCol1(), 0.0f );
481
- mCol2 = Vector4( mat.getCol2(), 0.0f );
482
- mCol3 = Vector4( translateVec, 1.0f );
483
- }
484
-
485
- inline Matrix4 & Matrix4::setCol0( const Vector4 & _col0 )
486
- {
487
- mCol0 = _col0;
488
- return *this;
489
- }
490
-
491
- inline Matrix4 & Matrix4::setCol1( const Vector4 & _col1 )
492
- {
493
- mCol1 = _col1;
494
- return *this;
495
- }
496
-
497
- inline Matrix4 & Matrix4::setCol2( const Vector4 & _col2 )
498
- {
499
- mCol2 = _col2;
500
- return *this;
501
- }
502
-
503
- inline Matrix4 & Matrix4::setCol3( const Vector4 & _col3 )
504
- {
505
- mCol3 = _col3;
506
- return *this;
507
- }
508
-
509
- inline Matrix4 & Matrix4::setCol( int col, const Vector4 & vec )
510
- {
511
- *(&mCol0 + col) = vec;
512
- return *this;
513
- }
514
-
515
- inline Matrix4 & Matrix4::setRow( int row, const Vector4 & vec )
516
- {
517
- mCol0.setElem( row, vec.getElem( 0 ) );
518
- mCol1.setElem( row, vec.getElem( 1 ) );
519
- mCol2.setElem( row, vec.getElem( 2 ) );
520
- mCol3.setElem( row, vec.getElem( 3 ) );
521
- return *this;
522
- }
523
-
524
- inline Matrix4 & Matrix4::setElem( int col, int row, float val )
525
- {
526
- Vector4 tmpV3_0;
527
- tmpV3_0 = this->getCol( col );
528
- tmpV3_0.setElem( row, val );
529
- this->setCol( col, tmpV3_0 );
530
- return *this;
531
- }
532
-
533
- inline float Matrix4::getElem( int col, int row ) const
534
- {
535
- return this->getCol( col ).getElem( row );
536
- }
537
-
538
- inline const Vector4 Matrix4::getCol0( ) const
539
- {
540
- return mCol0;
541
- }
542
-
543
- inline const Vector4 Matrix4::getCol1( ) const
544
- {
545
- return mCol1;
546
- }
547
-
548
- inline const Vector4 Matrix4::getCol2( ) const
549
- {
550
- return mCol2;
551
- }
552
-
553
- inline const Vector4 Matrix4::getCol3( ) const
554
- {
555
- return mCol3;
556
- }
557
-
558
- inline const Vector4 Matrix4::getCol( int col ) const
559
- {
560
- return *(&mCol0 + col);
561
- }
562
-
563
- inline const Vector4 Matrix4::getRow( int row ) const
564
- {
565
- return Vector4( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ), mCol3.getElem( row ) );
566
- }
567
-
568
- inline Vector4 & Matrix4::operator []( int col )
569
- {
570
- return *(&mCol0 + col);
571
- }
572
-
573
- inline const Vector4 Matrix4::operator []( int col ) const
574
- {
575
- return *(&mCol0 + col);
576
- }
577
-
578
- inline Matrix4 & Matrix4::operator =( const Matrix4 & mat )
579
- {
580
- mCol0 = mat.mCol0;
581
- mCol1 = mat.mCol1;
582
- mCol2 = mat.mCol2;
583
- mCol3 = mat.mCol3;
584
- return *this;
585
- }
586
-
587
- inline const Matrix4 transpose( const Matrix4 & mat )
588
- {
589
- return Matrix4(
590
- Vector4( mat.getCol0().getX(), mat.getCol1().getX(), mat.getCol2().getX(), mat.getCol3().getX() ),
591
- Vector4( mat.getCol0().getY(), mat.getCol1().getY(), mat.getCol2().getY(), mat.getCol3().getY() ),
592
- Vector4( mat.getCol0().getZ(), mat.getCol1().getZ(), mat.getCol2().getZ(), mat.getCol3().getZ() ),
593
- Vector4( mat.getCol0().getW(), mat.getCol1().getW(), mat.getCol2().getW(), mat.getCol3().getW() )
594
- );
595
- }
596
-
597
- inline const Matrix4 inverse( const Matrix4 & mat )
598
- {
599
- Vector4 res0, res1, res2, res3;
600
- float mA, mB, mC, mD, mE, mF, mG, mH, mI, mJ, mK, mL, mM, mN, mO, mP, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, detInv;
601
- mA = mat.getCol0().getX();
602
- mB = mat.getCol0().getY();
603
- mC = mat.getCol0().getZ();
604
- mD = mat.getCol0().getW();
605
- mE = mat.getCol1().getX();
606
- mF = mat.getCol1().getY();
607
- mG = mat.getCol1().getZ();
608
- mH = mat.getCol1().getW();
609
- mI = mat.getCol2().getX();
610
- mJ = mat.getCol2().getY();
611
- mK = mat.getCol2().getZ();
612
- mL = mat.getCol2().getW();
613
- mM = mat.getCol3().getX();
614
- mN = mat.getCol3().getY();
615
- mO = mat.getCol3().getZ();
616
- mP = mat.getCol3().getW();
617
- tmp0 = ( ( mK * mD ) - ( mC * mL ) );
618
- tmp1 = ( ( mO * mH ) - ( mG * mP ) );
619
- tmp2 = ( ( mB * mK ) - ( mJ * mC ) );
620
- tmp3 = ( ( mF * mO ) - ( mN * mG ) );
621
- tmp4 = ( ( mJ * mD ) - ( mB * mL ) );
622
- tmp5 = ( ( mN * mH ) - ( mF * mP ) );
623
- res0.setX( ( ( ( mJ * tmp1 ) - ( mL * tmp3 ) ) - ( mK * tmp5 ) ) );
624
- res0.setY( ( ( ( mN * tmp0 ) - ( mP * tmp2 ) ) - ( mO * tmp4 ) ) );
625
- res0.setZ( ( ( ( mD * tmp3 ) + ( mC * tmp5 ) ) - ( mB * tmp1 ) ) );
626
- res0.setW( ( ( ( mH * tmp2 ) + ( mG * tmp4 ) ) - ( mF * tmp0 ) ) );
627
- detInv = ( 1.0f / ( ( ( ( mA * res0.getX() ) + ( mE * res0.getY() ) ) + ( mI * res0.getZ() ) ) + ( mM * res0.getW() ) ) );
628
- res1.setX( ( mI * tmp1 ) );
629
- res1.setY( ( mM * tmp0 ) );
630
- res1.setZ( ( mA * tmp1 ) );
631
- res1.setW( ( mE * tmp0 ) );
632
- res3.setX( ( mI * tmp3 ) );
633
- res3.setY( ( mM * tmp2 ) );
634
- res3.setZ( ( mA * tmp3 ) );
635
- res3.setW( ( mE * tmp2 ) );
636
- res2.setX( ( mI * tmp5 ) );
637
- res2.setY( ( mM * tmp4 ) );
638
- res2.setZ( ( mA * tmp5 ) );
639
- res2.setW( ( mE * tmp4 ) );
640
- tmp0 = ( ( mI * mB ) - ( mA * mJ ) );
641
- tmp1 = ( ( mM * mF ) - ( mE * mN ) );
642
- tmp2 = ( ( mI * mD ) - ( mA * mL ) );
643
- tmp3 = ( ( mM * mH ) - ( mE * mP ) );
644
- tmp4 = ( ( mI * mC ) - ( mA * mK ) );
645
- tmp5 = ( ( mM * mG ) - ( mE * mO ) );
646
- res2.setX( ( ( ( mL * tmp1 ) - ( mJ * tmp3 ) ) + res2.getX() ) );
647
- res2.setY( ( ( ( mP * tmp0 ) - ( mN * tmp2 ) ) + res2.getY() ) );
648
- res2.setZ( ( ( ( mB * tmp3 ) - ( mD * tmp1 ) ) - res2.getZ() ) );
649
- res2.setW( ( ( ( mF * tmp2 ) - ( mH * tmp0 ) ) - res2.getW() ) );
650
- res3.setX( ( ( ( mJ * tmp5 ) - ( mK * tmp1 ) ) + res3.getX() ) );
651
- res3.setY( ( ( ( mN * tmp4 ) - ( mO * tmp0 ) ) + res3.getY() ) );
652
- res3.setZ( ( ( ( mC * tmp1 ) - ( mB * tmp5 ) ) - res3.getZ() ) );
653
- res3.setW( ( ( ( mG * tmp0 ) - ( mF * tmp4 ) ) - res3.getW() ) );
654
- res1.setX( ( ( ( mK * tmp3 ) - ( mL * tmp5 ) ) - res1.getX() ) );
655
- res1.setY( ( ( ( mO * tmp2 ) - ( mP * tmp4 ) ) - res1.getY() ) );
656
- res1.setZ( ( ( ( mD * tmp5 ) - ( mC * tmp3 ) ) + res1.getZ() ) );
657
- res1.setW( ( ( ( mH * tmp4 ) - ( mG * tmp2 ) ) + res1.getW() ) );
658
- return Matrix4(
659
- ( res0 * detInv ),
660
- ( res1 * detInv ),
661
- ( res2 * detInv ),
662
- ( res3 * detInv )
663
- );
664
- }
665
-
666
- inline const Matrix4 affineInverse( const Matrix4 & mat )
667
- {
668
- Transform3 affineMat;
669
- affineMat.setCol0( mat.getCol0().getXYZ( ) );
670
- affineMat.setCol1( mat.getCol1().getXYZ( ) );
671
- affineMat.setCol2( mat.getCol2().getXYZ( ) );
672
- affineMat.setCol3( mat.getCol3().getXYZ( ) );
673
- return Matrix4( inverse( affineMat ) );
674
- }
675
-
676
- inline const Matrix4 orthoInverse( const Matrix4 & mat )
677
- {
678
- Transform3 affineMat;
679
- affineMat.setCol0( mat.getCol0().getXYZ( ) );
680
- affineMat.setCol1( mat.getCol1().getXYZ( ) );
681
- affineMat.setCol2( mat.getCol2().getXYZ( ) );
682
- affineMat.setCol3( mat.getCol3().getXYZ( ) );
683
- return Matrix4( orthoInverse( affineMat ) );
684
- }
685
-
686
- inline float determinant( const Matrix4 & mat )
687
- {
688
- float dx, dy, dz, dw, mA, mB, mC, mD, mE, mF, mG, mH, mI, mJ, mK, mL, mM, mN, mO, mP, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5;
689
- mA = mat.getCol0().getX();
690
- mB = mat.getCol0().getY();
691
- mC = mat.getCol0().getZ();
692
- mD = mat.getCol0().getW();
693
- mE = mat.getCol1().getX();
694
- mF = mat.getCol1().getY();
695
- mG = mat.getCol1().getZ();
696
- mH = mat.getCol1().getW();
697
- mI = mat.getCol2().getX();
698
- mJ = mat.getCol2().getY();
699
- mK = mat.getCol2().getZ();
700
- mL = mat.getCol2().getW();
701
- mM = mat.getCol3().getX();
702
- mN = mat.getCol3().getY();
703
- mO = mat.getCol3().getZ();
704
- mP = mat.getCol3().getW();
705
- tmp0 = ( ( mK * mD ) - ( mC * mL ) );
706
- tmp1 = ( ( mO * mH ) - ( mG * mP ) );
707
- tmp2 = ( ( mB * mK ) - ( mJ * mC ) );
708
- tmp3 = ( ( mF * mO ) - ( mN * mG ) );
709
- tmp4 = ( ( mJ * mD ) - ( mB * mL ) );
710
- tmp5 = ( ( mN * mH ) - ( mF * mP ) );
711
- dx = ( ( ( mJ * tmp1 ) - ( mL * tmp3 ) ) - ( mK * tmp5 ) );
712
- dy = ( ( ( mN * tmp0 ) - ( mP * tmp2 ) ) - ( mO * tmp4 ) );
713
- dz = ( ( ( mD * tmp3 ) + ( mC * tmp5 ) ) - ( mB * tmp1 ) );
714
- dw = ( ( ( mH * tmp2 ) + ( mG * tmp4 ) ) - ( mF * tmp0 ) );
715
- return ( ( ( ( mA * dx ) + ( mE * dy ) ) + ( mI * dz ) ) + ( mM * dw ) );
716
- }
717
-
718
- inline const Matrix4 Matrix4::operator +( const Matrix4 & mat ) const
719
- {
720
- return Matrix4(
721
- ( mCol0 + mat.mCol0 ),
722
- ( mCol1 + mat.mCol1 ),
723
- ( mCol2 + mat.mCol2 ),
724
- ( mCol3 + mat.mCol3 )
725
- );
726
- }
727
-
728
- inline const Matrix4 Matrix4::operator -( const Matrix4 & mat ) const
729
- {
730
- return Matrix4(
731
- ( mCol0 - mat.mCol0 ),
732
- ( mCol1 - mat.mCol1 ),
733
- ( mCol2 - mat.mCol2 ),
734
- ( mCol3 - mat.mCol3 )
735
- );
736
- }
737
-
738
- inline Matrix4 & Matrix4::operator +=( const Matrix4 & mat )
739
- {
740
- *this = *this + mat;
741
- return *this;
742
- }
743
-
744
- inline Matrix4 & Matrix4::operator -=( const Matrix4 & mat )
745
- {
746
- *this = *this - mat;
747
- return *this;
748
- }
749
-
750
- inline const Matrix4 Matrix4::operator -( ) const
751
- {
752
- return Matrix4(
753
- ( -mCol0 ),
754
- ( -mCol1 ),
755
- ( -mCol2 ),
756
- ( -mCol3 )
757
- );
758
- }
759
-
760
- inline const Matrix4 absPerElem( const Matrix4 & mat )
761
- {
762
- return Matrix4(
763
- absPerElem( mat.getCol0() ),
764
- absPerElem( mat.getCol1() ),
765
- absPerElem( mat.getCol2() ),
766
- absPerElem( mat.getCol3() )
767
- );
768
- }
769
-
770
- inline const Matrix4 Matrix4::operator *( float scalar ) const
771
- {
772
- return Matrix4(
773
- ( mCol0 * scalar ),
774
- ( mCol1 * scalar ),
775
- ( mCol2 * scalar ),
776
- ( mCol3 * scalar )
777
- );
778
- }
779
-
780
- inline Matrix4 & Matrix4::operator *=( float scalar )
781
- {
782
- *this = *this * scalar;
783
- return *this;
784
- }
785
-
786
- inline const Matrix4 operator *( float scalar, const Matrix4 & mat )
787
- {
788
- return mat * scalar;
789
- }
790
-
791
- inline const Vector4 Matrix4::operator *( const Vector4 & vec ) const
792
- {
793
- return Vector4(
794
- ( ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ) + ( mCol3.getX() * vec.getW() ) ),
795
- ( ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ) + ( mCol3.getY() * vec.getW() ) ),
796
- ( ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) ) + ( mCol3.getZ() * vec.getW() ) ),
797
- ( ( ( ( mCol0.getW() * vec.getX() ) + ( mCol1.getW() * vec.getY() ) ) + ( mCol2.getW() * vec.getZ() ) ) + ( mCol3.getW() * vec.getW() ) )
798
- );
799
- }
800
-
801
- inline const Vector4 Matrix4::operator *( const Vector3 & vec ) const
802
- {
803
- return Vector4(
804
- ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ),
805
- ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ),
806
- ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) ),
807
- ( ( ( mCol0.getW() * vec.getX() ) + ( mCol1.getW() * vec.getY() ) ) + ( mCol2.getW() * vec.getZ() ) )
808
- );
809
- }
810
-
811
- inline const Vector4 Matrix4::operator *( const Point3 & pnt ) const
812
- {
813
- return Vector4(
814
- ( ( ( ( mCol0.getX() * pnt.getX() ) + ( mCol1.getX() * pnt.getY() ) ) + ( mCol2.getX() * pnt.getZ() ) ) + mCol3.getX() ),
815
- ( ( ( ( mCol0.getY() * pnt.getX() ) + ( mCol1.getY() * pnt.getY() ) ) + ( mCol2.getY() * pnt.getZ() ) ) + mCol3.getY() ),
816
- ( ( ( ( mCol0.getZ() * pnt.getX() ) + ( mCol1.getZ() * pnt.getY() ) ) + ( mCol2.getZ() * pnt.getZ() ) ) + mCol3.getZ() ),
817
- ( ( ( ( mCol0.getW() * pnt.getX() ) + ( mCol1.getW() * pnt.getY() ) ) + ( mCol2.getW() * pnt.getZ() ) ) + mCol3.getW() )
818
- );
819
- }
820
-
821
- inline const Matrix4 Matrix4::operator *( const Matrix4 & mat ) const
822
- {
823
- return Matrix4(
824
- ( *this * mat.mCol0 ),
825
- ( *this * mat.mCol1 ),
826
- ( *this * mat.mCol2 ),
827
- ( *this * mat.mCol3 )
828
- );
829
- }
830
-
831
- inline Matrix4 & Matrix4::operator *=( const Matrix4 & mat )
832
- {
833
- *this = *this * mat;
834
- return *this;
835
- }
836
-
837
- inline const Matrix4 Matrix4::operator *( const Transform3 & tfrm ) const
838
- {
839
- return Matrix4(
840
- ( *this * tfrm.getCol0() ),
841
- ( *this * tfrm.getCol1() ),
842
- ( *this * tfrm.getCol2() ),
843
- ( *this * Point3( tfrm.getCol3() ) )
844
- );
845
- }
846
-
847
- inline Matrix4 & Matrix4::operator *=( const Transform3 & tfrm )
848
- {
849
- *this = *this * tfrm;
850
- return *this;
851
- }
852
-
853
- inline const Matrix4 mulPerElem( const Matrix4 & mat0, const Matrix4 & mat1 )
854
- {
855
- return Matrix4(
856
- mulPerElem( mat0.getCol0(), mat1.getCol0() ),
857
- mulPerElem( mat0.getCol1(), mat1.getCol1() ),
858
- mulPerElem( mat0.getCol2(), mat1.getCol2() ),
859
- mulPerElem( mat0.getCol3(), mat1.getCol3() )
860
- );
861
- }
862
-
863
- inline const Matrix4 Matrix4::identity( )
864
- {
865
- return Matrix4(
866
- Vector4::xAxis( ),
867
- Vector4::yAxis( ),
868
- Vector4::zAxis( ),
869
- Vector4::wAxis( )
870
- );
871
- }
872
-
873
- inline Matrix4 & Matrix4::setUpper3x3( const Matrix3 & mat3 )
874
- {
875
- mCol0.setXYZ( mat3.getCol0() );
876
- mCol1.setXYZ( mat3.getCol1() );
877
- mCol2.setXYZ( mat3.getCol2() );
878
- return *this;
879
- }
880
-
881
- inline const Matrix3 Matrix4::getUpper3x3( ) const
882
- {
883
- return Matrix3(
884
- mCol0.getXYZ( ),
885
- mCol1.getXYZ( ),
886
- mCol2.getXYZ( )
887
- );
888
- }
889
-
890
- inline Matrix4 & Matrix4::setTranslation( const Vector3 & translateVec )
891
- {
892
- mCol3.setXYZ( translateVec );
893
- return *this;
894
- }
895
-
896
- inline const Vector3 Matrix4::getTranslation( ) const
897
- {
898
- return mCol3.getXYZ( );
899
- }
900
-
901
- inline const Matrix4 Matrix4::rotationX( float radians )
902
- {
903
- float s, c;
904
- s = sinf( radians );
905
- c = cosf( radians );
906
- return Matrix4(
907
- Vector4::xAxis( ),
908
- Vector4( 0.0f, c, s, 0.0f ),
909
- Vector4( 0.0f, -s, c, 0.0f ),
910
- Vector4::wAxis( )
911
- );
912
- }
913
-
914
- inline const Matrix4 Matrix4::rotationY( float radians )
915
- {
916
- float s, c;
917
- s = sinf( radians );
918
- c = cosf( radians );
919
- return Matrix4(
920
- Vector4( c, 0.0f, -s, 0.0f ),
921
- Vector4::yAxis( ),
922
- Vector4( s, 0.0f, c, 0.0f ),
923
- Vector4::wAxis( )
924
- );
925
- }
926
-
927
- inline const Matrix4 Matrix4::rotationZ( float radians )
928
- {
929
- float s, c;
930
- s = sinf( radians );
931
- c = cosf( radians );
932
- return Matrix4(
933
- Vector4( c, s, 0.0f, 0.0f ),
934
- Vector4( -s, c, 0.0f, 0.0f ),
935
- Vector4::zAxis( ),
936
- Vector4::wAxis( )
937
- );
938
- }
939
-
940
- inline const Matrix4 Matrix4::rotationZYX( const Vector3 & radiansXYZ )
941
- {
942
- float sX, cX, sY, cY, sZ, cZ, tmp0, tmp1;
943
- sX = sinf( radiansXYZ.getX() );
944
- cX = cosf( radiansXYZ.getX() );
945
- sY = sinf( radiansXYZ.getY() );
946
- cY = cosf( radiansXYZ.getY() );
947
- sZ = sinf( radiansXYZ.getZ() );
948
- cZ = cosf( radiansXYZ.getZ() );
949
- tmp0 = ( cZ * sY );
950
- tmp1 = ( sZ * sY );
951
- return Matrix4(
952
- Vector4( ( cZ * cY ), ( sZ * cY ), -sY, 0.0f ),
953
- Vector4( ( ( tmp0 * sX ) - ( sZ * cX ) ), ( ( tmp1 * sX ) + ( cZ * cX ) ), ( cY * sX ), 0.0f ),
954
- Vector4( ( ( tmp0 * cX ) + ( sZ * sX ) ), ( ( tmp1 * cX ) - ( cZ * sX ) ), ( cY * cX ), 0.0f ),
955
- Vector4::wAxis( )
956
- );
957
- }
958
-
959
- inline const Matrix4 Matrix4::rotation( float radians, const Vector3 & unitVec )
960
- {
961
- float x, y, z, s, c, oneMinusC, xy, yz, zx;
962
- s = sinf( radians );
963
- c = cosf( radians );
964
- x = unitVec.getX();
965
- y = unitVec.getY();
966
- z = unitVec.getZ();
967
- xy = ( x * y );
968
- yz = ( y * z );
969
- zx = ( z * x );
970
- oneMinusC = ( 1.0f - c );
971
- return Matrix4(
972
- Vector4( ( ( ( x * x ) * oneMinusC ) + c ), ( ( xy * oneMinusC ) + ( z * s ) ), ( ( zx * oneMinusC ) - ( y * s ) ), 0.0f ),
973
- Vector4( ( ( xy * oneMinusC ) - ( z * s ) ), ( ( ( y * y ) * oneMinusC ) + c ), ( ( yz * oneMinusC ) + ( x * s ) ), 0.0f ),
974
- Vector4( ( ( zx * oneMinusC ) + ( y * s ) ), ( ( yz * oneMinusC ) - ( x * s ) ), ( ( ( z * z ) * oneMinusC ) + c ), 0.0f ),
975
- Vector4::wAxis( )
976
- );
977
- }
978
-
979
- inline const Matrix4 Matrix4::rotation( const Quat & unitQuat )
980
- {
981
- return Matrix4( Transform3::rotation( unitQuat ) );
982
- }
983
-
984
- inline const Matrix4 Matrix4::scale( const Vector3 & scaleVec )
985
- {
986
- return Matrix4(
987
- Vector4( scaleVec.getX(), 0.0f, 0.0f, 0.0f ),
988
- Vector4( 0.0f, scaleVec.getY(), 0.0f, 0.0f ),
989
- Vector4( 0.0f, 0.0f, scaleVec.getZ(), 0.0f ),
990
- Vector4::wAxis( )
991
- );
992
- }
993
-
994
- inline const Matrix4 appendScale( const Matrix4 & mat, const Vector3 & scaleVec )
995
- {
996
- return Matrix4(
997
- ( mat.getCol0() * scaleVec.getX( ) ),
998
- ( mat.getCol1() * scaleVec.getY( ) ),
999
- ( mat.getCol2() * scaleVec.getZ( ) ),
1000
- mat.getCol3()
1001
- );
1002
- }
1003
-
1004
- inline const Matrix4 prependScale( const Vector3 & scaleVec, const Matrix4 & mat )
1005
- {
1006
- Vector4 scale4;
1007
- scale4 = Vector4( scaleVec, 1.0f );
1008
- return Matrix4(
1009
- mulPerElem( mat.getCol0(), scale4 ),
1010
- mulPerElem( mat.getCol1(), scale4 ),
1011
- mulPerElem( mat.getCol2(), scale4 ),
1012
- mulPerElem( mat.getCol3(), scale4 )
1013
- );
1014
- }
1015
-
1016
- inline const Matrix4 Matrix4::translation( const Vector3 & translateVec )
1017
- {
1018
- return Matrix4(
1019
- Vector4::xAxis( ),
1020
- Vector4::yAxis( ),
1021
- Vector4::zAxis( ),
1022
- Vector4( translateVec, 1.0f )
1023
- );
1024
- }
1025
-
1026
- inline const Matrix4 Matrix4::lookAt( const Point3 & eyePos, const Point3 & lookAtPos, const Vector3 & upVec )
1027
- {
1028
- Matrix4 m4EyeFrame;
1029
- Vector3 v3X, v3Y, v3Z;
1030
- v3Y = normalize( upVec );
1031
- v3Z = normalize( ( eyePos - lookAtPos ) );
1032
- v3X = normalize( cross( v3Y, v3Z ) );
1033
- v3Y = cross( v3Z, v3X );
1034
- m4EyeFrame = Matrix4( Vector4( v3X ), Vector4( v3Y ), Vector4( v3Z ), Vector4( eyePos ) );
1035
- return orthoInverse( m4EyeFrame );
1036
- }
1037
-
1038
- inline const Matrix4 Matrix4::perspective( float fovyRadians, float aspect, float zNear, float zFar )
1039
- {
1040
- float f, rangeInv;
1041
- f = tanf( ( (float)( _VECTORMATH_PI_OVER_2 ) - ( 0.5f * fovyRadians ) ) );
1042
- rangeInv = ( 1.0f / ( zNear - zFar ) );
1043
- return Matrix4(
1044
- Vector4( ( f / aspect ), 0.0f, 0.0f, 0.0f ),
1045
- Vector4( 0.0f, f, 0.0f, 0.0f ),
1046
- Vector4( 0.0f, 0.0f, ( ( zNear + zFar ) * rangeInv ), -1.0f ),
1047
- Vector4( 0.0f, 0.0f, ( ( ( zNear * zFar ) * rangeInv ) * 2.0f ), 0.0f )
1048
- );
1049
- }
1050
-
1051
- inline const Matrix4 Matrix4::frustum( float left, float right, float bottom, float top, float zNear, float zFar )
1052
- {
1053
- float sum_rl, sum_tb, sum_nf, inv_rl, inv_tb, inv_nf, n2;
1054
- sum_rl = ( right + left );
1055
- sum_tb = ( top + bottom );
1056
- sum_nf = ( zNear + zFar );
1057
- inv_rl = ( 1.0f / ( right - left ) );
1058
- inv_tb = ( 1.0f / ( top - bottom ) );
1059
- inv_nf = ( 1.0f / ( zNear - zFar ) );
1060
- n2 = ( zNear + zNear );
1061
- return Matrix4(
1062
- Vector4( ( n2 * inv_rl ), 0.0f, 0.0f, 0.0f ),
1063
- Vector4( 0.0f, ( n2 * inv_tb ), 0.0f, 0.0f ),
1064
- Vector4( ( sum_rl * inv_rl ), ( sum_tb * inv_tb ), ( sum_nf * inv_nf ), -1.0f ),
1065
- Vector4( 0.0f, 0.0f, ( ( n2 * inv_nf ) * zFar ), 0.0f )
1066
- );
1067
- }
1068
-
1069
- inline const Matrix4 Matrix4::orthographic( float left, float right, float bottom, float top, float zNear, float zFar )
1070
- {
1071
- float sum_rl, sum_tb, sum_nf, inv_rl, inv_tb, inv_nf;
1072
- sum_rl = ( right + left );
1073
- sum_tb = ( top + bottom );
1074
- sum_nf = ( zNear + zFar );
1075
- inv_rl = ( 1.0f / ( right - left ) );
1076
- inv_tb = ( 1.0f / ( top - bottom ) );
1077
- inv_nf = ( 1.0f / ( zNear - zFar ) );
1078
- return Matrix4(
1079
- Vector4( ( inv_rl + inv_rl ), 0.0f, 0.0f, 0.0f ),
1080
- Vector4( 0.0f, ( inv_tb + inv_tb ), 0.0f, 0.0f ),
1081
- Vector4( 0.0f, 0.0f, ( inv_nf + inv_nf ), 0.0f ),
1082
- Vector4( ( -sum_rl * inv_rl ), ( -sum_tb * inv_tb ), ( sum_nf * inv_nf ), 1.0f )
1083
- );
1084
- }
1085
-
1086
- inline const Matrix4 select( const Matrix4 & mat0, const Matrix4 & mat1, bool select1 )
1087
- {
1088
- return Matrix4(
1089
- select( mat0.getCol0(), mat1.getCol0(), select1 ),
1090
- select( mat0.getCol1(), mat1.getCol1(), select1 ),
1091
- select( mat0.getCol2(), mat1.getCol2(), select1 ),
1092
- select( mat0.getCol3(), mat1.getCol3(), select1 )
1093
- );
1094
- }
1095
-
1096
- #ifdef _VECTORMATH_DEBUG
1097
-
1098
- inline void print( const Matrix4 & mat )
1099
- {
1100
- print( mat.getRow( 0 ) );
1101
- print( mat.getRow( 1 ) );
1102
- print( mat.getRow( 2 ) );
1103
- print( mat.getRow( 3 ) );
1104
- }
1105
-
1106
- inline void print( const Matrix4 & mat, const char * name )
1107
- {
1108
- printf("%s:\n", name);
1109
- print( mat );
1110
- }
1111
-
1112
- #endif
1113
-
1114
- inline Transform3::Transform3( const Transform3 & tfrm )
1115
- {
1116
- mCol0 = tfrm.mCol0;
1117
- mCol1 = tfrm.mCol1;
1118
- mCol2 = tfrm.mCol2;
1119
- mCol3 = tfrm.mCol3;
1120
- }
1121
-
1122
- inline Transform3::Transform3( float scalar )
1123
- {
1124
- mCol0 = Vector3( scalar );
1125
- mCol1 = Vector3( scalar );
1126
- mCol2 = Vector3( scalar );
1127
- mCol3 = Vector3( scalar );
1128
- }
1129
-
1130
- inline Transform3::Transform3( const Vector3 & _col0, const Vector3 & _col1, const Vector3 & _col2, const Vector3 & _col3 )
1131
- {
1132
- mCol0 = _col0;
1133
- mCol1 = _col1;
1134
- mCol2 = _col2;
1135
- mCol3 = _col3;
1136
- }
1137
-
1138
- inline Transform3::Transform3( const Matrix3 & tfrm, const Vector3 & translateVec )
1139
- {
1140
- this->setUpper3x3( tfrm );
1141
- this->setTranslation( translateVec );
1142
- }
1143
-
1144
- inline Transform3::Transform3( const Quat & unitQuat, const Vector3 & translateVec )
1145
- {
1146
- this->setUpper3x3( Matrix3( unitQuat ) );
1147
- this->setTranslation( translateVec );
1148
- }
1149
-
1150
- inline Transform3 & Transform3::setCol0( const Vector3 & _col0 )
1151
- {
1152
- mCol0 = _col0;
1153
- return *this;
1154
- }
1155
-
1156
- inline Transform3 & Transform3::setCol1( const Vector3 & _col1 )
1157
- {
1158
- mCol1 = _col1;
1159
- return *this;
1160
- }
1161
-
1162
- inline Transform3 & Transform3::setCol2( const Vector3 & _col2 )
1163
- {
1164
- mCol2 = _col2;
1165
- return *this;
1166
- }
1167
-
1168
- inline Transform3 & Transform3::setCol3( const Vector3 & _col3 )
1169
- {
1170
- mCol3 = _col3;
1171
- return *this;
1172
- }
1173
-
1174
- inline Transform3 & Transform3::setCol( int col, const Vector3 & vec )
1175
- {
1176
- *(&mCol0 + col) = vec;
1177
- return *this;
1178
- }
1179
-
1180
- inline Transform3 & Transform3::setRow( int row, const Vector4 & vec )
1181
- {
1182
- mCol0.setElem( row, vec.getElem( 0 ) );
1183
- mCol1.setElem( row, vec.getElem( 1 ) );
1184
- mCol2.setElem( row, vec.getElem( 2 ) );
1185
- mCol3.setElem( row, vec.getElem( 3 ) );
1186
- return *this;
1187
- }
1188
-
1189
- inline Transform3 & Transform3::setElem( int col, int row, float val )
1190
- {
1191
- Vector3 tmpV3_0;
1192
- tmpV3_0 = this->getCol( col );
1193
- tmpV3_0.setElem( row, val );
1194
- this->setCol( col, tmpV3_0 );
1195
- return *this;
1196
- }
1197
-
1198
- inline float Transform3::getElem( int col, int row ) const
1199
- {
1200
- return this->getCol( col ).getElem( row );
1201
- }
1202
-
1203
- inline const Vector3 Transform3::getCol0( ) const
1204
- {
1205
- return mCol0;
1206
- }
1207
-
1208
- inline const Vector3 Transform3::getCol1( ) const
1209
- {
1210
- return mCol1;
1211
- }
1212
-
1213
- inline const Vector3 Transform3::getCol2( ) const
1214
- {
1215
- return mCol2;
1216
- }
1217
-
1218
- inline const Vector3 Transform3::getCol3( ) const
1219
- {
1220
- return mCol3;
1221
- }
1222
-
1223
- inline const Vector3 Transform3::getCol( int col ) const
1224
- {
1225
- return *(&mCol0 + col);
1226
- }
1227
-
1228
- inline const Vector4 Transform3::getRow( int row ) const
1229
- {
1230
- return Vector4( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ), mCol3.getElem( row ) );
1231
- }
1232
-
1233
- inline Vector3 & Transform3::operator []( int col )
1234
- {
1235
- return *(&mCol0 + col);
1236
- }
1237
-
1238
- inline const Vector3 Transform3::operator []( int col ) const
1239
- {
1240
- return *(&mCol0 + col);
1241
- }
1242
-
1243
- inline Transform3 & Transform3::operator =( const Transform3 & tfrm )
1244
- {
1245
- mCol0 = tfrm.mCol0;
1246
- mCol1 = tfrm.mCol1;
1247
- mCol2 = tfrm.mCol2;
1248
- mCol3 = tfrm.mCol3;
1249
- return *this;
1250
- }
1251
-
1252
- inline const Transform3 inverse( const Transform3 & tfrm )
1253
- {
1254
- Vector3 tmp0, tmp1, tmp2, inv0, inv1, inv2;
1255
- float detinv;
1256
- tmp0 = cross( tfrm.getCol1(), tfrm.getCol2() );
1257
- tmp1 = cross( tfrm.getCol2(), tfrm.getCol0() );
1258
- tmp2 = cross( tfrm.getCol0(), tfrm.getCol1() );
1259
- detinv = ( 1.0f / dot( tfrm.getCol2(), tmp2 ) );
1260
- inv0 = Vector3( ( tmp0.getX() * detinv ), ( tmp1.getX() * detinv ), ( tmp2.getX() * detinv ) );
1261
- inv1 = Vector3( ( tmp0.getY() * detinv ), ( tmp1.getY() * detinv ), ( tmp2.getY() * detinv ) );
1262
- inv2 = Vector3( ( tmp0.getZ() * detinv ), ( tmp1.getZ() * detinv ), ( tmp2.getZ() * detinv ) );
1263
- return Transform3(
1264
- inv0,
1265
- inv1,
1266
- inv2,
1267
- Vector3( ( -( ( inv0 * tfrm.getCol3().getX() ) + ( ( inv1 * tfrm.getCol3().getY() ) + ( inv2 * tfrm.getCol3().getZ() ) ) ) ) )
1268
- );
1269
- }
1270
-
1271
- inline const Transform3 orthoInverse( const Transform3 & tfrm )
1272
- {
1273
- Vector3 inv0, inv1, inv2;
1274
- inv0 = Vector3( tfrm.getCol0().getX(), tfrm.getCol1().getX(), tfrm.getCol2().getX() );
1275
- inv1 = Vector3( tfrm.getCol0().getY(), tfrm.getCol1().getY(), tfrm.getCol2().getY() );
1276
- inv2 = Vector3( tfrm.getCol0().getZ(), tfrm.getCol1().getZ(), tfrm.getCol2().getZ() );
1277
- return Transform3(
1278
- inv0,
1279
- inv1,
1280
- inv2,
1281
- Vector3( ( -( ( inv0 * tfrm.getCol3().getX() ) + ( ( inv1 * tfrm.getCol3().getY() ) + ( inv2 * tfrm.getCol3().getZ() ) ) ) ) )
1282
- );
1283
- }
1284
-
1285
- inline const Transform3 absPerElem( const Transform3 & tfrm )
1286
- {
1287
- return Transform3(
1288
- absPerElem( tfrm.getCol0() ),
1289
- absPerElem( tfrm.getCol1() ),
1290
- absPerElem( tfrm.getCol2() ),
1291
- absPerElem( tfrm.getCol3() )
1292
- );
1293
- }
1294
-
1295
- inline const Vector3 Transform3::operator *( const Vector3 & vec ) const
1296
- {
1297
- return Vector3(
1298
- ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ),
1299
- ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ),
1300
- ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) )
1301
- );
1302
- }
1303
-
1304
- inline const Point3 Transform3::operator *( const Point3 & pnt ) const
1305
- {
1306
- return Point3(
1307
- ( ( ( ( mCol0.getX() * pnt.getX() ) + ( mCol1.getX() * pnt.getY() ) ) + ( mCol2.getX() * pnt.getZ() ) ) + mCol3.getX() ),
1308
- ( ( ( ( mCol0.getY() * pnt.getX() ) + ( mCol1.getY() * pnt.getY() ) ) + ( mCol2.getY() * pnt.getZ() ) ) + mCol3.getY() ),
1309
- ( ( ( ( mCol0.getZ() * pnt.getX() ) + ( mCol1.getZ() * pnt.getY() ) ) + ( mCol2.getZ() * pnt.getZ() ) ) + mCol3.getZ() )
1310
- );
1311
- }
1312
-
1313
- inline const Transform3 Transform3::operator *( const Transform3 & tfrm ) const
1314
- {
1315
- return Transform3(
1316
- ( *this * tfrm.mCol0 ),
1317
- ( *this * tfrm.mCol1 ),
1318
- ( *this * tfrm.mCol2 ),
1319
- Vector3( ( *this * Point3( tfrm.mCol3 ) ) )
1320
- );
1321
- }
1322
-
1323
- inline Transform3 & Transform3::operator *=( const Transform3 & tfrm )
1324
- {
1325
- *this = *this * tfrm;
1326
- return *this;
1327
- }
1328
-
1329
- inline const Transform3 mulPerElem( const Transform3 & tfrm0, const Transform3 & tfrm1 )
1330
- {
1331
- return Transform3(
1332
- mulPerElem( tfrm0.getCol0(), tfrm1.getCol0() ),
1333
- mulPerElem( tfrm0.getCol1(), tfrm1.getCol1() ),
1334
- mulPerElem( tfrm0.getCol2(), tfrm1.getCol2() ),
1335
- mulPerElem( tfrm0.getCol3(), tfrm1.getCol3() )
1336
- );
1337
- }
1338
-
1339
- inline const Transform3 Transform3::identity( )
1340
- {
1341
- return Transform3(
1342
- Vector3::xAxis( ),
1343
- Vector3::yAxis( ),
1344
- Vector3::zAxis( ),
1345
- Vector3( 0.0f )
1346
- );
1347
- }
1348
-
1349
- inline Transform3 & Transform3::setUpper3x3( const Matrix3 & tfrm )
1350
- {
1351
- mCol0 = tfrm.getCol0();
1352
- mCol1 = tfrm.getCol1();
1353
- mCol2 = tfrm.getCol2();
1354
- return *this;
1355
- }
1356
-
1357
- inline const Matrix3 Transform3::getUpper3x3( ) const
1358
- {
1359
- return Matrix3( mCol0, mCol1, mCol2 );
1360
- }
1361
-
1362
- inline Transform3 & Transform3::setTranslation( const Vector3 & translateVec )
1363
- {
1364
- mCol3 = translateVec;
1365
- return *this;
1366
- }
1367
-
1368
- inline const Vector3 Transform3::getTranslation( ) const
1369
- {
1370
- return mCol3;
1371
- }
1372
-
1373
- inline const Transform3 Transform3::rotationX( float radians )
1374
- {
1375
- float s, c;
1376
- s = sinf( radians );
1377
- c = cosf( radians );
1378
- return Transform3(
1379
- Vector3::xAxis( ),
1380
- Vector3( 0.0f, c, s ),
1381
- Vector3( 0.0f, -s, c ),
1382
- Vector3( 0.0f )
1383
- );
1384
- }
1385
-
1386
- inline const Transform3 Transform3::rotationY( float radians )
1387
- {
1388
- float s, c;
1389
- s = sinf( radians );
1390
- c = cosf( radians );
1391
- return Transform3(
1392
- Vector3( c, 0.0f, -s ),
1393
- Vector3::yAxis( ),
1394
- Vector3( s, 0.0f, c ),
1395
- Vector3( 0.0f )
1396
- );
1397
- }
1398
-
1399
- inline const Transform3 Transform3::rotationZ( float radians )
1400
- {
1401
- float s, c;
1402
- s = sinf( radians );
1403
- c = cosf( radians );
1404
- return Transform3(
1405
- Vector3( c, s, 0.0f ),
1406
- Vector3( -s, c, 0.0f ),
1407
- Vector3::zAxis( ),
1408
- Vector3( 0.0f )
1409
- );
1410
- }
1411
-
1412
- inline const Transform3 Transform3::rotationZYX( const Vector3 & radiansXYZ )
1413
- {
1414
- float sX, cX, sY, cY, sZ, cZ, tmp0, tmp1;
1415
- sX = sinf( radiansXYZ.getX() );
1416
- cX = cosf( radiansXYZ.getX() );
1417
- sY = sinf( radiansXYZ.getY() );
1418
- cY = cosf( radiansXYZ.getY() );
1419
- sZ = sinf( radiansXYZ.getZ() );
1420
- cZ = cosf( radiansXYZ.getZ() );
1421
- tmp0 = ( cZ * sY );
1422
- tmp1 = ( sZ * sY );
1423
- return Transform3(
1424
- Vector3( ( cZ * cY ), ( sZ * cY ), -sY ),
1425
- Vector3( ( ( tmp0 * sX ) - ( sZ * cX ) ), ( ( tmp1 * sX ) + ( cZ * cX ) ), ( cY * sX ) ),
1426
- Vector3( ( ( tmp0 * cX ) + ( sZ * sX ) ), ( ( tmp1 * cX ) - ( cZ * sX ) ), ( cY * cX ) ),
1427
- Vector3( 0.0f )
1428
- );
1429
- }
1430
-
1431
- inline const Transform3 Transform3::rotation( float radians, const Vector3 & unitVec )
1432
- {
1433
- return Transform3( Matrix3::rotation( radians, unitVec ), Vector3( 0.0f ) );
1434
- }
1435
-
1436
- inline const Transform3 Transform3::rotation( const Quat & unitQuat )
1437
- {
1438
- return Transform3( Matrix3( unitQuat ), Vector3( 0.0f ) );
1439
- }
1440
-
1441
- inline const Transform3 Transform3::scale( const Vector3 & scaleVec )
1442
- {
1443
- return Transform3(
1444
- Vector3( scaleVec.getX(), 0.0f, 0.0f ),
1445
- Vector3( 0.0f, scaleVec.getY(), 0.0f ),
1446
- Vector3( 0.0f, 0.0f, scaleVec.getZ() ),
1447
- Vector3( 0.0f )
1448
- );
1449
- }
1450
-
1451
- inline const Transform3 appendScale( const Transform3 & tfrm, const Vector3 & scaleVec )
1452
- {
1453
- return Transform3(
1454
- ( tfrm.getCol0() * scaleVec.getX( ) ),
1455
- ( tfrm.getCol1() * scaleVec.getY( ) ),
1456
- ( tfrm.getCol2() * scaleVec.getZ( ) ),
1457
- tfrm.getCol3()
1458
- );
1459
- }
1460
-
1461
- inline const Transform3 prependScale( const Vector3 & scaleVec, const Transform3 & tfrm )
1462
- {
1463
- return Transform3(
1464
- mulPerElem( tfrm.getCol0(), scaleVec ),
1465
- mulPerElem( tfrm.getCol1(), scaleVec ),
1466
- mulPerElem( tfrm.getCol2(), scaleVec ),
1467
- mulPerElem( tfrm.getCol3(), scaleVec )
1468
- );
1469
- }
1470
-
1471
- inline const Transform3 Transform3::translation( const Vector3 & translateVec )
1472
- {
1473
- return Transform3(
1474
- Vector3::xAxis( ),
1475
- Vector3::yAxis( ),
1476
- Vector3::zAxis( ),
1477
- translateVec
1478
- );
1479
- }
1480
-
1481
- inline const Transform3 select( const Transform3 & tfrm0, const Transform3 & tfrm1, bool select1 )
1482
- {
1483
- return Transform3(
1484
- select( tfrm0.getCol0(), tfrm1.getCol0(), select1 ),
1485
- select( tfrm0.getCol1(), tfrm1.getCol1(), select1 ),
1486
- select( tfrm0.getCol2(), tfrm1.getCol2(), select1 ),
1487
- select( tfrm0.getCol3(), tfrm1.getCol3(), select1 )
1488
- );
1489
- }
1490
-
1491
- #ifdef _VECTORMATH_DEBUG
1492
-
1493
- inline void print( const Transform3 & tfrm )
1494
- {
1495
- print( tfrm.getRow( 0 ) );
1496
- print( tfrm.getRow( 1 ) );
1497
- print( tfrm.getRow( 2 ) );
1498
- }
1499
-
1500
- inline void print( const Transform3 & tfrm, const char * name )
1501
- {
1502
- printf("%s:\n", name);
1503
- print( tfrm );
1504
- }
1505
-
1506
- #endif
1507
-
1508
- inline Quat::Quat( const Matrix3 & tfrm )
1509
- {
1510
- float trace, radicand, scale, xx, yx, zx, xy, yy, zy, xz, yz, zz, tmpx, tmpy, tmpz, tmpw, qx, qy, qz, qw;
1511
- int negTrace, ZgtX, ZgtY, YgtX;
1512
- int largestXorY, largestYorZ, largestZorX;
1513
-
1514
- xx = tfrm.getCol0().getX();
1515
- yx = tfrm.getCol0().getY();
1516
- zx = tfrm.getCol0().getZ();
1517
- xy = tfrm.getCol1().getX();
1518
- yy = tfrm.getCol1().getY();
1519
- zy = tfrm.getCol1().getZ();
1520
- xz = tfrm.getCol2().getX();
1521
- yz = tfrm.getCol2().getY();
1522
- zz = tfrm.getCol2().getZ();
1523
-
1524
- trace = ( ( xx + yy ) + zz );
1525
-
1526
- negTrace = ( trace < 0.0f );
1527
- ZgtX = zz > xx;
1528
- ZgtY = zz > yy;
1529
- YgtX = yy > xx;
1530
- largestXorY = ( !ZgtX || !ZgtY ) && negTrace;
1531
- largestYorZ = ( YgtX || ZgtX ) && negTrace;
1532
- largestZorX = ( ZgtY || !YgtX ) && negTrace;
1533
-
1534
- if ( largestXorY )
1535
- {
1536
- zz = -zz;
1537
- xy = -xy;
1538
- }
1539
- if ( largestYorZ )
1540
- {
1541
- xx = -xx;
1542
- yz = -yz;
1543
- }
1544
- if ( largestZorX )
1545
- {
1546
- yy = -yy;
1547
- zx = -zx;
1548
- }
1549
-
1550
- radicand = ( ( ( xx + yy ) + zz ) + 1.0f );
1551
- scale = ( 0.5f * ( 1.0f / sqrtf( radicand ) ) );
1552
-
1553
- tmpx = ( ( zy - yz ) * scale );
1554
- tmpy = ( ( xz - zx ) * scale );
1555
- tmpz = ( ( yx - xy ) * scale );
1556
- tmpw = ( radicand * scale );
1557
- qx = tmpx;
1558
- qy = tmpy;
1559
- qz = tmpz;
1560
- qw = tmpw;
1561
-
1562
- if ( largestXorY )
1563
- {
1564
- qx = tmpw;
1565
- qy = tmpz;
1566
- qz = tmpy;
1567
- qw = tmpx;
1568
- }
1569
- if ( largestYorZ )
1570
- {
1571
- tmpx = qx;
1572
- tmpz = qz;
1573
- qx = qy;
1574
- qy = tmpx;
1575
- qz = qw;
1576
- qw = tmpz;
1577
- }
1578
-
1579
- mX = qx;
1580
- mY = qy;
1581
- mZ = qz;
1582
- mW = qw;
1583
- }
1584
-
1585
- inline const Matrix3 outer( const Vector3 & tfrm0, const Vector3 & tfrm1 )
1586
- {
1587
- return Matrix3(
1588
- ( tfrm0 * tfrm1.getX( ) ),
1589
- ( tfrm0 * tfrm1.getY( ) ),
1590
- ( tfrm0 * tfrm1.getZ( ) )
1591
- );
1592
- }
1593
-
1594
- inline const Matrix4 outer( const Vector4 & tfrm0, const Vector4 & tfrm1 )
1595
- {
1596
- return Matrix4(
1597
- ( tfrm0 * tfrm1.getX( ) ),
1598
- ( tfrm0 * tfrm1.getY( ) ),
1599
- ( tfrm0 * tfrm1.getZ( ) ),
1600
- ( tfrm0 * tfrm1.getW( ) )
1601
- );
1602
- }
1603
-
1604
- inline const Vector3 rowMul( const Vector3 & vec, const Matrix3 & mat )
1605
- {
1606
- return Vector3(
1607
- ( ( ( vec.getX() * mat.getCol0().getX() ) + ( vec.getY() * mat.getCol0().getY() ) ) + ( vec.getZ() * mat.getCol0().getZ() ) ),
1608
- ( ( ( vec.getX() * mat.getCol1().getX() ) + ( vec.getY() * mat.getCol1().getY() ) ) + ( vec.getZ() * mat.getCol1().getZ() ) ),
1609
- ( ( ( vec.getX() * mat.getCol2().getX() ) + ( vec.getY() * mat.getCol2().getY() ) ) + ( vec.getZ() * mat.getCol2().getZ() ) )
1610
- );
1611
- }
1612
-
1613
- inline const Matrix3 crossMatrix( const Vector3 & vec )
1614
- {
1615
- return Matrix3(
1616
- Vector3( 0.0f, vec.getZ(), -vec.getY() ),
1617
- Vector3( -vec.getZ(), 0.0f, vec.getX() ),
1618
- Vector3( vec.getY(), -vec.getX(), 0.0f )
1619
- );
1620
- }
1621
-
1622
- inline const Matrix3 crossMatrixMul( const Vector3 & vec, const Matrix3 & mat )
1623
- {
1624
- return Matrix3( cross( vec, mat.getCol0() ), cross( vec, mat.getCol1() ), cross( vec, mat.getCol2() ) );
1625
- }
1626
-
1627
- } // namespace Aos
1628
- } // namespace Vectormath
1629
-
1630
- #endif