master
ブランチ master
VulkanExample / dep / include / glm / gtx / transform2.hpp
3.4 KB、93行 生 Blame 履歴
1/// @ref gtx_transform2
2/// @file glm/gtx/transform2.hpp
3///
4/// @see core (dependence)
5/// @see gtx_transform (dependence)
6///
7/// @defgroup gtx_transform2 GLM_GTX_transform2
8/// @ingroup gtx
9///
10/// Include <glm/gtx/transform2.hpp> to use the features of this extension.
11///
12/// Add extra transformation matrices
13
14#pragma once
15
16// Dependency:
17#include "../glm.hpp"
18#include "../gtx/transform.hpp"
19
20#ifndef GLM_ENABLE_EXPERIMENTAL
21# error "GLM: GLM_GTX_transform2 is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
22#elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
23# pragma message("GLM: GLM_GTX_transform2 extension included")
24#endif
25
26namespace glm
27{
28 /// @addtogroup gtx_transform2
29 /// @{
30
31 //! Transforms a matrix with a shearing on X axis.
32 //! From GLM_GTX_transform2 extension.
33 template<typename T, qualifier Q>
34 GLM_FUNC_DECL mat<3, 3, T, Q> shearX2D(mat<3, 3, T, Q> const& m, T y);
35
36 //! Transforms a matrix with a shearing on Y axis.
37 //! From GLM_GTX_transform2 extension.
38 template<typename T, qualifier Q>
39 GLM_FUNC_DECL mat<3, 3, T, Q> shearY2D(mat<3, 3, T, Q> const& m, T x);
40
41 //! Transforms a matrix with a shearing on X axis
42 //! From GLM_GTX_transform2 extension.
43 template<typename T, qualifier Q>
44 GLM_FUNC_DECL mat<4, 4, T, Q> shearX3D(mat<4, 4, T, Q> const& m, T y, T z);
45
46 //! Transforms a matrix with a shearing on Y axis.
47 //! From GLM_GTX_transform2 extension.
48 template<typename T, qualifier Q>
49 GLM_FUNC_DECL mat<4, 4, T, Q> shearY3D(mat<4, 4, T, Q> const& m, T x, T z);
50
51 //! Transforms a matrix with a shearing on Z axis.
52 //! From GLM_GTX_transform2 extension.
53 template<typename T, qualifier Q>
54 GLM_FUNC_DECL mat<4, 4, T, Q> shearZ3D(mat<4, 4, T, Q> const& m, T x, T y);
55
56 //template<typename T> GLM_FUNC_QUALIFIER mat<4, 4, T, Q> shear(const mat<4, 4, T, Q> & m, shearPlane, planePoint, angle)
57 // Identity + tan(angle) * cross(Normal, OnPlaneVector) 0
58 // - dot(PointOnPlane, normal) * OnPlaneVector 1
59
60 //! Reflects a matrix on an arbitrary plane.
61 //! From GLM_GTX_transform2 extension.
62 template<typename T, qualifier Q>
63 GLM_FUNC_DECL mat<3, 3, T, Q> reflect2D(mat<3, 3, T, Q> const& m, vec<2, T, Q> const& normal, T distance);
64
65 //! Reflects a matrix on an arbitrary plane.
66 //! From GLM_GTX_transform2 extension.
67 template<typename T, qualifier Q>
68 GLM_FUNC_DECL mat<4, 4, T, Q> reflect3D(mat<4, 4, T, Q> const& m, vec<3, T, Q> const& normal, T distance);
69
70 //! Build planar projection matrix along normal axis.
71 //! From GLM_GTX_transform2 extension.
72 template<typename T, qualifier Q>
73 GLM_FUNC_DECL mat<3, 3, T, Q> proj2D(mat<3, 3, T, Q> const& m, vec<3, T, Q> const& normal);
74
75 //! Build planar projection matrix along normal axis.
76 //! From GLM_GTX_transform2 extension.
77 template<typename T, qualifier Q>
78 GLM_FUNC_DECL mat<4, 4, T, Q> proj3D(mat<4, 4, T, Q> const & m, vec<3, T, Q> const& normal);
79
80 //! Build a scale bias matrix.
81 //! From GLM_GTX_transform2 extension.
82 template<typename T, qualifier Q>
83 GLM_FUNC_DECL mat<4, 4, T, Q> scaleBias(T scale, T bias);
84
85 //! Build a scale bias matrix.
86 //! From GLM_GTX_transform2 extension.
87 template<typename T, qualifier Q>
88 GLM_FUNC_DECL mat<4, 4, T, Q> scaleBias(mat<4, 4, T, Q> const& m, T scale, T bias);
89
90 /// @}
91}// namespace glm
92
93#include "transform2.inl"