Преглед изворни кода

- Added GLM_FORCE_QUAT_DATA_WXYZ to store quat data as w,x,y,z instead of x,y,z,w #983

Christophe Riccio пре 6 година
родитељ
комит
638eb14fcd
3 измењених фајлова са 17 додато и 2 уклоњено
  1. 10 2
      glm/detail/type_quat.hpp
  2. 6 0
      manual.md
  3. 1 0
      readme.md

+ 10 - 2
glm/detail/type_quat.hpp

@@ -42,12 +42,20 @@ namespace glm
 #		if GLM_LANG & GLM_LANG_CXXMS_FLAG
 			union
 			{
-				struct { T x, y, z, w;};
+#				ifdef GLM_FORCE_QUAT_DATA_WXYZ
+					struct { T w, x, y, z; };
+#				else
+					struct { T x, y, z, w; };
+#				endif
 
 				typename detail::storage<4, T, detail::is_aligned<Q>::value>::type data;
 			};
 #		else
-			T x, y, z, w;
+#			ifdef GLM_FORCE_QUAT_DATA_WXYZ
+				T x, y, z, w;
+#			else
+				T w, x, y, z;
+#			endif
 #		endif
 
 #		if GLM_SILENT_WARNINGS == GLM_ENABLE

+ 6 - 0
manual.md

@@ -35,6 +35,7 @@
 + [2.18. GLM\_FORCE\_SIZE\_T\_LENGTH: Vector and matrix static size type](#section2_18)
 + [2.19. GLM\_FORCE\_UNRESTRICTED\_GENTYPE: Removing genType restriction](#section2_19)
 + [2.20. GLM\_FORCE\_SILENT\_WARNINGS: Silent C++ warnings from language extensions](#section2_20)
++ [2.21. GLM\_FORCE\_QUAT\_DATA\_WXYZ: Force GLM to store quat data as w,x,y,z instead of x,y,z,w](#section2_21)
 + [3. Stable extensions](#section3)
 + [3.1. Scalar types](#section3_1)
 + [3.2. Scalar functions](#section3_2)
@@ -716,6 +717,11 @@ int average(int const A, int const B)
 When using /W4 on Visual C++ or -Wpedantic on GCC, for example, the compilers will generate warnings for using C++ language extensions (/Za with Visual C++) such as anonymous struct.
 GLM relies on anonymous structs for swizzle operators and aligned vector types. To silent those warnings define `GLM_FORCE_SILENT_WARNINGS` before including GLM headers.
 
+
+### <a name="section2_21"></a> 2.21. GLM\_FORCE\_QUAT\_DATA\_WXYZ: Force GLM to store quat data as w,x,y,z instead of x,y,z,w
+
+By default GLM store quaternion components with the x, y, z, w order. `GLM_FORCE_QUAT_DATA_WXYZ` allows switching the quaternion data storage to the w, x, y, z order.
+
 ---
 <div style="page-break-after: always;"> </div>
 

+ 1 - 0
readme.md

@@ -59,6 +59,7 @@ glm::mat4 camera(float Translate, glm::vec2 const& Rotate)
 - Added CMake GLM interface #963
 - Added fma implementation based on std::fma #969
 - Added missing quat constexpr #955
+- Added GLM_FORCE_QUAT_DATA_WXYZ to store quat data as w,x,y,z instead of x,y,z,w #983
 
 #### Fixes:
 - Fixed equal ULP variation when using negative sign #965