3 template<
typename genType>
4 GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType
identity()
9 template<
typename T, qualifier Q>
13 Result[3] = m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3];
17 template<
typename T, qualifier Q>
18 GLM_FUNC_QUALIFIER
mat<4, 4, T, Q> rotate(
mat<4, 4, T, Q> const& m, T
angle,
vec<3, T, Q> const& v)
28 Rotate[0][0] = c + temp[0] *
axis[0];
29 Rotate[0][1] = temp[0] *
axis[1] + s *
axis[2];
30 Rotate[0][2] = temp[0] *
axis[2] - s *
axis[1];
32 Rotate[1][0] = temp[1] *
axis[0] - s *
axis[2];
33 Rotate[1][1] = c + temp[1] *
axis[1];
34 Rotate[1][2] = temp[1] *
axis[2] + s *
axis[0];
36 Rotate[2][0] = temp[2] *
axis[0] + s *
axis[1];
37 Rotate[2][1] = temp[2] *
axis[1] - s *
axis[0];
38 Rotate[2][2] = c + temp[2] *
axis[2];
41 Result[0] = m[0] * Rotate[0][0] + m[1] * Rotate[0][1] + m[2] * Rotate[0][2];
42 Result[1] = m[0] * Rotate[1][0] + m[1] * Rotate[1][1] + m[2] * Rotate[1][2];
43 Result[2] = m[0] * Rotate[2][0] + m[1] * Rotate[2][1] + m[2] * Rotate[2][2];
48 template<
typename T, qualifier Q>
49 GLM_FUNC_QUALIFIER mat<4, 4, T, Q> rotate_slow(mat<4, 4, T, Q>
const& m, T
angle, vec<3, T, Q>
const& v)
54 mat<4, 4, T, Q> Result;
58 Result[0][0] = c + (
static_cast<T
>(1) - c) *
axis.x *
axis.x;
59 Result[0][1] = (
static_cast<T
>(1) - c) *
axis.x *
axis.y + s *
axis.z;
60 Result[0][2] = (
static_cast<T
>(1) - c) *
axis.x *
axis.z - s *
axis.y;
61 Result[0][3] =
static_cast<T
>(0);
63 Result[1][0] = (
static_cast<T
>(1) - c) *
axis.y *
axis.x - s *
axis.z;
64 Result[1][1] = c + (
static_cast<T
>(1) - c) *
axis.y *
axis.y;
65 Result[1][2] = (
static_cast<T
>(1) - c) *
axis.y *
axis.z + s *
axis.x;
66 Result[1][3] =
static_cast<T
>(0);
68 Result[2][0] = (
static_cast<T
>(1) - c) *
axis.z *
axis.x + s *
axis.y;
69 Result[2][1] = (
static_cast<T
>(1) - c) *
axis.z *
axis.y - s *
axis.x;
70 Result[2][2] = c + (
static_cast<T
>(1) - c) *
axis.z *
axis.z;
71 Result[2][3] =
static_cast<T
>(0);
73 Result[3] = vec<4, T, Q>(0, 0, 0, 1);
77 template<
typename T, qualifier Q>
81 Result[0] = m[0] * v[0];
82 Result[1] = m[1] * v[1];
83 Result[2] = m[2] * v[2];
88 template<
typename T, qualifier Q>
89 GLM_FUNC_QUALIFIER mat<4, 4, T, Q> scale_slow(mat<4, 4, T, Q>
const& m, vec<3, T, Q>
const& v)
91 mat<4, 4, T, Q> Result(T(1));
98 template<
typename T, qualifier Q>
99 GLM_FUNC_QUALIFIER
mat<4, 4, T, Q> lookAtRH(
vec<3, T, Q> const& eye,
vec<3, T, Q> const& center,
vec<3, T, Q> const& up)
115 Result[3][0] =-dot(s, eye);
116 Result[3][1] =-dot(u, eye);
117 Result[3][2] = dot(f, eye);
121 template<
typename T, qualifier Q>
122 GLM_FUNC_QUALIFIER
mat<4, 4, T, Q> lookAtLH(
vec<3, T, Q> const& eye,
vec<3, T, Q> const& center,
vec<3, T, Q> const& up)
138 Result[3][0] = -dot(s, eye);
139 Result[3][1] = -dot(u, eye);
140 Result[3][2] = -dot(f, eye);
144 template<
typename T, qualifier Q>
145 GLM_FUNC_QUALIFIER
mat<4, 4, T, Q> lookAt(
vec<3, T, Q> const& eye,
vec<3, T, Q> const& center,
vec<3, T, Q> const& up)
147 GLM_IF_CONSTEXPR(GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT)
GLM_FUNC_QUALIFIER vec< L, T, Q > normalize(vec< L, T, Q > const &x)
Definition func_geometric.inl:190
GLM_FUNC_QUALIFIER vec< 3, T, Q > cross(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
Definition func_geometric.inl:175
GLM_FUNC_QUALIFIER vec< L, T, Q > sin(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:41
GLM_FUNC_QUALIFIER vec< L, T, Q > cos(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:50
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Definition quaternion_trigonometric.inl:6
GLM_FUNC_DECL vec< 3, T, Q > axis(qua< T, Q > const &x)
Definition quaternion_trigonometric.inl:17
Core features
Definition common.hpp:21
Definition qualifier.hpp:209
Definition qualifier.hpp:36
Definition qualifier.hpp:35