2.4 KB、59行 生 Blame 履歴
1/// @ref ext_quaternion_double_precision
2/// @file glm/ext/quaternion_double_precision.hpp
3///
4/// @defgroup ext_quaternion_double_precision GLM_EXT_quaternion_double_precision
5/// @ingroup ext
6///
7/// Exposes double-precision floating point quaternion type with various precision in term of ULPs.
8///
9/// Include <glm/ext/quaternion_double_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_double_precision extension included")
18#endif
19
20namespace glm
21{
22 /// @addtogroup ext_quaternion_double_precision
23 /// @{
24
25 /// Quaternion of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
26 ///
27 /// @see ext_quaternion_double_precision
28 typedef qua<double, lowp> lowp_dquat;
29
30 /// Quaternion of medium double-qualifier floating-point numbers using high precision arithmetic in term of ULPs.
31 ///
32 /// @see ext_quaternion_double_precision
33 typedef qua<double, mediump> mediump_dquat;
34
35 /// Quaternion of high double-qualifier floating-point numbers using high precision arithmetic in term of ULPs.
36 ///
37 /// @see ext_quaternion_double_precision
38 typedef qua<double, highp> highp_dquat;
39
40 /// @}
41} //namespace glm
42
43#if GLM_CONFIG_CTOR_INIT == GLM_DISABLE
44static_assert(std::is_trivially_default_constructible<glm::lowp_dquat>::value);
45static_assert(std::is_trivially_default_constructible<glm::mediump_dquat>::value);
46static_assert(std::is_trivially_default_constructible<glm::highp_dquat>::value);
47#endif
48static_assert(std::is_trivially_copy_assignable<glm::lowp_dquat>::value);
49static_assert(std::is_trivially_copy_assignable<glm::mediump_dquat>::value);
50static_assert(std::is_trivially_copy_assignable<glm::highp_dquat>::value);
51static_assert(std::is_trivially_copyable<glm::lowp_dquat>::value);
52static_assert(std::is_trivially_copyable<glm::mediump_dquat>::value);
53static_assert(std::is_trivially_copyable<glm::highp_dquat>::value);
54static_assert(std::is_copy_constructible<glm::lowp_dquat>::value);
55static_assert(std::is_copy_constructible<glm::mediump_dquat>::value);
56static_assert(std::is_copy_constructible<glm::highp_dquat>::value);
57static_assert(glm::lowp_dquat::length() == 4);
58static_assert(glm::mediump_dquat::length() == 4);
59static_assert(glm::highp_dquat::length() == 4);