blob: b43d887aab2bf4d29a0353684cc85ada3c22d1a1 [file] [log] [blame]
Tony-LunarGb0b195d2015-05-13 15:01:06 -06001///////////////////////////////////////////////////////////////////////////////////////////////////
2// OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net)
3///////////////////////////////////////////////////////////////////////////////////////////////////
4// Created : 2006-04-21
5// Updated : 2006-12-06
6// Licence : This source is under MIT License
7// File : glm/gtx/inertia.inl
8///////////////////////////////////////////////////////////////////////////////////////////////////
9
10namespace glm
11{
12/*
13 template <typename T>
14 GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> boxInertia3
15 (
16 T const & Mass,
17 detail::tvec3<T, P> const & Scale
18 )
19 {
20 detail::tmat3x3<T, P> Result(T(1));
21 Result[0][0] = (Scale.y * Scale.y + Scale.z * Scale.z) * Mass / T(12);
22 Result[1][1] = (Scale.x * Scale.x + Scale.z * Scale.z) * Mass / T(12);
23 Result[2][2] = (Scale.x * Scale.x + Scale.y * Scale.y) * Mass / T(12);
24 return Result;
25 }
26
27 template <typename T>
28 GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> boxInertia4
29 (
30 T const & Mass,
31 detail::tvec3<T, P> const & Scale
32 )
33 {
34 detail::tmat4x4<T, P> Result(T(1));
35 Result[0][0] = (Scale.y * Scale.y + Scale.z * Scale.z) * Mass / T(12);
36 Result[1][1] = (Scale.x * Scale.x + Scale.z * Scale.z) * Mass / T(12);
37 Result[2][2] = (Scale.x * Scale.x + Scale.y * Scale.y) * Mass / T(12);
38 return Result;
39 }
40
41 template <typename T>
42 GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> diskInertia3
43 (
44 T const & Mass,
45 T const & Radius
46 )
47 {
48 T a = Mass * Radius * Radius / T(2);
49 detail::tmat3x3<T, P> Result(a);
50 Result[2][2] *= static_cast<T>(2);
51 return Result;
52 }
53
54 template <typename T>
55 GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> diskInertia4
56 (
57 T const & Mass,
58 T const & Radius
59 )
60 {
61 T a = Mass * Radius * Radius / T(2);
62 detail::tmat4x4<T, P> Result(a);
63 Result[2][2] *= static_cast<T>(2);
64 Result[3][3] = static_cast<T>(1);
65 return Result;
66 }
67
68 template <typename T>
69 GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> ballInertia3
70 (
71 T const & Mass,
72 T const & Radius
73 )
74 {
75 T a = static_cast<T>(2) * Mass * Radius * Radius / T(5);
76 return detail::tmat3x3<T, P>(a);
77 }
78
79 template <typename T>
80 GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> ballInertia4
81 (
82 T const & Mass,
83 T const & Radius
84 )
85 {
86 T a = static_cast<T>(2) * Mass * Radius * Radius / T(5);
87 detail::tmat4x4<T, P> Result(a);
88 Result[3][3] = static_cast<T>(1);
89 return Result;
90 }
91
92 template <typename T>
93 GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> sphereInertia3
94 (
95 T const & Mass,
96 T const & Radius
97 )
98 {
99 T a = static_cast<T>(2) * Mass * Radius * Radius / T(3);
100 return detail::tmat3x3<T, P>(a);
101 }
102
103 template <typename T>
104 GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> sphereInertia4
105 (
106 T const & Mass,
107 T const & Radius
108 )
109 {
110 T a = static_cast<T>(2) * Mass * Radius * Radius / T(3);
111 detail::tmat4x4<T, P> Result(a);
112 Result[3][3] = static_cast<T>(1);
113 return Result;
114 }
115 */
116}//namespace glm