MassData.hpp
Go to the documentation of this file.
1 /*
2  * Original work Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
3  * Modified work Copyright (c) 2017 Louis Langholtz https://github.com/louis-langholtz/PlayRho
4  *
5  * This software is provided 'as-is', without any express or implied
6  * warranty. In no event will the authors be held liable for any damages
7  * arising from the use of this software.
8  *
9  * Permission is granted to anyone to use this software for any purpose,
10  * including commercial applications, and to alter it and redistribute it
11  * freely, subject to the following restrictions:
12  *
13  * 1. The origin of this software must not be misrepresented; you must not
14  * claim that you wrote the original software. If you use this software
15  * in a product, an acknowledgment in the product documentation would be
16  * appreciated but is not required.
17  * 2. Altered source versions must be plainly marked as such, and must not be
18  * misrepresented as being the original software.
19  * 3. This notice may not be removed or altered from any source distribution.
20  */
21 
22 #ifndef PLAYRHO_COLLISION_MASSDATA_HPP
23 #define PLAYRHO_COLLISION_MASSDATA_HPP
24 
27 
28 #include <PlayRho/Common/Math.hpp>
30 
31 namespace playrho {
32 namespace detail {
33 
36 template <std::size_t N>
37 struct MassData
38 {
41 
44 
49 };
50 
51 // Free functions...
52 
55 template <std::size_t N>
57 {
58  return lhs.center == rhs.center && lhs.mass == rhs.mass && lhs.I == rhs.I;
59 }
60 
63 template <std::size_t N>
65 {
66  return !(lhs == rhs);
67 }
68 } // namespace detail
69 
70 namespace d2 {
71 
72 class Fixture;
73 class Body;
74 
78 
86 
95 
99  Span<const Length2> vertices);
100 
112 MassData GetMassData(const Fixture& f);
113 
120 MassData ComputeMassData(const Body& body) noexcept;
121 
122 
126 MassData GetMassData(const Body& body) noexcept;
127 
128 } // namespace d2
129 } // namespace playrho
130 
131 #endif // PLAYRHO_COLLISION_MASSDATA_HPP