2.2 KB、53行 生 Blame 履歴
1/// @ref ext_quaternion_float_precision
2/// @file glm/ext/quaternion_float_precision.hpp
3///
4/// @defgroup ext_quaternion_float_precision GLM_EXT_quaternion_float_precision
5/// @ingroup ext
6///
7/// Exposes single-precision floating point quaternion type with various precision in term of ULPs.
8///
9/// Include <glm/ext/quaternion_float_precision.hpp> to use the features of this extension.
10
11#pragma once
12
13// Dependency:
14#include "../detail/type_quat.hpp"
15
16#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
17# pragma message("GLM: GLM_EXT_quaternion_float_precision extension included")
18#endif
19
20namespace glm
21{
22 /// @addtogroup ext_quaternion_float_precision
23 /// @{
24
25 /// Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
26 typedef qua<float, lowp> lowp_quat;
27
28 /// Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
29 typedef qua<float, mediump> mediump_quat;
30
31 /// Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
32 typedef qua<float, highp> highp_quat;
33
34 /// @}
35} //namespace glm
36
37#if GLM_CONFIG_CTOR_INIT == GLM_DISABLE
38static_assert(std::is_trivially_default_constructible<glm::lowp_quat>::value);
39static_assert(std::is_trivially_default_constructible<glm::mediump_quat>::value);
40static_assert(std::is_trivially_default_constructible<glm::highp_quat>::value);
41#endif
42static_assert(std::is_trivially_copy_assignable<glm::lowp_quat>::value);
43static_assert(std::is_trivially_copy_assignable<glm::mediump_quat>::value);
44static_assert(std::is_trivially_copy_assignable<glm::highp_quat>::value);
45static_assert(std::is_trivially_copyable<glm::lowp_quat>::value);
46static_assert(std::is_trivially_copyable<glm::mediump_quat>::value);
47static_assert(std::is_trivially_copyable<glm::highp_quat>::value);
48static_assert(std::is_copy_constructible<glm::lowp_quat>::value);
49static_assert(std::is_copy_constructible<glm::mediump_quat>::value);
50static_assert(std::is_copy_constructible<glm::highp_quat>::value);
51static_assert(glm::lowp_quat::length() == 4);
52static_assert(glm::mediump_quat::length() == 4);
53static_assert(glm::highp_quat::length() == 4);