From 68ac55b7602c56e89b7e08d941d513bef9cb6f0f Mon Sep 17 00:00:00 2001 From: Leonetienne Date: Tue, 16 Nov 2021 11:47:10 +0100 Subject: [PATCH] added gitignore to exclude doxygen build result --- Doxygen/.gitignore | 1 + Doxygen/build/Collider_8cpp.html | 108 - Doxygen/build/Collider_8cpp__incl.map | 12 - Doxygen/build/Collider_8cpp__incl.md5 | 1 - Doxygen/build/Collider_8cpp__incl.png | Bin 19314 -> 0 bytes Doxygen/build/Collider_8cpp_source.html | 90 - Doxygen/build/Collider_8h.html | 133 -- Doxygen/build/Collider_8h__dep__incl.map | 6 - Doxygen/build/Collider_8h__dep__incl.md5 | 1 - Doxygen/build/Collider_8h__dep__incl.png | Bin 9737 -> 0 bytes Doxygen/build/Collider_8h__incl.map | 11 - Doxygen/build/Collider_8h__incl.md5 | 1 - Doxygen/build/Collider_8h__incl.png | Bin 17538 -> 0 bytes Doxygen/build/Collider_8h_source.html | 104 - Doxygen/build/Constants_8h.html | 223 -- Doxygen/build/Constants_8h__dep__incl.map | 5 - Doxygen/build/Constants_8h__dep__incl.md5 | 1 - Doxygen/build/Constants_8h__dep__incl.png | Bin 5735 -> 0 bytes Doxygen/build/Constants_8h_source.html | 103 - ...2Eule_8vcxproj_8FileListAbsolute_8txt.html | 84 - Doxygen/build/Math_8cpp.html | 131 -- Doxygen/build/Math_8cpp__incl.map | 8 - Doxygen/build/Math_8cpp__incl.md5 | 1 - Doxygen/build/Math_8cpp__incl.png | Bin 10760 -> 0 bytes Doxygen/build/Math_8cpp_source.html | 200 -- Doxygen/build/Math_8h.html | 130 -- Doxygen/build/Math_8h__dep__incl.map | 8 - Doxygen/build/Math_8h__dep__incl.md5 | 1 - Doxygen/build/Math_8h__dep__incl.png | Bin 10073 -> 0 bytes Doxygen/build/Math_8h__incl.map | 5 - Doxygen/build/Math_8h__incl.md5 | 1 - Doxygen/build/Math_8h__incl.png | Bin 4716 -> 0 bytes Doxygen/build/Math_8h_source.html | 187 -- Doxygen/build/Matrix4x4_8cpp.html | 130 -- Doxygen/build/Matrix4x4_8cpp__incl.map | 15 - Doxygen/build/Matrix4x4_8cpp__incl.md5 | 1 - Doxygen/build/Matrix4x4_8cpp__incl.png | Bin 26243 -> 0 bytes Doxygen/build/Matrix4x4_8cpp_source.html | 786 ------- Doxygen/build/Matrix4x4_8h.html | 148 -- Doxygen/build/Matrix4x4_8h__dep__incl.map | 15 - Doxygen/build/Matrix4x4_8h__dep__incl.md5 | 1 - Doxygen/build/Matrix4x4_8h__dep__incl.png | Bin 41026 -> 0 bytes Doxygen/build/Matrix4x4_8h__incl.map | 6 - Doxygen/build/Matrix4x4_8h__incl.md5 | 1 - Doxygen/build/Matrix4x4_8h__incl.png | Bin 5888 -> 0 bytes Doxygen/build/Matrix4x4_8h_source.html | 234 -- Doxygen/build/Quaternion_8cpp.html | 129 -- Doxygen/build/Quaternion_8cpp__incl.map | 15 - Doxygen/build/Quaternion_8cpp__incl.md5 | 1 - Doxygen/build/Quaternion_8cpp__incl.png | Bin 38683 -> 0 bytes Doxygen/build/Quaternion_8cpp_source.html | 476 ---- Doxygen/build/Quaternion_8h.html | 134 -- Doxygen/build/Quaternion_8h__dep__incl.map | 4 - Doxygen/build/Quaternion_8h__dep__incl.md5 | 1 - Doxygen/build/Quaternion_8h__dep__incl.png | Bin 3640 -> 0 bytes Doxygen/build/Quaternion_8h__incl.map | 12 - Doxygen/build/Quaternion_8h__incl.md5 | 1 - Doxygen/build/Quaternion_8h__incl.png | Bin 32059 -> 0 bytes Doxygen/build/Quaternion_8h_source.html | 194 -- Doxygen/build/Rect_8h.html | 117 - Doxygen/build/Rect_8h__incl.map | 6 - Doxygen/build/Rect_8h__incl.md5 | 1 - Doxygen/build/Rect_8h__incl.png | Bin 6779 -> 0 bytes Doxygen/build/Rect_8h_source.html | 104 - .../build/TrapazoidalPrismCollider_8cpp.html | 109 - .../TrapazoidalPrismCollider_8cpp__incl.map | 13 - .../TrapazoidalPrismCollider_8cpp__incl.md5 | 1 - .../TrapazoidalPrismCollider_8cpp__incl.png | Bin 31904 -> 0 bytes .../TrapazoidalPrismCollider_8cpp_source.html | 213 -- .../build/TrapazoidalPrismCollider_8h.html | 134 -- ...TrapazoidalPrismCollider_8h__dep__incl.map | 4 - ...TrapazoidalPrismCollider_8h__dep__incl.md5 | 1 - ...TrapazoidalPrismCollider_8h__dep__incl.png | Bin 5002 -> 0 bytes .../TrapazoidalPrismCollider_8h__incl.map | 12 - .../TrapazoidalPrismCollider_8h__incl.md5 | 1 - .../TrapazoidalPrismCollider_8h__incl.png | Bin 26179 -> 0 bytes .../TrapazoidalPrismCollider_8h_source.html | 158 -- Doxygen/build/Vector2_8cpp.html | 119 - Doxygen/build/Vector2_8cpp__incl.map | 18 - Doxygen/build/Vector2_8cpp__incl.md5 | 1 - Doxygen/build/Vector2_8cpp__incl.png | Bin 34534 -> 0 bytes Doxygen/build/Vector2_8cpp_source.html | 802 ------- Doxygen/build/Vector2_8h.html | 143 -- Doxygen/build/Vector2_8h__dep__incl.map | 7 - Doxygen/build/Vector2_8h__dep__incl.md5 | 1 - Doxygen/build/Vector2_8h__dep__incl.png | Bin 7941 -> 0 bytes Doxygen/build/Vector2_8h__incl.map | 5 - Doxygen/build/Vector2_8h__incl.md5 | 1 - Doxygen/build/Vector2_8h__incl.png | Bin 4591 -> 0 bytes Doxygen/build/Vector2_8h_source.html | 216 -- Doxygen/build/Vector3_8cpp.html | 119 - Doxygen/build/Vector3_8cpp__incl.map | 18 - Doxygen/build/Vector3_8cpp__incl.md5 | 1 - Doxygen/build/Vector3_8cpp__incl.png | Bin 34578 -> 0 bytes Doxygen/build/Vector3_8cpp_source.html | 1007 --------- Doxygen/build/Vector3_8h.html | 155 -- Doxygen/build/Vector3_8h__dep__incl.map | 13 - Doxygen/build/Vector3_8h__dep__incl.md5 | 1 - Doxygen/build/Vector3_8h__dep__incl.png | Bin 24078 -> 0 bytes Doxygen/build/Vector3_8h__incl.map | 10 - Doxygen/build/Vector3_8h__incl.md5 | 1 - Doxygen/build/Vector3_8h__incl.png | Bin 17450 -> 0 bytes Doxygen/build/Vector3_8h_source.html | 227 -- Doxygen/build/Vector4_8cpp.html | 119 - Doxygen/build/Vector4_8cpp__incl.map | 18 - Doxygen/build/Vector4_8cpp__incl.md5 | 1 - Doxygen/build/Vector4_8cpp__incl.png | Bin 34490 -> 0 bytes Doxygen/build/Vector4_8cpp_source.html | 914 -------- Doxygen/build/Vector4_8h.html | 152 -- Doxygen/build/Vector4_8h__dep__incl.map | 8 - Doxygen/build/Vector4_8h__dep__incl.md5 | 1 - Doxygen/build/Vector4_8h__dep__incl.png | Bin 11897 -> 0 bytes Doxygen/build/Vector4_8h__incl.map | 10 - Doxygen/build/Vector4_8h__incl.md5 | 1 - Doxygen/build/Vector4_8h__incl.png | Bin 17346 -> 0 bytes Doxygen/build/Vector4_8h_source.html | 227 -- Doxygen/build/annotated.html | 98 - Doxygen/build/bc_s.png | Bin 676 -> 0 bytes Doxygen/build/bdwn.png | Bin 147 -> 0 bytes .../build/classEule_1_1Collider-members.html | 92 - Doxygen/build/classEule_1_1Collider.html | 151 -- .../classEule_1_1Collider__inherit__graph.map | 4 - .../classEule_1_1Collider__inherit__graph.md5 | 1 - .../classEule_1_1Collider__inherit__graph.png | Bin 3690 -> 0 bytes Doxygen/build/classEule_1_1Math-members.html | 105 - Doxygen/build/classEule_1_1Math.html | 769 ------- .../build/classEule_1_1Matrix4x4-members.html | 145 -- Doxygen/build/classEule_1_1Matrix4x4.html | 1979 ----------------- .../classEule_1_1Quaternion-members.html | 116 - Doxygen/build/classEule_1_1Quaternion.html | 1044 --------- ...e_1_1TrapazoidalPrismCollider-members.html | 105 - ...classEule_1_1TrapazoidalPrismCollider.html | 544 ----- ...1TrapazoidalPrismCollider__coll__graph.map | 4 - ...1TrapazoidalPrismCollider__coll__graph.md5 | 1 - ...1TrapazoidalPrismCollider__coll__graph.png | Bin 3783 -> 0 bytes ...apazoidalPrismCollider__inherit__graph.map | 4 - ...apazoidalPrismCollider__inherit__graph.md5 | 1 - ...apazoidalPrismCollider__inherit__graph.png | Bin 3783 -> 0 bytes .../build/classEule_1_1Vector2-members.html | 134 -- Doxygen/build/classEule_1_1Vector2.html | 1478 ------------ .../build/classEule_1_1Vector3-members.html | 139 -- Doxygen/build/classEule_1_1Vector3.html | 1672 -------------- .../classEule_1_1Vector3__coll__graph.map | 4 - .../classEule_1_1Vector3__coll__graph.md5 | 1 - .../classEule_1_1Vector3__coll__graph.png | Bin 12048 -> 0 bytes .../build/classEule_1_1Vector4-members.html | 140 -- Doxygen/build/classEule_1_1Vector4.html | 1703 -------------- .../classEule_1_1Vector4__coll__graph.map | 4 - .../classEule_1_1Vector4__coll__graph.md5 | 1 - .../classEule_1_1Vector4__coll__graph.png | Bin 14909 -> 0 bytes Doxygen/build/classes.html | 117 - Doxygen/build/closed.png | Bin 132 -> 0 bytes .../dir_1fefb9009d41306f82e23dc917083c9e.html | 88 - .../dir_29a3c7679fa29c698d8a016dea7d0b26.html | 137 -- .../dir_b9243fac9f130637c8e868960898670e.html | 96 - .../dir_c806cfdecfdfd6ea1cddf5ffe1bf0281.html | 88 - .../dir_e847076a3068559a2237d545d5d06d37.html | 88 - Doxygen/build/doc.png | Bin 746 -> 0 bytes Doxygen/build/doxygen.css | 1771 --------------- Doxygen/build/doxygen.png | Bin 3779 -> 0 bytes Doxygen/build/dynsections.js | 127 -- Doxygen/build/files.html | 112 - Doxygen/build/folderclosed.png | Bin 616 -> 0 bytes Doxygen/build/folderopen.png | Bin 597 -> 0 bytes Doxygen/build/functions.html | 96 - Doxygen/build/functions_b.html | 97 - Doxygen/build/functions_c.html | 101 - Doxygen/build/functions_d.html | 102 - Doxygen/build/functions_e.html | 87 - Doxygen/build/functions_f.html | 97 - Doxygen/build/functions_func.html | 431 ---- Doxygen/build/functions_g.html | 99 - Doxygen/build/functions_h.html | 87 - Doxygen/build/functions_i.html | 102 - Doxygen/build/functions_j.html | 87 - Doxygen/build/functions_k.html | 87 - Doxygen/build/functions_l.html | 107 - Doxygen/build/functions_m.html | 107 - Doxygen/build/functions_n.html | 97 - Doxygen/build/functions_o.html | 194 -- Doxygen/build/functions_p.html | 93 - Doxygen/build/functions_q.html | 87 - Doxygen/build/functions_r.html | 113 - Doxygen/build/functions_rela.html | 89 - Doxygen/build/functions_s.html | 108 - Doxygen/build/functions_t.html | 112 - Doxygen/build/functions_u.html | 92 - Doxygen/build/functions_v.html | 101 - Doxygen/build/functions_vars.html | 316 --- Doxygen/build/functions_w.html | 87 - Doxygen/build/functions_x.html | 89 - Doxygen/build/functions_y.html | 89 - Doxygen/build/functions_z.html | 93 - Doxygen/build/functions_~.html | 87 - Doxygen/build/globals.html | 97 - Doxygen/build/globals_defs.html | 85 - Doxygen/build/globals_vars.html | 94 - Doxygen/build/graph_legend.html | 144 -- Doxygen/build/graph_legend.md5 | 1 - Doxygen/build/graph_legend.png | Bin 20615 -> 0 bytes Doxygen/build/hierarchy.html | 102 - Doxygen/build/index.html | 84 - Doxygen/build/inherit_graph_0.map | 4 - Doxygen/build/inherit_graph_0.md5 | 1 - Doxygen/build/inherit_graph_0.png | Bin 2620 -> 0 bytes Doxygen/build/inherit_graph_1.map | 3 - Doxygen/build/inherit_graph_1.md5 | 1 - Doxygen/build/inherit_graph_1.png | Bin 1071 -> 0 bytes Doxygen/build/inherit_graph_10.map | 3 - Doxygen/build/inherit_graph_10.md5 | 1 - Doxygen/build/inherit_graph_10.png | Bin 1666 -> 0 bytes Doxygen/build/inherit_graph_2.map | 3 - Doxygen/build/inherit_graph_2.md5 | 1 - Doxygen/build/inherit_graph_2.png | Bin 1457 -> 0 bytes Doxygen/build/inherit_graph_3.map | 3 - Doxygen/build/inherit_graph_3.md5 | 1 - Doxygen/build/inherit_graph_3.png | Bin 1408 -> 0 bytes Doxygen/build/inherit_graph_4.map | 3 - Doxygen/build/inherit_graph_4.md5 | 1 - Doxygen/build/inherit_graph_4.png | Bin 965 -> 0 bytes Doxygen/build/inherit_graph_5.map | 3 - Doxygen/build/inherit_graph_5.md5 | 1 - Doxygen/build/inherit_graph_5.png | Bin 1972 -> 0 bytes Doxygen/build/inherit_graph_6.map | 3 - Doxygen/build/inherit_graph_6.md5 | 1 - Doxygen/build/inherit_graph_6.png | Bin 1690 -> 0 bytes Doxygen/build/inherit_graph_7.map | 3 - Doxygen/build/inherit_graph_7.md5 | 1 - Doxygen/build/inherit_graph_7.png | Bin 2005 -> 0 bytes Doxygen/build/inherit_graph_8.map | 3 - Doxygen/build/inherit_graph_8.md5 | 1 - Doxygen/build/inherit_graph_8.png | Bin 1719 -> 0 bytes Doxygen/build/inherit_graph_9.map | 3 - Doxygen/build/inherit_graph_9.md5 | 1 - Doxygen/build/inherit_graph_9.png | Bin 1940 -> 0 bytes Doxygen/build/inherits.html | 144 -- Doxygen/build/jquery.js | 35 - Doxygen/build/menu.js | 50 - Doxygen/build/menudata.js | 113 - Doxygen/build/namespaceEule.html | 397 ---- Doxygen/build/namespacemembers.html | 103 - Doxygen/build/namespacemembers_func.html | 85 - Doxygen/build/namespacemembers_type.html | 100 - Doxygen/build/namespaces.html | 89 - Doxygen/build/nav_f.png | Bin 153 -> 0 bytes Doxygen/build/nav_g.png | Bin 95 -> 0 bytes Doxygen/build/nav_h.png | Bin 98 -> 0 bytes Doxygen/build/open.png | Bin 123 -> 0 bytes Doxygen/build/search/all_0.html | 30 - Doxygen/build/search/all_0.js | 7 - Doxygen/build/search/all_1.html | 30 - Doxygen/build/search/all_1.js | 7 - Doxygen/build/search/all_10.html | 30 - Doxygen/build/search/all_10.js | 6 - Doxygen/build/search/all_11.html | 30 - Doxygen/build/search/all_11.js | 14 - Doxygen/build/search/all_12.html | 30 - Doxygen/build/search/all_12.js | 9 - Doxygen/build/search/all_13.html | 30 - Doxygen/build/search/all_13.js | 13 - Doxygen/build/search/all_14.html | 30 - Doxygen/build/search/all_14.js | 5 - Doxygen/build/search/all_15.html | 30 - Doxygen/build/search/all_15.js | 24 - Doxygen/build/search/all_16.html | 30 - Doxygen/build/search/all_16.js | 4 - Doxygen/build/search/all_17.html | 30 - Doxygen/build/search/all_17.js | 4 - Doxygen/build/search/all_18.html | 30 - Doxygen/build/search/all_18.js | 4 - Doxygen/build/search/all_19.html | 30 - Doxygen/build/search/all_19.js | 5 - Doxygen/build/search/all_1a.html | 30 - Doxygen/build/search/all_1a.js | 4 - Doxygen/build/search/all_2.html | 30 - Doxygen/build/search/all_2.js | 12 - Doxygen/build/search/all_3.html | 30 - Doxygen/build/search/all_3.js | 9 - Doxygen/build/search/all_4.html | 30 - Doxygen/build/search/all_4.js | 6 - Doxygen/build/search/all_5.html | 30 - Doxygen/build/search/all_5.js | 7 - Doxygen/build/search/all_6.html | 30 - Doxygen/build/search/all_6.js | 8 - Doxygen/build/search/all_7.html | 30 - Doxygen/build/search/all_7.js | 5 - Doxygen/build/search/all_8.html | 30 - Doxygen/build/search/all_8.js | 9 - Doxygen/build/search/all_9.html | 30 - Doxygen/build/search/all_9.js | 4 - Doxygen/build/search/all_a.html | 30 - Doxygen/build/search/all_a.js | 4 - Doxygen/build/search/all_b.html | 30 - Doxygen/build/search/all_b.js | 7 - Doxygen/build/search/all_c.html | 30 - Doxygen/build/search/all_c.js | 16 - Doxygen/build/search/all_d.html | 30 - Doxygen/build/search/all_d.js | 6 - Doxygen/build/search/all_e.html | 30 - Doxygen/build/search/all_e.js | 22 - Doxygen/build/search/all_f.html | 30 - Doxygen/build/search/all_f.js | 7 - Doxygen/build/search/classes_0.html | 30 - Doxygen/build/search/classes_0.js | 4 - Doxygen/build/search/classes_1.html | 30 - Doxygen/build/search/classes_1.js | 5 - Doxygen/build/search/classes_2.html | 30 - Doxygen/build/search/classes_2.js | 4 - Doxygen/build/search/classes_3.html | 30 - Doxygen/build/search/classes_3.js | 4 - Doxygen/build/search/classes_4.html | 30 - Doxygen/build/search/classes_4.js | 4 - Doxygen/build/search/classes_5.html | 30 - Doxygen/build/search/classes_5.js | 9 - Doxygen/build/search/close.png | Bin 273 -> 0 bytes Doxygen/build/search/defines_0.html | 30 - Doxygen/build/search/defines_0.js | 4 - Doxygen/build/search/defines_1.html | 30 - Doxygen/build/search/defines_1.js | 4 - Doxygen/build/search/defines_2.html | 30 - Doxygen/build/search/defines_2.js | 4 - Doxygen/build/search/defines_3.html | 30 - Doxygen/build/search/defines_3.js | 4 - Doxygen/build/search/defines_4.html | 30 - Doxygen/build/search/defines_4.js | 4 - Doxygen/build/search/files_0.html | 30 - Doxygen/build/search/files_0.js | 6 - Doxygen/build/search/files_1.html | 30 - Doxygen/build/search/files_1.js | 4 - Doxygen/build/search/files_2.html | 30 - Doxygen/build/search/files_2.js | 7 - Doxygen/build/search/files_3.html | 30 - Doxygen/build/search/files_3.js | 5 - Doxygen/build/search/files_4.html | 30 - Doxygen/build/search/files_4.js | 4 - Doxygen/build/search/files_5.html | 30 - Doxygen/build/search/files_5.js | 5 - Doxygen/build/search/files_6.html | 30 - Doxygen/build/search/files_6.js | 10 - Doxygen/build/search/functions_0.html | 30 - Doxygen/build/search/functions_0.js | 6 - Doxygen/build/search/functions_1.html | 30 - Doxygen/build/search/functions_1.js | 7 - Doxygen/build/search/functions_2.html | 30 - Doxygen/build/search/functions_2.js | 6 - Doxygen/build/search/functions_3.html | 30 - Doxygen/build/search/functions_3.js | 7 - Doxygen/build/search/functions_4.html | 30 - Doxygen/build/search/functions_4.js | 8 - Doxygen/build/search/functions_5.html | 30 - Doxygen/build/search/functions_5.js | 5 - Doxygen/build/search/functions_6.html | 30 - Doxygen/build/search/functions_6.js | 9 - Doxygen/build/search/functions_7.html | 30 - Doxygen/build/search/functions_7.js | 5 - Doxygen/build/search/functions_8.html | 30 - Doxygen/build/search/functions_8.js | 20 - Doxygen/build/search/functions_9.html | 30 - Doxygen/build/search/functions_9.js | 4 - Doxygen/build/search/functions_a.html | 30 - Doxygen/build/search/functions_a.js | 10 - Doxygen/build/search/functions_b.html | 30 - Doxygen/build/search/functions_b.js | 8 - Doxygen/build/search/functions_c.html | 30 - Doxygen/build/search/functions_c.js | 10 - Doxygen/build/search/functions_d.html | 30 - Doxygen/build/search/functions_d.js | 4 - Doxygen/build/search/functions_e.html | 30 - Doxygen/build/search/functions_e.js | 7 - Doxygen/build/search/functions_f.html | 30 - Doxygen/build/search/functions_f.js | 4 - Doxygen/build/search/mag_sel.png | Bin 465 -> 0 bytes Doxygen/build/search/namespaces_0.html | 30 - Doxygen/build/search/namespaces_0.js | 4 - Doxygen/build/search/nomatches.html | 12 - Doxygen/build/search/related_0.html | 30 - Doxygen/build/search/related_0.js | 4 - Doxygen/build/search/search.css | 271 --- Doxygen/build/search/search.js | 814 ------- Doxygen/build/search/search_l.png | Bin 567 -> 0 bytes Doxygen/build/search/search_m.png | Bin 158 -> 0 bytes Doxygen/build/search/search_r.png | Bin 553 -> 0 bytes Doxygen/build/search/searchdata.js | 39 - Doxygen/build/search/typedefs_0.html | 30 - Doxygen/build/search/typedefs_0.js | 9 - Doxygen/build/search/variables_0.html | 30 - Doxygen/build/search/variables_0.js | 4 - Doxygen/build/search/variables_1.html | 30 - Doxygen/build/search/variables_1.js | 7 - Doxygen/build/search/variables_10.html | 30 - Doxygen/build/search/variables_10.js | 5 - Doxygen/build/search/variables_11.html | 30 - Doxygen/build/search/variables_11.js | 4 - Doxygen/build/search/variables_12.html | 30 - Doxygen/build/search/variables_12.js | 4 - Doxygen/build/search/variables_13.html | 30 - Doxygen/build/search/variables_13.js | 4 - Doxygen/build/search/variables_14.html | 30 - Doxygen/build/search/variables_14.js | 4 - Doxygen/build/search/variables_15.html | 30 - Doxygen/build/search/variables_15.js | 4 - Doxygen/build/search/variables_16.html | 30 - Doxygen/build/search/variables_16.js | 4 - Doxygen/build/search/variables_17.html | 30 - Doxygen/build/search/variables_17.js | 4 - Doxygen/build/search/variables_18.html | 30 - Doxygen/build/search/variables_18.js | 5 - Doxygen/build/search/variables_2.html | 30 - Doxygen/build/search/variables_2.js | 4 - Doxygen/build/search/variables_3.html | 30 - Doxygen/build/search/variables_3.js | 6 - Doxygen/build/search/variables_4.html | 30 - Doxygen/build/search/variables_4.js | 4 - Doxygen/build/search/variables_5.html | 30 - Doxygen/build/search/variables_5.js | 7 - Doxygen/build/search/variables_6.html | 30 - Doxygen/build/search/variables_6.js | 4 - Doxygen/build/search/variables_7.html | 30 - Doxygen/build/search/variables_7.js | 5 - Doxygen/build/search/variables_8.html | 30 - Doxygen/build/search/variables_8.js | 4 - Doxygen/build/search/variables_9.html | 30 - Doxygen/build/search/variables_9.js | 4 - Doxygen/build/search/variables_a.html | 30 - Doxygen/build/search/variables_a.js | 4 - Doxygen/build/search/variables_b.html | 30 - Doxygen/build/search/variables_b.js | 5 - Doxygen/build/search/variables_c.html | 30 - Doxygen/build/search/variables_c.js | 4 - Doxygen/build/search/variables_d.html | 30 - Doxygen/build/search/variables_d.js | 4 - Doxygen/build/search/variables_e.html | 30 - Doxygen/build/search/variables_e.js | 5 - Doxygen/build/search/variables_f.html | 30 - Doxygen/build/search/variables_f.js | 7 - Doxygen/build/splitbar.png | Bin 314 -> 0 bytes Doxygen/build/structEule_1_1Rect-members.html | 93 - Doxygen/build/structEule_1_1Rect.html | 153 -- .../build/structEule_1_1Rect__coll__graph.map | 4 - .../build/structEule_1_1Rect__coll__graph.md5 | 1 - .../build/structEule_1_1Rect__coll__graph.png | Bin 8014 -> 0 bytes Doxygen/build/sync_off.png | Bin 853 -> 0 bytes Doxygen/build/sync_on.png | Bin 845 -> 0 bytes Doxygen/build/tab_a.png | Bin 142 -> 0 bytes Doxygen/build/tab_b.png | Bin 169 -> 0 bytes Doxygen/build/tab_h.png | Bin 177 -> 0 bytes Doxygen/build/tab_s.png | Bin 184 -> 0 bytes Doxygen/build/tabs.css | 1 - Doxygen/build/version_8h.html | 90 - Doxygen/build/version_8h_source.html | 90 - ...2Eule_8vcxproj_8FileListAbsolute_8txt.html | 84 - ...2Eule_8vcxproj_8FileListAbsolute_8txt.html | 84 - 452 files changed, 1 insertion(+), 32392 deletions(-) create mode 100644 Doxygen/.gitignore delete mode 100644 Doxygen/build/Collider_8cpp.html delete mode 100644 Doxygen/build/Collider_8cpp__incl.map delete mode 100644 Doxygen/build/Collider_8cpp__incl.md5 delete mode 100644 Doxygen/build/Collider_8cpp__incl.png delete mode 100644 Doxygen/build/Collider_8cpp_source.html delete mode 100644 Doxygen/build/Collider_8h.html delete mode 100644 Doxygen/build/Collider_8h__dep__incl.map delete mode 100644 Doxygen/build/Collider_8h__dep__incl.md5 delete mode 100644 Doxygen/build/Collider_8h__dep__incl.png delete mode 100644 Doxygen/build/Collider_8h__incl.map delete mode 100644 Doxygen/build/Collider_8h__incl.md5 delete mode 100644 Doxygen/build/Collider_8h__incl.png delete mode 100644 Doxygen/build/Collider_8h_source.html delete mode 100644 Doxygen/build/Constants_8h.html delete mode 100644 Doxygen/build/Constants_8h__dep__incl.map delete mode 100644 Doxygen/build/Constants_8h__dep__incl.md5 delete mode 100644 Doxygen/build/Constants_8h__dep__incl.png delete mode 100644 Doxygen/build/Constants_8h_source.html delete mode 100644 Doxygen/build/Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html delete mode 100644 Doxygen/build/Math_8cpp.html delete mode 100644 Doxygen/build/Math_8cpp__incl.map delete mode 100644 Doxygen/build/Math_8cpp__incl.md5 delete mode 100644 Doxygen/build/Math_8cpp__incl.png delete mode 100644 Doxygen/build/Math_8cpp_source.html delete mode 100644 Doxygen/build/Math_8h.html delete mode 100644 Doxygen/build/Math_8h__dep__incl.map delete mode 100644 Doxygen/build/Math_8h__dep__incl.md5 delete mode 100644 Doxygen/build/Math_8h__dep__incl.png delete mode 100644 Doxygen/build/Math_8h__incl.map delete mode 100644 Doxygen/build/Math_8h__incl.md5 delete mode 100644 Doxygen/build/Math_8h__incl.png delete mode 100644 Doxygen/build/Math_8h_source.html delete mode 100644 Doxygen/build/Matrix4x4_8cpp.html delete mode 100644 Doxygen/build/Matrix4x4_8cpp__incl.map delete mode 100644 Doxygen/build/Matrix4x4_8cpp__incl.md5 delete mode 100644 Doxygen/build/Matrix4x4_8cpp__incl.png delete mode 100644 Doxygen/build/Matrix4x4_8cpp_source.html delete mode 100644 Doxygen/build/Matrix4x4_8h.html delete mode 100644 Doxygen/build/Matrix4x4_8h__dep__incl.map delete mode 100644 Doxygen/build/Matrix4x4_8h__dep__incl.md5 delete mode 100644 Doxygen/build/Matrix4x4_8h__dep__incl.png delete mode 100644 Doxygen/build/Matrix4x4_8h__incl.map delete mode 100644 Doxygen/build/Matrix4x4_8h__incl.md5 delete mode 100644 Doxygen/build/Matrix4x4_8h__incl.png delete mode 100644 Doxygen/build/Matrix4x4_8h_source.html delete mode 100644 Doxygen/build/Quaternion_8cpp.html delete mode 100644 Doxygen/build/Quaternion_8cpp__incl.map delete mode 100644 Doxygen/build/Quaternion_8cpp__incl.md5 delete mode 100644 Doxygen/build/Quaternion_8cpp__incl.png delete mode 100644 Doxygen/build/Quaternion_8cpp_source.html delete mode 100644 Doxygen/build/Quaternion_8h.html delete mode 100644 Doxygen/build/Quaternion_8h__dep__incl.map delete mode 100644 Doxygen/build/Quaternion_8h__dep__incl.md5 delete mode 100644 Doxygen/build/Quaternion_8h__dep__incl.png delete mode 100644 Doxygen/build/Quaternion_8h__incl.map delete mode 100644 Doxygen/build/Quaternion_8h__incl.md5 delete mode 100644 Doxygen/build/Quaternion_8h__incl.png delete mode 100644 Doxygen/build/Quaternion_8h_source.html delete mode 100644 Doxygen/build/Rect_8h.html delete mode 100644 Doxygen/build/Rect_8h__incl.map delete mode 100644 Doxygen/build/Rect_8h__incl.md5 delete mode 100644 Doxygen/build/Rect_8h__incl.png delete mode 100644 Doxygen/build/Rect_8h_source.html delete mode 100644 Doxygen/build/TrapazoidalPrismCollider_8cpp.html delete mode 100644 Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.map delete mode 100644 Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.md5 delete mode 100644 Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.png delete mode 100644 Doxygen/build/TrapazoidalPrismCollider_8cpp_source.html delete mode 100644 Doxygen/build/TrapazoidalPrismCollider_8h.html delete mode 100644 Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.map delete mode 100644 Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.md5 delete mode 100644 Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.png delete mode 100644 Doxygen/build/TrapazoidalPrismCollider_8h__incl.map delete mode 100644 Doxygen/build/TrapazoidalPrismCollider_8h__incl.md5 delete mode 100644 Doxygen/build/TrapazoidalPrismCollider_8h__incl.png delete mode 100644 Doxygen/build/TrapazoidalPrismCollider_8h_source.html delete mode 100644 Doxygen/build/Vector2_8cpp.html delete mode 100644 Doxygen/build/Vector2_8cpp__incl.map delete mode 100644 Doxygen/build/Vector2_8cpp__incl.md5 delete mode 100644 Doxygen/build/Vector2_8cpp__incl.png delete mode 100644 Doxygen/build/Vector2_8cpp_source.html delete mode 100644 Doxygen/build/Vector2_8h.html delete mode 100644 Doxygen/build/Vector2_8h__dep__incl.map delete mode 100644 Doxygen/build/Vector2_8h__dep__incl.md5 delete mode 100644 Doxygen/build/Vector2_8h__dep__incl.png delete mode 100644 Doxygen/build/Vector2_8h__incl.map delete mode 100644 Doxygen/build/Vector2_8h__incl.md5 delete mode 100644 Doxygen/build/Vector2_8h__incl.png delete mode 100644 Doxygen/build/Vector2_8h_source.html delete mode 100644 Doxygen/build/Vector3_8cpp.html delete mode 100644 Doxygen/build/Vector3_8cpp__incl.map delete mode 100644 Doxygen/build/Vector3_8cpp__incl.md5 delete mode 100644 Doxygen/build/Vector3_8cpp__incl.png delete mode 100644 Doxygen/build/Vector3_8cpp_source.html delete mode 100644 Doxygen/build/Vector3_8h.html delete mode 100644 Doxygen/build/Vector3_8h__dep__incl.map delete mode 100644 Doxygen/build/Vector3_8h__dep__incl.md5 delete mode 100644 Doxygen/build/Vector3_8h__dep__incl.png delete mode 100644 Doxygen/build/Vector3_8h__incl.map delete mode 100644 Doxygen/build/Vector3_8h__incl.md5 delete mode 100644 Doxygen/build/Vector3_8h__incl.png delete mode 100644 Doxygen/build/Vector3_8h_source.html delete mode 100644 Doxygen/build/Vector4_8cpp.html delete mode 100644 Doxygen/build/Vector4_8cpp__incl.map delete mode 100644 Doxygen/build/Vector4_8cpp__incl.md5 delete mode 100644 Doxygen/build/Vector4_8cpp__incl.png delete mode 100644 Doxygen/build/Vector4_8cpp_source.html delete mode 100644 Doxygen/build/Vector4_8h.html delete mode 100644 Doxygen/build/Vector4_8h__dep__incl.map delete mode 100644 Doxygen/build/Vector4_8h__dep__incl.md5 delete mode 100644 Doxygen/build/Vector4_8h__dep__incl.png delete mode 100644 Doxygen/build/Vector4_8h__incl.map delete mode 100644 Doxygen/build/Vector4_8h__incl.md5 delete mode 100644 Doxygen/build/Vector4_8h__incl.png delete mode 100644 Doxygen/build/Vector4_8h_source.html delete mode 100644 Doxygen/build/annotated.html delete mode 100644 Doxygen/build/bc_s.png delete mode 100644 Doxygen/build/bdwn.png delete mode 100644 Doxygen/build/classEule_1_1Collider-members.html delete mode 100644 Doxygen/build/classEule_1_1Collider.html delete mode 100644 Doxygen/build/classEule_1_1Collider__inherit__graph.map delete mode 100644 Doxygen/build/classEule_1_1Collider__inherit__graph.md5 delete mode 100644 Doxygen/build/classEule_1_1Collider__inherit__graph.png delete mode 100644 Doxygen/build/classEule_1_1Math-members.html delete mode 100644 Doxygen/build/classEule_1_1Math.html delete mode 100644 Doxygen/build/classEule_1_1Matrix4x4-members.html delete mode 100644 Doxygen/build/classEule_1_1Matrix4x4.html delete mode 100644 Doxygen/build/classEule_1_1Quaternion-members.html delete mode 100644 Doxygen/build/classEule_1_1Quaternion.html delete mode 100644 Doxygen/build/classEule_1_1TrapazoidalPrismCollider-members.html delete mode 100644 Doxygen/build/classEule_1_1TrapazoidalPrismCollider.html delete mode 100644 Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.map delete mode 100644 Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.md5 delete mode 100644 Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.png delete mode 100644 Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.map delete mode 100644 Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.md5 delete mode 100644 Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.png delete mode 100644 Doxygen/build/classEule_1_1Vector2-members.html delete mode 100644 Doxygen/build/classEule_1_1Vector2.html delete mode 100644 Doxygen/build/classEule_1_1Vector3-members.html delete mode 100644 Doxygen/build/classEule_1_1Vector3.html delete mode 100644 Doxygen/build/classEule_1_1Vector3__coll__graph.map delete mode 100644 Doxygen/build/classEule_1_1Vector3__coll__graph.md5 delete mode 100644 Doxygen/build/classEule_1_1Vector3__coll__graph.png delete mode 100644 Doxygen/build/classEule_1_1Vector4-members.html delete mode 100644 Doxygen/build/classEule_1_1Vector4.html delete mode 100644 Doxygen/build/classEule_1_1Vector4__coll__graph.map delete mode 100644 Doxygen/build/classEule_1_1Vector4__coll__graph.md5 delete mode 100644 Doxygen/build/classEule_1_1Vector4__coll__graph.png delete mode 100644 Doxygen/build/classes.html delete mode 100644 Doxygen/build/closed.png delete mode 100644 Doxygen/build/dir_1fefb9009d41306f82e23dc917083c9e.html delete mode 100644 Doxygen/build/dir_29a3c7679fa29c698d8a016dea7d0b26.html delete mode 100644 Doxygen/build/dir_b9243fac9f130637c8e868960898670e.html delete mode 100644 Doxygen/build/dir_c806cfdecfdfd6ea1cddf5ffe1bf0281.html delete mode 100644 Doxygen/build/dir_e847076a3068559a2237d545d5d06d37.html delete mode 100644 Doxygen/build/doc.png delete mode 100644 Doxygen/build/doxygen.css delete mode 100644 Doxygen/build/doxygen.png delete mode 100644 Doxygen/build/dynsections.js delete mode 100644 Doxygen/build/files.html delete mode 100644 Doxygen/build/folderclosed.png delete mode 100644 Doxygen/build/folderopen.png delete mode 100644 Doxygen/build/functions.html delete mode 100644 Doxygen/build/functions_b.html delete mode 100644 Doxygen/build/functions_c.html delete mode 100644 Doxygen/build/functions_d.html delete mode 100644 Doxygen/build/functions_e.html delete mode 100644 Doxygen/build/functions_f.html delete mode 100644 Doxygen/build/functions_func.html delete mode 100644 Doxygen/build/functions_g.html delete mode 100644 Doxygen/build/functions_h.html delete mode 100644 Doxygen/build/functions_i.html delete mode 100644 Doxygen/build/functions_j.html delete mode 100644 Doxygen/build/functions_k.html delete mode 100644 Doxygen/build/functions_l.html delete mode 100644 Doxygen/build/functions_m.html delete mode 100644 Doxygen/build/functions_n.html delete mode 100644 Doxygen/build/functions_o.html delete mode 100644 Doxygen/build/functions_p.html delete mode 100644 Doxygen/build/functions_q.html delete mode 100644 Doxygen/build/functions_r.html delete mode 100644 Doxygen/build/functions_rela.html delete mode 100644 Doxygen/build/functions_s.html delete mode 100644 Doxygen/build/functions_t.html delete mode 100644 Doxygen/build/functions_u.html delete mode 100644 Doxygen/build/functions_v.html delete mode 100644 Doxygen/build/functions_vars.html delete mode 100644 Doxygen/build/functions_w.html delete mode 100644 Doxygen/build/functions_x.html delete mode 100644 Doxygen/build/functions_y.html delete mode 100644 Doxygen/build/functions_z.html delete mode 100644 Doxygen/build/functions_~.html delete mode 100644 Doxygen/build/globals.html delete mode 100644 Doxygen/build/globals_defs.html delete mode 100644 Doxygen/build/globals_vars.html delete mode 100644 Doxygen/build/graph_legend.html delete mode 100644 Doxygen/build/graph_legend.md5 delete mode 100644 Doxygen/build/graph_legend.png delete mode 100644 Doxygen/build/hierarchy.html delete mode 100644 Doxygen/build/index.html delete mode 100644 Doxygen/build/inherit_graph_0.map delete mode 100644 Doxygen/build/inherit_graph_0.md5 delete mode 100644 Doxygen/build/inherit_graph_0.png delete mode 100644 Doxygen/build/inherit_graph_1.map delete mode 100644 Doxygen/build/inherit_graph_1.md5 delete mode 100644 Doxygen/build/inherit_graph_1.png delete mode 100644 Doxygen/build/inherit_graph_10.map delete mode 100644 Doxygen/build/inherit_graph_10.md5 delete mode 100644 Doxygen/build/inherit_graph_10.png delete mode 100644 Doxygen/build/inherit_graph_2.map delete mode 100644 Doxygen/build/inherit_graph_2.md5 delete mode 100644 Doxygen/build/inherit_graph_2.png delete mode 100644 Doxygen/build/inherit_graph_3.map delete mode 100644 Doxygen/build/inherit_graph_3.md5 delete mode 100644 Doxygen/build/inherit_graph_3.png delete mode 100644 Doxygen/build/inherit_graph_4.map delete mode 100644 Doxygen/build/inherit_graph_4.md5 delete mode 100644 Doxygen/build/inherit_graph_4.png delete mode 100644 Doxygen/build/inherit_graph_5.map delete mode 100644 Doxygen/build/inherit_graph_5.md5 delete mode 100644 Doxygen/build/inherit_graph_5.png delete mode 100644 Doxygen/build/inherit_graph_6.map delete mode 100644 Doxygen/build/inherit_graph_6.md5 delete mode 100644 Doxygen/build/inherit_graph_6.png delete mode 100644 Doxygen/build/inherit_graph_7.map delete mode 100644 Doxygen/build/inherit_graph_7.md5 delete mode 100644 Doxygen/build/inherit_graph_7.png delete mode 100644 Doxygen/build/inherit_graph_8.map delete mode 100644 Doxygen/build/inherit_graph_8.md5 delete mode 100644 Doxygen/build/inherit_graph_8.png delete mode 100644 Doxygen/build/inherit_graph_9.map delete mode 100644 Doxygen/build/inherit_graph_9.md5 delete mode 100644 Doxygen/build/inherit_graph_9.png delete mode 100644 Doxygen/build/inherits.html delete mode 100644 Doxygen/build/jquery.js delete mode 100644 Doxygen/build/menu.js delete mode 100644 Doxygen/build/menudata.js delete mode 100644 Doxygen/build/namespaceEule.html delete mode 100644 Doxygen/build/namespacemembers.html delete mode 100644 Doxygen/build/namespacemembers_func.html delete mode 100644 Doxygen/build/namespacemembers_type.html delete mode 100644 Doxygen/build/namespaces.html delete mode 100644 Doxygen/build/nav_f.png delete mode 100644 Doxygen/build/nav_g.png delete mode 100644 Doxygen/build/nav_h.png delete mode 100644 Doxygen/build/open.png delete mode 100644 Doxygen/build/search/all_0.html delete mode 100644 Doxygen/build/search/all_0.js delete mode 100644 Doxygen/build/search/all_1.html delete mode 100644 Doxygen/build/search/all_1.js delete mode 100644 Doxygen/build/search/all_10.html delete mode 100644 Doxygen/build/search/all_10.js delete mode 100644 Doxygen/build/search/all_11.html delete mode 100644 Doxygen/build/search/all_11.js delete mode 100644 Doxygen/build/search/all_12.html delete mode 100644 Doxygen/build/search/all_12.js delete mode 100644 Doxygen/build/search/all_13.html delete mode 100644 Doxygen/build/search/all_13.js delete mode 100644 Doxygen/build/search/all_14.html delete mode 100644 Doxygen/build/search/all_14.js delete mode 100644 Doxygen/build/search/all_15.html delete mode 100644 Doxygen/build/search/all_15.js delete mode 100644 Doxygen/build/search/all_16.html delete mode 100644 Doxygen/build/search/all_16.js delete mode 100644 Doxygen/build/search/all_17.html delete mode 100644 Doxygen/build/search/all_17.js delete mode 100644 Doxygen/build/search/all_18.html delete mode 100644 Doxygen/build/search/all_18.js delete mode 100644 Doxygen/build/search/all_19.html delete mode 100644 Doxygen/build/search/all_19.js delete mode 100644 Doxygen/build/search/all_1a.html delete mode 100644 Doxygen/build/search/all_1a.js delete mode 100644 Doxygen/build/search/all_2.html delete mode 100644 Doxygen/build/search/all_2.js delete mode 100644 Doxygen/build/search/all_3.html delete mode 100644 Doxygen/build/search/all_3.js delete mode 100644 Doxygen/build/search/all_4.html delete mode 100644 Doxygen/build/search/all_4.js delete mode 100644 Doxygen/build/search/all_5.html delete mode 100644 Doxygen/build/search/all_5.js delete mode 100644 Doxygen/build/search/all_6.html delete mode 100644 Doxygen/build/search/all_6.js delete mode 100644 Doxygen/build/search/all_7.html delete mode 100644 Doxygen/build/search/all_7.js delete mode 100644 Doxygen/build/search/all_8.html delete mode 100644 Doxygen/build/search/all_8.js delete mode 100644 Doxygen/build/search/all_9.html delete mode 100644 Doxygen/build/search/all_9.js delete mode 100644 Doxygen/build/search/all_a.html delete mode 100644 Doxygen/build/search/all_a.js delete mode 100644 Doxygen/build/search/all_b.html delete mode 100644 Doxygen/build/search/all_b.js delete mode 100644 Doxygen/build/search/all_c.html delete mode 100644 Doxygen/build/search/all_c.js delete mode 100644 Doxygen/build/search/all_d.html delete mode 100644 Doxygen/build/search/all_d.js delete mode 100644 Doxygen/build/search/all_e.html delete mode 100644 Doxygen/build/search/all_e.js delete mode 100644 Doxygen/build/search/all_f.html delete mode 100644 Doxygen/build/search/all_f.js delete mode 100644 Doxygen/build/search/classes_0.html delete mode 100644 Doxygen/build/search/classes_0.js delete mode 100644 Doxygen/build/search/classes_1.html delete mode 100644 Doxygen/build/search/classes_1.js delete mode 100644 Doxygen/build/search/classes_2.html delete mode 100644 Doxygen/build/search/classes_2.js delete mode 100644 Doxygen/build/search/classes_3.html delete mode 100644 Doxygen/build/search/classes_3.js delete mode 100644 Doxygen/build/search/classes_4.html delete mode 100644 Doxygen/build/search/classes_4.js delete mode 100644 Doxygen/build/search/classes_5.html delete mode 100644 Doxygen/build/search/classes_5.js delete mode 100644 Doxygen/build/search/close.png delete mode 100644 Doxygen/build/search/defines_0.html delete mode 100644 Doxygen/build/search/defines_0.js delete mode 100644 Doxygen/build/search/defines_1.html delete mode 100644 Doxygen/build/search/defines_1.js delete mode 100644 Doxygen/build/search/defines_2.html delete mode 100644 Doxygen/build/search/defines_2.js delete mode 100644 Doxygen/build/search/defines_3.html delete mode 100644 Doxygen/build/search/defines_3.js delete mode 100644 Doxygen/build/search/defines_4.html delete mode 100644 Doxygen/build/search/defines_4.js delete mode 100644 Doxygen/build/search/files_0.html delete mode 100644 Doxygen/build/search/files_0.js delete mode 100644 Doxygen/build/search/files_1.html delete mode 100644 Doxygen/build/search/files_1.js delete mode 100644 Doxygen/build/search/files_2.html delete mode 100644 Doxygen/build/search/files_2.js delete mode 100644 Doxygen/build/search/files_3.html delete mode 100644 Doxygen/build/search/files_3.js delete mode 100644 Doxygen/build/search/files_4.html delete mode 100644 Doxygen/build/search/files_4.js delete mode 100644 Doxygen/build/search/files_5.html delete mode 100644 Doxygen/build/search/files_5.js delete mode 100644 Doxygen/build/search/files_6.html delete mode 100644 Doxygen/build/search/files_6.js delete mode 100644 Doxygen/build/search/functions_0.html delete mode 100644 Doxygen/build/search/functions_0.js delete mode 100644 Doxygen/build/search/functions_1.html delete mode 100644 Doxygen/build/search/functions_1.js delete mode 100644 Doxygen/build/search/functions_2.html delete mode 100644 Doxygen/build/search/functions_2.js delete mode 100644 Doxygen/build/search/functions_3.html delete mode 100644 Doxygen/build/search/functions_3.js delete mode 100644 Doxygen/build/search/functions_4.html delete mode 100644 Doxygen/build/search/functions_4.js delete mode 100644 Doxygen/build/search/functions_5.html delete mode 100644 Doxygen/build/search/functions_5.js delete mode 100644 Doxygen/build/search/functions_6.html delete mode 100644 Doxygen/build/search/functions_6.js delete mode 100644 Doxygen/build/search/functions_7.html delete mode 100644 Doxygen/build/search/functions_7.js delete mode 100644 Doxygen/build/search/functions_8.html delete mode 100644 Doxygen/build/search/functions_8.js delete mode 100644 Doxygen/build/search/functions_9.html delete mode 100644 Doxygen/build/search/functions_9.js delete mode 100644 Doxygen/build/search/functions_a.html delete mode 100644 Doxygen/build/search/functions_a.js delete mode 100644 Doxygen/build/search/functions_b.html delete mode 100644 Doxygen/build/search/functions_b.js delete mode 100644 Doxygen/build/search/functions_c.html delete mode 100644 Doxygen/build/search/functions_c.js delete mode 100644 Doxygen/build/search/functions_d.html delete mode 100644 Doxygen/build/search/functions_d.js delete mode 100644 Doxygen/build/search/functions_e.html delete mode 100644 Doxygen/build/search/functions_e.js delete mode 100644 Doxygen/build/search/functions_f.html delete mode 100644 Doxygen/build/search/functions_f.js delete mode 100644 Doxygen/build/search/mag_sel.png delete mode 100644 Doxygen/build/search/namespaces_0.html delete mode 100644 Doxygen/build/search/namespaces_0.js delete mode 100644 Doxygen/build/search/nomatches.html delete mode 100644 Doxygen/build/search/related_0.html delete mode 100644 Doxygen/build/search/related_0.js delete mode 100644 Doxygen/build/search/search.css delete mode 100644 Doxygen/build/search/search.js delete mode 100644 Doxygen/build/search/search_l.png delete mode 100644 Doxygen/build/search/search_m.png delete mode 100644 Doxygen/build/search/search_r.png delete mode 100644 Doxygen/build/search/searchdata.js delete mode 100644 Doxygen/build/search/typedefs_0.html delete mode 100644 Doxygen/build/search/typedefs_0.js delete mode 100644 Doxygen/build/search/variables_0.html delete mode 100644 Doxygen/build/search/variables_0.js delete mode 100644 Doxygen/build/search/variables_1.html delete mode 100644 Doxygen/build/search/variables_1.js delete mode 100644 Doxygen/build/search/variables_10.html delete mode 100644 Doxygen/build/search/variables_10.js delete mode 100644 Doxygen/build/search/variables_11.html delete mode 100644 Doxygen/build/search/variables_11.js delete mode 100644 Doxygen/build/search/variables_12.html delete mode 100644 Doxygen/build/search/variables_12.js delete mode 100644 Doxygen/build/search/variables_13.html delete mode 100644 Doxygen/build/search/variables_13.js delete mode 100644 Doxygen/build/search/variables_14.html delete mode 100644 Doxygen/build/search/variables_14.js delete mode 100644 Doxygen/build/search/variables_15.html delete mode 100644 Doxygen/build/search/variables_15.js delete mode 100644 Doxygen/build/search/variables_16.html delete mode 100644 Doxygen/build/search/variables_16.js delete mode 100644 Doxygen/build/search/variables_17.html delete mode 100644 Doxygen/build/search/variables_17.js delete mode 100644 Doxygen/build/search/variables_18.html delete mode 100644 Doxygen/build/search/variables_18.js delete mode 100644 Doxygen/build/search/variables_2.html delete mode 100644 Doxygen/build/search/variables_2.js delete mode 100644 Doxygen/build/search/variables_3.html delete mode 100644 Doxygen/build/search/variables_3.js delete mode 100644 Doxygen/build/search/variables_4.html delete mode 100644 Doxygen/build/search/variables_4.js delete mode 100644 Doxygen/build/search/variables_5.html delete mode 100644 Doxygen/build/search/variables_5.js delete mode 100644 Doxygen/build/search/variables_6.html delete mode 100644 Doxygen/build/search/variables_6.js delete mode 100644 Doxygen/build/search/variables_7.html delete mode 100644 Doxygen/build/search/variables_7.js delete mode 100644 Doxygen/build/search/variables_8.html delete mode 100644 Doxygen/build/search/variables_8.js delete mode 100644 Doxygen/build/search/variables_9.html delete mode 100644 Doxygen/build/search/variables_9.js delete mode 100644 Doxygen/build/search/variables_a.html delete mode 100644 Doxygen/build/search/variables_a.js delete mode 100644 Doxygen/build/search/variables_b.html delete mode 100644 Doxygen/build/search/variables_b.js delete mode 100644 Doxygen/build/search/variables_c.html delete mode 100644 Doxygen/build/search/variables_c.js delete mode 100644 Doxygen/build/search/variables_d.html delete mode 100644 Doxygen/build/search/variables_d.js delete mode 100644 Doxygen/build/search/variables_e.html delete mode 100644 Doxygen/build/search/variables_e.js delete mode 100644 Doxygen/build/search/variables_f.html delete mode 100644 Doxygen/build/search/variables_f.js delete mode 100644 Doxygen/build/splitbar.png delete mode 100644 Doxygen/build/structEule_1_1Rect-members.html delete mode 100644 Doxygen/build/structEule_1_1Rect.html delete mode 100644 Doxygen/build/structEule_1_1Rect__coll__graph.map delete mode 100644 Doxygen/build/structEule_1_1Rect__coll__graph.md5 delete mode 100644 Doxygen/build/structEule_1_1Rect__coll__graph.png delete mode 100644 Doxygen/build/sync_off.png delete mode 100644 Doxygen/build/sync_on.png delete mode 100644 Doxygen/build/tab_a.png delete mode 100644 Doxygen/build/tab_b.png delete mode 100644 Doxygen/build/tab_h.png delete mode 100644 Doxygen/build/tab_s.png delete mode 100644 Doxygen/build/tabs.css delete mode 100644 Doxygen/build/version_8h.html delete mode 100644 Doxygen/build/version_8h_source.html delete mode 100644 Doxygen/build/x64_2Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html delete mode 100644 Doxygen/build/x64_2Release_2Eule_8vcxproj_8FileListAbsolute_8txt.html diff --git a/Doxygen/.gitignore b/Doxygen/.gitignore new file mode 100644 index 0000000..567609b --- /dev/null +++ b/Doxygen/.gitignore @@ -0,0 +1 @@ +build/ diff --git a/Doxygen/build/Collider_8cpp.html b/Doxygen/build/Collider_8cpp.html deleted file mode 100644 index b84bff0..0000000 --- a/Doxygen/build/Collider_8cpp.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Collider.cpp File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Collider.cpp File Reference
-
-
-
#include "Collider.h"
-
-Include dependency graph for Collider.cpp:
-
-
- - - - - - - - - - - - -
-
-

Go to the source code of this file.

-
- - - - diff --git a/Doxygen/build/Collider_8cpp__incl.map b/Doxygen/build/Collider_8cpp__incl.map deleted file mode 100644 index c94adde..0000000 --- a/Doxygen/build/Collider_8cpp__incl.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/Doxygen/build/Collider_8cpp__incl.md5 b/Doxygen/build/Collider_8cpp__incl.md5 deleted file mode 100644 index 0f1a642..0000000 --- a/Doxygen/build/Collider_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -a0ca2d0389b8e053b94a9d04c38298d1 \ No newline at end of file diff --git a/Doxygen/build/Collider_8cpp__incl.png b/Doxygen/build/Collider_8cpp__incl.png deleted file mode 100644 index 9d9cbfda4f3dfbb8f61baba479b6edbd2c297483..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19314 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 HQ$iB}fMD_P diff --git a/Doxygen/build/Collider_8cpp_source.html b/Doxygen/build/Collider_8cpp_source.html deleted file mode 100644 index 7d6ade8..0000000 --- a/Doxygen/build/Collider_8cpp_source.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Collider.cpp Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Collider.cpp
-
- - - - - - diff --git a/Doxygen/build/Collider_8h.html b/Doxygen/build/Collider_8h.html deleted file mode 100644 index d275e5d..0000000 --- a/Doxygen/build/Collider_8h.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Collider.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Collider.h File Reference
-
-
-
#include "Vector3.h"
-
-Include dependency graph for Collider.h:
-
-
- - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  Eule::Collider
 Abstract class of a collider domain. More...
 
- - - -

-Namespaces

 Eule
 
-
- - - - diff --git a/Doxygen/build/Collider_8h__dep__incl.map b/Doxygen/build/Collider_8h__dep__incl.map deleted file mode 100644 index f7be80a..0000000 --- a/Doxygen/build/Collider_8h__dep__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Doxygen/build/Collider_8h__dep__incl.md5 b/Doxygen/build/Collider_8h__dep__incl.md5 deleted file mode 100644 index 69ad73f..0000000 --- a/Doxygen/build/Collider_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -a3862d315002f8b279d1429df3698c3b \ No newline at end of file diff --git a/Doxygen/build/Collider_8h__dep__incl.png b/Doxygen/build/Collider_8h__dep__incl.png deleted file mode 100644 index b3211902ee79a620b1b9f285daeddec26af63c17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9737 zcmc(FbySpZ*X|%9NFyL6gS3iBDAJA6DJ2~O3L+&+cZf7fDy>L^;?PKUrxMcA!q5$8 z&+mQD_nq^8Yn^}3axHaDJaa$$-uJbyctX@vWQp);@ev3Fk-VIY1_FT<3IDIcy99qH zU%Ijc|6DRtl$Al8WB#Poe0hgJTt~>uNNT!#{QKKoS9ADG9KDZt>!^dpb=@y6J!^|n zv5T8e)F*;g@aY0;ZAX6>f%W8}_Lp}tv_Wo6sP9TV*ixKof*CWPt8JFrtJB+*qdug$ zFj9|fka%}Fl=m!@;=0tPSfvDyy8lIq+idV1H%{90A_GaKeBQi~yMSGReVr*ID7fAK z%^Mc;t?Nuo?Fl0A1}}33cG}p?+#K_3Jk8LC#>PLyzS$c1leWVGHz@F5ZcNhOzklB` zSc)$yF)>8^{Dk~OH|ED&qAc_5+?>Cp|D|^NOT%^1%(CdsR)$XcOX{%#3z9N2F+8rM zWYJHQkTNnXH1BY=I^8#Ff<2G-mbC~q%sblK>!<7eqvPXsI5rQCj+ofkvb0y223{*6 zhn_A=`!QSRyOe2>qg*!4K8m`RcJ0*FNt9Psj*PmoD<=hfR*cV(jYO8a?cRE|_RClN z>;M}F2dB8Cq_HnudUN4}UBj&M6G?ppN(gohKYPgM9f29wOqx4*0YlOWg2P zrcH0isCmpTBCZPy)A{=PmcLxS^8ER8bPJuGoV9;Z5!b}T1iF>Md-`a1Rkz%pF^G^R zLrd1tk@xCtT_2mDh3U?#Bk1jI>8T%{&Tr$h8D|o3hu^A-pHk%H?dbwq!Ef6Tc3bRE{o>4vwgrlw|M6Bgq9Y`>Pr^XTQ;WDOk> ziPWudWUb{?3BLmSaFvYAx85JurY6^EQ60(|!5|*-AoOZFbOtvMPkq(KkIg((1TIuQ0-Z83vn5dn}%6`_UA04G>X=$Mrb-U;2 zCQ6J&Tb% z_w&0T|Md#rMJ1%>9dmQ@0)M0SQ7P9klnrj6ly8muKI}}!1TXAJ9Y<011%$o5y+qZk zzog{k{_DT1;`Jv-My^_;XlZC@lCWP{Ti-%xuFgcl>2%qezYMp*hkFnckZwcg^Mxdh zg~_Ni17Bo+!s$&!#6vGHvGvKC(C!cXI=Ulp5$sEZb-7x3Q86)ouq1;TH%bN%G!{Mq zLArLH!$KF$&c+l&-5@sl)G3QY@+uWML&)d7Vp1bEa??%Jl?3~61io{#cApZY-` zO2yRzMVg+U54cRumiD;B@=a){e|UKK2y1q{u@}wi&!W}{dST2FnklM1^Gi;q4YK22-d)j39+Qw6J8(ya z2S}yY$uf9;il2%+03hkFc6BNkx6koljeN4$8nZ*srLUeW?7H=7;kn-%T3o2LP?>ov zafS5t484}SBuq>(VgCbX+5UO?wLTwHJeP5taDW0O1>UDm6!nvncr7iv#|b2YKRE+` zY)EHZIf*f0PA}>;upa5U+R_rieSh6=q1$$Ish@TJPjknW(9eHN5)yVAjJ++=(x%z) z@n2*Xb4$nR<~BsKE(^1fw9%-kFa0-<{WL*w@l!^{=Q2b@?{J58 z&CKqbncbPI^HmgZV#8`~zVPtjr5m?3Z91rFX|MARkleXL%=-}kWK;H5b+uTqo?(6> zoRBxOvtKrnlgAr7^VoxkR((@M|L*REMaaESLb8m`wR+D?RE!I_pm{SgX6^UaJ@46A z;-M<3o0~1F-ue1oI6Gqo+%%!d;9TwG@|Kj4(5(1+ivk~hFfCh-h=YTikbaE5F=)3g zO|plZfAR5U^~-D|G0)d0k`Fdpow#{^5hspFir2UVd?aHd4zmFn#hwcin@T8M`axRLID4_s}gO46|A_6a@u^WWm*^ z!yTWx>VNk2AxcXZbid9jCuR&9O8DUa9eW%n@AvRw5I4VF$l98Rh}TKHQa{-;7nEwP zBlez)t0$njs>$Bk&;I;GtnXasc+V$KRQ$_@+lPjzjXif&5|@L5@VgSXgVaCAhP?JN=DT~3TpNgit>wdiJLvoxP=DnbvcI`vngo+TbSILIgPaa@G{ zD1P-sVEPySwVn+(0u5jg%Yn9}7n%xsjxLtzg@2h&cv-(%IXn z4R{dR(3cf{6S^hcO4YqWnkiR@Xtm+qupr~b(&vJgNFq^Be~(do{i>KC(81&3!qwDr zN3u1dfX7URbfhqR#O)W8x_Rqel7Y517oWrJ+SbjvpEHa6N~^>yw^B(j=$9c|*;7x# z;*DQ51QC(%Y|-t?pu*ez5olf|{kXWho;>hA(W{ zte0FQt1fHgg_2$Kpw5)F^QrOVxF%NpCM5GJ5$$}Kbnw-=K&mm*t^}@PM~n9(MYpc- zT@u-TYNqjM!?fpP^1_XN@)Czq1!vmo6I{eqm5D^Yatt0~F{n+6cw8bC_5OW0i5PWY2>Ed*{T20a z9@l$VBuEk8T5lLIJ?0G;`8`fH>7I_p_|NXe!KbsjV{qGU6XzJcZ|5co_uEh3G-_?86gbKCP#W*l@7`W)}&hO zeSYEKi1^8D-y<yurA$j-IY5E<5kFkZ}^xrM2kf8Ihbw|ycJ zFewZUAjP{Zc$ur{IyD{L%+$G8YKZ^6hY>I9)1?XEkl%dY;S5j|Hfwf9BDWiAg>+-% z;9wxQy4DcQtixm8VshJPty$9HR=l2JnDPg+ua@0du)&!nHJUq4ft}fm6;%qF}lLM}c7uOm`3R=?u@N>1q zxOrwwVAI%05)EsTf}qCN`F4?Fr$e}tlb-X$A+*J($6TiU8QkBWnZKQ$mR}kjG+K|! zj-K_YPzoUZ_3aO}h{#BWv&|#G0MpqtS~{_6Dl_x=H1pOGY91y$o1YJ*3+}`T-?k2L zSzz=J3&TwiKX<<-?nUqA)rbLSlc#MWDkxbz-va%}xp%5wEuCD#rj0?DpH59Gz=Fw4 zx3aCO^Cfme;veJ`a=Q+Z6F-eHaFM<=jKdb`R;Pbco&l|GpQ~KmXB0fNVs;Uip=GI` z&ctpCKbVBeZ1(yn;r~Dd3VecL$KVG<6ulxVa;E9D=B-{K0OSY9kxk#9t*hOjfHyzU zC>dAqUIB)IN8lc*%5!~L=4N_&`UQkB3eC&+mpLpf-y$-TjVo3`t1@(mHdcYv{Wxi> zv#m`pA!#pKl=#Qa93?I7t>ta~nMmf~pdjsgp-FGj($a*CgFk$r1F>MdxXPIEHk^)M zWs8@RE%Gar>jt&;0f^yM5Bj~my)_#d-aM79X&*r{GWnMI|JJu|(IOzm;P_pwc`IqH zw7k3wD+Y;>8;Z`3Taq@m!TYqgnDxzY_piXr?5tl@RFqzh;;kAvB$4E!LwmKsw8+!P z4CXPpJl`dCP%$DRqN3?)H#(|;{A$t->tutN6L8&PK}>@P!DyBIf&x=BGe4smH`Cpf zVV9Ewhl2dop`1tP-Q9xN%Iu^06&qq=;y;CD^A=AuXTn3>ate>POOD$oCax7#Z{bHE zMQ_a51$NWNcJy zY~V)iInveD^$k?Igjx>ixPxL>O_3VYa;@}5fsHmv;6W80@8=RWTAmqGq5#-v9SOpd~ zHtX1surN@-%xP*jxIr~5B@0o42woaPaexLxgKh@lDX~rO2P~=jbZ;Cq;Dhl}+sz)~ zjqB{}vLG|W=#>=}{WWp|0t0a>UvEUbd4nf!YwzITTU#rBiHPtzb0)n08LEPHYy${;IW4rCTR=yR{P-~tz z+_dw)6{`SJf|{DTuD$&-hjzY?%fd4Wt-oJ7;vyp=3U>(ebIKSPqX@)wI-RH~s1R)LY#j97Zy37Pp*`uc=ljjO9*Ie695OL*w zF;VWzEE{qC=FQ7JJw2d%M_yi>UdGkS(VXpw-F)Da{BVTBM7hJ${tO&&cgSdHLTtxN+{Z8*xR>$ zq!$7M1Ao=H^Zz(r7hW4fDcU4<>^-vRba!*JPImP?*=$`J{6Ye!3L&?#p|xveIL4%9 zaeDr5uR}^oDk?cSyjScvzw2mkZPXtlK}ALBU%Yrheg8RipxDIK;^H_4t!RW!eexFbPNay2`TqJ{{dw6 z4dQxCOw6sYjfL(H7kuR8RMwFqW3HBPx-Y1(_otd}hgaZ4kgKSuFmZA!<1yCM>I|nkhkV{yY;J6n zJ~%wQ%oxzt*-7rS*h9Inu)riLYB;zzFupn}^x}6VE3_rwar*bk8u!p%@pFT1G1yw@ z_2|^pqQv{A4Hv(H8O9j!^nGhc%pm~OaCL8cI~hVoK|vv~^F8jcOQ}|Jge$l;iiPZq zj93U0E2}Spl>GPZHJu*sI~?!XBI*EK&?|XG4FF5vULbsihKBH0l~h!MqNB;K(bMw{ zrns*Qc8la_XlQ`&!q?Z=@BV(ruu{$%8~u{BRHV#qDhS|TJNdIS_;p>!@844-FY-Te z+(qTSpG=*ZnZYzrS63GR$n@f(jwOR;Y3j?zXW%&MetU9xZ(}O*)!#9!sL83kmEOu0 zjWK8~KwU5oaX*TA(z@@jWAKDy!l)PawgEb-_-Q}W&fjsWM_*K$n?tEk9q&E%u+qTd z0n5r4JhhSUF}~;)myb6#pPzz3a?wYx3M-9w*Ksu0qBBk}Jm+~|K719#kc76jb|Q8Y z7${gGHDPL7ughNio?cqgU9Rb&7k(w9u1*Hcb8iri9^dvSK+9IJB2i-wt0SE9wg|Nu z<}rGDdW=J}z0i$seq-6Cw{U85(rEE8T+46|l`B#uz5yoB=3FZCl2K4- zTAI{koPO%ua&T}+5O4s$g=uYui-ReZ)OFD5R|@I@uLA&OD@)`Za?8bL>v zjLb}o6@&pAY+T}|Oxeg=hFMJEn*xkwZt}=GckUeQjoU?k_z((Bd;9UXPYvH-^icCz zQ)DS6`hgWQ*PkgX;J$aex~4{5O%2=yCK({eg_0Z;_|GTG$@I%!G{Xr3m>?2y+ra}% zBnaRc46wcmCo95h0;DCD-BNH5G4I~-yk0kOadpL*gfZiTpB1SHsksp)R=p3wK!k=3 zgeosj1Z`oQ)pcq|dwU;^oF*8G4u3i*=l}efSuLu4sHyor>m*D0gZ<8ux`+!J0Ru%& zUf#E?tgL67F0XRUMgwFq_zum*-@nU1c^y`UavW1N4Enuttq9Ur^=|0y zCIZurTHH(IHYX<^jmW)w6qqqFoJVC~XlQC>75sO+OsA>_js#e?vhjBe(==~&5;kd# zTrvy@2uQQ)O+lm45{o^_4reE>gh&zHyWU4T%jo@mS@0)|ofcKr#>-S!@BPRSjy_^>b_hpj*B=rjJIzS!V-rIOQ0H0wA@HP31KhnKCAb`vA9I@AqfL5(D0h> zKMHpo>Z-+tosIJfPGvM7MLE?~|5$PxXHi%FT12LmZz}o-OLgO%Etdos7^RJUyMM~0 z#iMtJpBTzhvl(sd;|n0b@cQ2&!@s#1pX0`)G&pfIngS;4b90YU9iouHFy1fREO4$M z-a`c`7HD5*Os7n7SJ`ikdo-uU=K6B&7a2_S2wl0}@`{Rd@AETfZEwR7FRZ+G z^&9%tv6wU6TnGh*F9W+gJT!cJe*RYqA`~{IUtzy~<>}U**&ZBJv%D72jKt(0!L{6qXZ!nnDj&;zySi|BA4>0n(0-HqrLFW{>5qi6~wv&Qvm>+z{nE8cnLIV&K1FsLMD09fJwkYZ-<6wT{ z+v^P+aNTq*D@p6Z>0UeRS|<^zt9xSdA^C=eo{VBO!}V&*ZoXCo1X<9sKj!-g=GCLN~`b)`0M9$Iasn`CSUK_CQ$COAUkD#qRq!6qGsr z)fMW2ToPb(bG6am8Rj_)5+qw@5f)}JZ?zUb;pXF`TI^v3)AzhT>4mMWc4~Sw;enp=5j_$ze4jLONRh}wzHlp~=Ax9eG|#Iw-HOKR z8P@2{&6}@0EUm6Uv20i6Pf^dDwDjrRl7p*_J6)RaI|LyyY#D4kjL6cB8*`t;5i+y|XRb^ml^G z%Fs;!*OAAkz3c2io~ySyI0W2wvh#Vc>Jsl-al7q2g>m25)O4}NZMOmNZu4MsPA{ic zY^+a>+cj!(b9>vLRBDwE;us4 zCne$Q=;(ye^5H|Q@U5Br|0PD=a~8I|ZTF|8aCdhvC;<6QF&ZYprN;`}XZ(w_R(@7y=QMZ|@!( z@vJe32vmq)PR>pEA%~d;oC4c2lllwgRaK2$U4-!U*5$!3Utj&z`!zn^I52PpQY~2r z2Ofk3o-gcx8B8lYLPD9Jg@zb;NM-CnhJ}Tdv_YeV`kl+ zpFqfB3dMIhK&M-db{y$wZQEe#h-!bwJ_j@sm@FPp5ugc#c6N5%lDIBOBJUL}Vx2v= zyZQ0(@FZTmxHIXt$|>{Ufh3-9LxU71>I2`E9*EUvR2K|dbUSO`zKT(np`ncxPK!~H&dR@I)1p2ucbMzTctFt9 z+R6-@283)dsYp@()2*7C6z9_;=i3J5q>PM=Z9P3LR;ixamY(i=YxR}Rt5MMO{QUfc zboU9N8jX+@W7Lhz!-v+yBRYi!^)M=VT({;G%wsBl=V}bU8vcB)RhrBOu`Bi{7&sU>&1ySU&XEQ}Hp6M^}!t*yx@DTQTuI68hq zT!(;;J%BXBxYlbH2**fLd{R>G%_8kQAO?XDNydPTfWCn3VOmE=8Vw^5INvbO0!-Bw zQGzM-Zzd1ilT$liSN+)<5GX3B-JqW3=r;>J3%E13`*xH0gIlbnw&QFcKYj#$mju`R zz;B0-U}9vHe6%2bei#Ysn5cMUDGX&JK+M9LlD1&R4~!LRHE%ulloI)^3WoyLzO}X0 z1R5z2RJfd~>d)^rJ9}=W5x~hVKYH}2+v`Tb>y63T?OySp)sf-hl=y*C^NWi%S;`6A zlD7>jHSrjmAn?D4fXrC)g{PF<)C;YeBI~M^f%99dIv|EX;5f`Z3>?q?cE*Z2*OGyA z1=ftEP_KyG#(Vw+Q(IfkiWJa|2%qHSFJE?Q?-%fWp>yI;%fpvI>w$DU7|Iz zI6a-VD<&dx>r-H!+ch0v`t&802M!Ru+gCi^=%+{T7G*xFlxnF|5C8y~Qz6DnjnR zmBgQaltlHwe=3O=iqD|J!BXj%h!ztcul=r~g7aHo?=IR2iXKwe1_*Kc%Iu6W{sR@4 z(azJUOsEPS-`Do;UcTr2(zSF<`9l2RgR=|eAyO)Tsy@4zkLOCK3?FquK z?_h}N56@#>o|nr5IGC(^ZL|asC9yE{DbcxieXW=2TPqc0e11r&ATPh;=!?CcxLhi{MK3%6~6 zlI^Ip|B13PX2p)q(1I7{NITdZapJ1TO0LXH2as3(_Gwb;%n80g+9~K_I z2^a$AkI^b`P$4K{aG7bt7{rlaJLndhNLGARN)@9&J3CwIOUHh-J`n=SsJ^8otK-i; zI3nP_Woza-Zj|B^5e34bfuJ4-ChD)zQPbnSzmzR>w6t$APryKJz)-L;dHl0F)}tz9M|A$hqzL9^JK+6syrK=faIa+ZQSd^1ogy)5#H_xb6*>GS7d zK0ZD|IaAHeH~_s(O(Eo~pS-Nca#xH|!{-XfcB7+x5tju?<+#GKr7P->iB=N{WKc_> z)qy+>nE;y}jxH}3sE|&32wt1k&(p|%!~pOA#fSd;Atx{Ss1;4EUVbK~(=Qr19Uk&g zWh)xVP@!1ii%hxcTgYqe|BCI+|NX?$fAK^bEWDy`6l7%mch4B?u7=lDX6@O-vt0=J M2P!g!QYL=?3rznAl>h($ diff --git a/Doxygen/build/Collider_8h__incl.map b/Doxygen/build/Collider_8h__incl.map deleted file mode 100644 index 050531c..0000000 --- a/Doxygen/build/Collider_8h__incl.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/Doxygen/build/Collider_8h__incl.md5 b/Doxygen/build/Collider_8h__incl.md5 deleted file mode 100644 index 87b8976..0000000 --- a/Doxygen/build/Collider_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9948039f41f85f1963fada39f6f03f97 \ No newline at end of file diff --git a/Doxygen/build/Collider_8h__incl.png b/Doxygen/build/Collider_8h__incl.png deleted file mode 100644 index 27e8cfd7c81adafdc2adc493efd4c6dd14c7cd1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17538 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 - - - - - - -Leonetienne/Eule: Eule/Collider.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Collider.h
-
-
-Go to the documentation of this file.
1 #pragma once
-
2 #include "Vector3.h"
-
3 
-
4 namespace Eule
-
5 {
-
10  class Collider
-
11  {
-
12  public:
-
14  virtual bool Contains(const Vector3d& point) const = 0;
-
15  };
-
16 }
-
-
Abstract class of a collider domain.
Definition: Collider.h:10
- -
virtual bool Contains(const Vector3d &point) const =0
Tests, if this Collider contains a point.
- -
Definition: Collider.h:4
- - - - diff --git a/Doxygen/build/Constants_8h.html b/Doxygen/build/Constants_8h.html deleted file mode 100644 index 61c611f..0000000 --- a/Doxygen/build/Constants_8h.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Constants.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Constants.h File Reference
-
-
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Variables

static constexpr double PI = 3.14159265358979323846264338327950288419716939937510
 Pi up to 50 decimal places. More...
 
static constexpr double HALF_PI = 1.57079632679489661923132169163975144209858469968755
 Pi divided by two. More...
 
static constexpr double Deg2Rad = 0.0174532925199432957692369076848861271344287188854172222222222222
 Factor to convert degrees to radians. More...
 
static constexpr double Rad2Deg = 57.295779513082320876798154814105170332405472466564427711013084788
 Factor to convert radians to degrees. More...
 
-

Variable Documentation

- -

◆ Deg2Rad

- -
-
- - - - - -
- - - - -
constexpr double Deg2Rad = 0.0174532925199432957692369076848861271344287188854172222222222222
-
-staticconstexpr
-
- -

Factor to convert degrees to radians.

- -

Definition at line 12 of file Constants.h.

- -
-
- -

◆ HALF_PI

- -
-
- - - - - -
- - - - -
constexpr double HALF_PI = 1.57079632679489661923132169163975144209858469968755
-
-staticconstexpr
-
- -

Pi divided by two.

- -

Definition at line 9 of file Constants.h.

- -
-
- -

◆ PI

- -
-
- - - - - -
- - - - -
constexpr double PI = 3.14159265358979323846264338327950288419716939937510
-
-staticconstexpr
-
- -

Pi up to 50 decimal places.

- -

Definition at line 6 of file Constants.h.

- -
-
- -

◆ Rad2Deg

- -
-
- - - - - -
- - - - -
constexpr double Rad2Deg = 57.295779513082320876798154814105170332405472466564427711013084788
-
-staticconstexpr
-
- -

Factor to convert radians to degrees.

- -

Definition at line 15 of file Constants.h.

- -
-
-
- - - - diff --git a/Doxygen/build/Constants_8h__dep__incl.map b/Doxygen/build/Constants_8h__dep__incl.map deleted file mode 100644 index fd16cfe..0000000 --- a/Doxygen/build/Constants_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Doxygen/build/Constants_8h__dep__incl.md5 b/Doxygen/build/Constants_8h__dep__incl.md5 deleted file mode 100644 index 9f34a03..0000000 --- a/Doxygen/build/Constants_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -b7f0f6fcf28de72df643fef9d219e14d \ No newline at end of file diff --git a/Doxygen/build/Constants_8h__dep__incl.png b/Doxygen/build/Constants_8h__dep__incl.png deleted file mode 100644 index beb6f19880c1d36b35272b25bc75eaaabd981945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5735 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 diff --git a/Doxygen/build/Constants_8h_source.html b/Doxygen/build/Constants_8h_source.html deleted file mode 100644 index 6c4cbef..0000000 --- a/Doxygen/build/Constants_8h_source.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Constants.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Constants.h
-
-
-Go to the documentation of this file.
1 #pragma once
-
2 
-
3 // Pretty sure the compiler will optimize these calculations out...
-
4 
-
6 static constexpr double PI = 3.14159265358979323846264338327950288419716939937510;
-
7 
-
9 static constexpr double HALF_PI = 1.57079632679489661923132169163975144209858469968755;
-
10 
-
12 static constexpr double Deg2Rad = 0.0174532925199432957692369076848861271344287188854172222222222222;
-
13 
-
15 static constexpr double Rad2Deg = 57.295779513082320876798154814105170332405472466564427711013084788;
-
-
static constexpr double PI
Pi up to 50 decimal places.
Definition: Constants.h:6
-
static constexpr double Deg2Rad
Factor to convert degrees to radians.
Definition: Constants.h:12
-
static constexpr double Rad2Deg
Factor to convert radians to degrees.
Definition: Constants.h:15
-
static constexpr double HALF_PI
Pi divided by two.
Definition: Constants.h:9
- - - - diff --git a/Doxygen/build/Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html b/Doxygen/build/Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html deleted file mode 100644 index 257f8b8..0000000 --- a/Doxygen/build/Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Debug/Eule.vcxproj.FileListAbsolute.txt File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
Eule/Debug/Eule.vcxproj.FileListAbsolute.txt File Reference
-
-
-
- - - - diff --git a/Doxygen/build/Math_8cpp.html b/Doxygen/build/Math_8cpp.html deleted file mode 100644 index 1737852..0000000 --- a/Doxygen/build/Math_8cpp.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Math.cpp File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Math.cpp File Reference
-
-
-
#include "Math.h"
-#include "Constants.h"
-#include <array>
-
-Include dependency graph for Math.cpp:
-
-
- - - - - - - - -
-
-

Go to the source code of this file.

- - - - -

-Macros

#define MAKE_SURE_RNG_IS_INITIALIZED   if (!isRngInitialized) InitRng();
 
-

Macro Definition Documentation

- -

◆ MAKE_SURE_RNG_IS_INITIALIZED

- -
-
- - - - -
#define MAKE_SURE_RNG_IS_INITIALIZED   if (!isRngInitialized) InitRng();
-
- -

Definition at line 8 of file Math.cpp.

- -
-
-
- - - - diff --git a/Doxygen/build/Math_8cpp__incl.map b/Doxygen/build/Math_8cpp__incl.map deleted file mode 100644 index bf72fb5..0000000 --- a/Doxygen/build/Math_8cpp__incl.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/Doxygen/build/Math_8cpp__incl.md5 b/Doxygen/build/Math_8cpp__incl.md5 deleted file mode 100644 index a0793aa..0000000 --- a/Doxygen/build/Math_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -64f48b056a74ba18f5f53630c99b02b9 \ No newline at end of file diff --git a/Doxygen/build/Math_8cpp__incl.png b/Doxygen/build/Math_8cpp__incl.png deleted file mode 100644 index 8a08b154124526164eec6c9a177254839ab07552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10760 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 diff --git a/Doxygen/build/Math_8cpp_source.html b/Doxygen/build/Math_8cpp_source.html deleted file mode 100644 index 6cb8c05..0000000 --- a/Doxygen/build/Math_8cpp_source.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Math.cpp Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Math.cpp
-
-
-Go to the documentation of this file.
1 #include "Math.h"
-
2 #include "Constants.h"
-
3 #include <array>
-
4 
-
5 using namespace Eule;
-
6 
-
7 // Checks if the random number generator is initialized. Does nothing if it is, initializes if it isn't.
-
8 #define MAKE_SURE_RNG_IS_INITIALIZED if (!isRngInitialized) InitRng();
-
9 
-
10 void Math::InitRng()
-
11 {
-
12  // Create truly random source (from hardware events)
-
13  std::random_device randomSource;
-
14 
-
15  // Generate enough truly random values to populate the entire state of the mersenne twister
-
16  std::array<int, std::mt19937::state_size> seedValues;
-
17  std::generate_n(seedValues.data(), seedValues.size(), std::ref(randomSource));
-
18  std::seed_seq seedSequence(seedValues.begin(), seedValues.end());
-
19 
-
20  // Seed the mersenne twister with these values
-
21  rng = std::mt19937(seedSequence);
-
22 
-
23  isRngInitialized = true;
-
24 
-
25  return;
-
26 }
-
27 
-
28 // Will return a random double between 0 and 1
-
29 double Math::Random()
-
30 {
- -
32 
-
33  return (rng() % 694206942069ll) / 694206942069.0;
-
34 }
-
35 
-
36 // Will return a random unsigned integer.
-
37 unsigned int Math::RandomUint()
-
38 {
- -
40 
-
41  return rng();
-
42 }
-
43 
-
44 // Will return a random integer
-
45 unsigned int Math::RandomInt()
-
46 {
- -
48 
-
49  // Since this is supposed to return a random value anyways,
-
50  // we can let the random uint overflow without any problems.
-
51  return (int)rng();
-
52 }
-
53 
-
54 // Will return a random double within a range
-
55 // These bounds are INCLUSIVE!
-
56 double Math::RandomRange(double min, double max)
-
57 {
-
58  return (Random() * (max - min)) + min;
-
59 }
-
60 
-
61 // Will return a random integer within a range. This is faster than '(int)RandomRange(x,y)'
-
62 // These bounds are INCLUSIVE!
-
63 int Math::RandomIntRange(int min, int max)
-
64 {
-
65  return (rng() % (max + 1 - min)) + min;
-
66 }
-
67 
-
68 double Math::Oscillate(const double a, const double b, const double counter, const double speed)
-
69 {
-
70  return (sin(counter * speed * PI - HALF_PI) * 0.5 + 0.5) * (b-a) + a;
-
71 }
-
72 
-
73 bool Math::RandomChance(const double chance)
-
74 {
-
75  return Random() <= chance;
-
76 }
-
77 
-
78 int Math::Mod(const int numerator, const int denominator)
-
79 {
-
80  if (denominator == 0)
-
81  throw std::logic_error("Divide by zero");
-
82 
-
83  // Quick optimizations:
-
84 
-
85  // -> 0/n is always 0
-
86  if (numerator == 0)
-
87  return 0;
-
88 
-
89  // -> operator% works for a > 0 && b > 0
-
90  if (denominator > 0 && numerator > 0)
-
91  return numerator % denominator;
-
92 
-
93  // Else: generalized formula
-
94  return (denominator + (numerator % denominator)) % denominator;
-
95 }
-
96 
-
97 std::mt19937 Math::rng;
-
98 bool Math::isRngInitialized = true;
-
-
#define MAKE_SURE_RNG_IS_INITIALIZED
Definition: Math.cpp:8
-
static bool RandomChance(const double chance)
Will 'roll' a dice, returning true percent of the time.
Definition: Math.cpp:73
-
static constexpr double PI
Pi up to 50 decimal places.
Definition: Constants.h:6
-
static double RandomRange(const double min, const double max)
Will return a random double within a range These bounds are INCLUSIVE!
Definition: Math.cpp:56
-
static int Mod(const int numerator, const int denominator)
Will compute the actual modulo of a fraction.
Definition: Math.cpp:78
- -
static unsigned int RandomInt()
Will return a random integer.
Definition: Math.cpp:45
- -
static int RandomIntRange(const int max, const int min)
Will return a random integer within a range.
Definition: Math.cpp:63
-
static double Random()
Will return a random double between 0 and 1
Definition: Math.cpp:29
-
static unsigned int RandomUint()
Will return a random unsigned integer.
Definition: Math.cpp:37
-
static constexpr double HALF_PI
Pi divided by two.
Definition: Constants.h:9
-
Definition: Collider.h:4
-
static double Oscillate(const double a, const double b, const double counter, const double speed)
Kind of like , but it oscillates over instead of , by a given speed.
Definition: Math.cpp:68
- - - - diff --git a/Doxygen/build/Math_8h.html b/Doxygen/build/Math_8h.html deleted file mode 100644 index 1ba7b05..0000000 --- a/Doxygen/build/Math_8h.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Math.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Math.h File Reference
-
-
-
#include <random>
-#include <stdexcept>
-
-Include dependency graph for Math.h:
-
-
- - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  Eule::Math
 Math utility class containing basic functions. More...
 
- - - -

-Namespaces

 Eule
 
-
- - - - diff --git a/Doxygen/build/Math_8h__dep__incl.map b/Doxygen/build/Math_8h__dep__incl.map deleted file mode 100644 index 0305d75..0000000 --- a/Doxygen/build/Math_8h__dep__incl.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/Doxygen/build/Math_8h__dep__incl.md5 b/Doxygen/build/Math_8h__dep__incl.md5 deleted file mode 100644 index 439b315..0000000 --- a/Doxygen/build/Math_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -73207d65ad51e6c8ebeaac070e30ef55 \ No newline at end of file diff --git a/Doxygen/build/Math_8h__dep__incl.png b/Doxygen/build/Math_8h__dep__incl.png deleted file mode 100644 index aa88a7f7ef5fd98868ec26dfb9a51a77a178429e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10073 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 T<^H1W`Fc4iWyu - - - - diff --git a/Doxygen/build/Math_8h__incl.md5 b/Doxygen/build/Math_8h__incl.md5 deleted file mode 100644 index a77a0ab..0000000 --- a/Doxygen/build/Math_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -30e3340847668dd6d0fcf574a3f1e946 \ No newline at end of file diff --git a/Doxygen/build/Math_8h__incl.png b/Doxygen/build/Math_8h__incl.png deleted file mode 100644 index f3cbb31c5dfee3138b5df304402f4e06e8248366..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4716 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 - - - - - - -Leonetienne/Eule: Eule/Math.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Math.h
-
-
-Go to the documentation of this file.
1 #pragma once
-
2 #include <random>
-
3 #include <stdexcept>
-
4 
-
5 namespace Eule
-
6 {
-
9  class Math
-
10  {
-
11  public:
-
13  [[nodiscard]] static constexpr double Max(const double a, const double b);
-
14 
-
16  [[nodiscard]] static constexpr double Min(const double a, const double b);
-
17 
-
19  [[nodiscard]] static constexpr double Clamp(const double v, const double min, const double max);
-
20 
-
22  [[nodiscard]] static constexpr double Lerp(double a, double b, double t);
-
23 
-
25  [[nodiscard]] static constexpr double Abs(const double a);
-
26 
-
28  [[nodiscard]] static constexpr bool Similar(const double a, const double b, const double epsilon = 0.00001);
-
29 
-
32  [[nodiscard]] static int Mod(const int numerator, const int denominator);
-
33 
-
35  static double Random();
-
36 
-
38  static unsigned int RandomUint();
-
39 
-
41  static unsigned int RandomInt();
-
42 
-
45  static double RandomRange(const double min, const double max);
-
46 
-
49  static int RandomIntRange(const int max, const int min);
-
50 
-
52  static bool RandomChance(const double chance);
-
53 
-
58  static double Oscillate(const double a, const double b, const double counter, const double speed);
-
59 
-
60  private:
-
62  static void InitRng();
-
63 
-
64  static std::mt19937 rng;
-
65  static bool isRngInitialized;
-
66 
-
67  // No instanciation! >:(
-
68  Math();
-
69  };
-
70 
-
71 
-
72 
-
73  /* These are just the inline methods. They have to lie in the header file. */
-
74  /* The more sophisticated methods are in the .cpp */
-
75 
-
76  constexpr inline double Math::Max(double a, double b)
-
77  {
-
78  return (a > b) ? a : b;
-
79  }
-
80 
-
81  constexpr inline double Math::Min(double a, double b)
-
82  {
-
83  return (a < b) ? a : b;
-
84  }
-
85 
-
86  constexpr inline double Math::Clamp(double v, double min, double max)
-
87  {
-
88  return Max(Min(v, max), min);
-
89  }
-
90 
-
91  constexpr inline double Math::Lerp(double a, double b, double t)
-
92  {
-
93  const double it = 1.0 - t;
-
94  return (a * it) + (b * t);
-
95  }
-
96 
-
97  constexpr inline double Math::Abs(const double a)
-
98  {
-
99  return (a > 0.0) ? a : -a;
-
100  }
-
101 
-
102  constexpr inline bool Math::Similar(const double a, const double b, const double epsilon)
-
103  {
-
104  return Abs(a - b) <= epsilon;
-
105  }
-
106 }
-
-
static bool RandomChance(const double chance)
Will 'roll' a dice, returning true percent of the time.
Definition: Math.cpp:73
-
static constexpr double Abs(const double a)
Will return the absolute value of a
Definition: Math.h:97
-
static double RandomRange(const double min, const double max)
Will return a random double within a range These bounds are INCLUSIVE!
Definition: Math.cpp:56
-
static constexpr double Lerp(double a, double b, double t)
Will return the linear interpolation between a and b by t
Definition: Math.h:91
-
static int Mod(const int numerator, const int denominator)
Will compute the actual modulo of a fraction.
Definition: Math.cpp:78
-
static unsigned int RandomInt()
Will return a random integer.
Definition: Math.cpp:45
-
static constexpr double Max(const double a, const double b)
Will return the bigger of two values.
Definition: Math.h:76
-
Math utility class containing basic functions.
Definition: Math.h:9
-
static constexpr double Clamp(const double v, const double min, const double max)
Will return v, but at least min, and at most max
Definition: Math.h:86
-
static constexpr double Min(const double a, const double b)
Will return the smaller of two values.
Definition: Math.h:81
-
static int RandomIntRange(const int max, const int min)
Will return a random integer within a range.
Definition: Math.cpp:63
-
static constexpr bool Similar(const double a, const double b, const double epsilon=0.00001)
Compares two double values with a given accuracy.
Definition: Math.h:102
-
static double Random()
Will return a random double between 0 and 1
Definition: Math.cpp:29
-
static unsigned int RandomUint()
Will return a random unsigned integer.
Definition: Math.cpp:37
-
Definition: Collider.h:4
-
static double Oscillate(const double a, const double b, const double counter, const double speed)
Kind of like , but it oscillates over instead of , by a given speed.
Definition: Math.cpp:68
- - - - diff --git a/Doxygen/build/Matrix4x4_8cpp.html b/Doxygen/build/Matrix4x4_8cpp.html deleted file mode 100644 index 1501ab2..0000000 --- a/Doxygen/build/Matrix4x4_8cpp.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Matrix4x4.cpp File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Matrix4x4.cpp File Reference
-
-
-
#include "Matrix4x4.h"
-#include "Vector3.h"
-#include "Math.h"
-#include <immintrin.h>
-
-Include dependency graph for Matrix4x4.cpp:
-
-
- - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - -

-Namespaces

 Eule
 
- - - - - -

-Functions

std::ostream & Eule::operator<< (std::ostream &os, const Matrix4x4 &m)
 
std::wostream & Eule::operator<< (std::wostream &os, const Matrix4x4 &m)
 
-
- - - - diff --git a/Doxygen/build/Matrix4x4_8cpp__incl.map b/Doxygen/build/Matrix4x4_8cpp__incl.map deleted file mode 100644 index c1238c4..0000000 --- a/Doxygen/build/Matrix4x4_8cpp__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/Doxygen/build/Matrix4x4_8cpp__incl.md5 b/Doxygen/build/Matrix4x4_8cpp__incl.md5 deleted file mode 100644 index 3ea338d..0000000 --- a/Doxygen/build/Matrix4x4_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -249160e44e952572df002a88ede6eb16 \ No newline at end of file diff --git a/Doxygen/build/Matrix4x4_8cpp__incl.png b/Doxygen/build/Matrix4x4_8cpp__incl.png deleted file mode 100644 index 811988beb7aa3f983fdff8b92f3f45303026fcb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26243 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 diff --git a/Doxygen/build/Matrix4x4_8cpp_source.html b/Doxygen/build/Matrix4x4_8cpp_source.html deleted file mode 100644 index dde9492..0000000 --- a/Doxygen/build/Matrix4x4_8cpp_source.html +++ /dev/null @@ -1,786 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Matrix4x4.cpp Source File - - - - - - - - - - - - -
-
-
Matrix4x4.cpp
-
-
-Go to the documentation of this file.
1 #include "Matrix4x4.h"
-
2 #include "Vector3.h"
-
3 #include "Math.h"
-
4 
-
5 //#define _EULE_NO_INTRINSICS_
-
6 #ifndef _EULE_NO_INTRINSICS_
-
7 #include <immintrin.h>
-
8 #endif
-
9 
-
10 using namespace Eule;
-
11 
- -
13 {
-
14  // Create identity matrix
-
15  for (std::size_t i = 0; i < 4; i++)
-
16  for (std::size_t j = 0; j < 4; j++)
-
17  v[i][j] = double(i == j);
-
18 
-
19  return;
-
20 }
-
21 
- -
23 {
-
24  v = other.v;
-
25  return;
-
26 }
-
27 
- -
29 {
-
30  v = std::move(other.v);
-
31  return;
-
32 }
-
33 
- -
35 {
-
36  Matrix4x4 newMatrix;
-
37  newMatrix.p = 1;
-
38 
-
39  #ifndef _EULE_NO_INTRINSICS_
-
40 
-
41 
-
42  /* <= Matrix3x3 multiplication => */
-
43 
-
44  // Load matrix components
-
45  __m256d __va1 = _mm256_set_pd(v[0][0], v[0][0], v[0][0], v[1][0]);
-
46  __m256d __va2 = _mm256_set_pd(v[1][0], v[1][0], v[2][0], v[2][0]);
-
47 
-
48  __m256d __oa1 = _mm256_set_pd(other[0][0], other[0][1], other[0][2], other[0][0]);
-
49  __m256d __oa2 = _mm256_set_pd(other[0][1], other[0][2], other[0][0], other[0][1]);
-
50 
-
51  __m256d __vb1 = _mm256_set_pd(v[0][1], v[0][1], v[0][1], v[1][1]);
-
52  __m256d __vb2 = _mm256_set_pd(v[1][1], v[1][1], v[2][1], v[2][1]);
-
53 
-
54  __m256d __ob1 = _mm256_set_pd(other[1][0], other[1][1], other[1][2], other[1][0]);
-
55  __m256d __ob2 = _mm256_set_pd(other[1][1], other[1][2], other[1][0], other[1][1]);
-
56 
-
57  __m256d __vc1 = _mm256_set_pd(v[0][2], v[0][2], v[0][2], v[1][2]);
-
58  __m256d __vc2 = _mm256_set_pd(v[1][2], v[1][2], v[2][2], v[2][2]);
-
59 
-
60  __m256d __oc1 = _mm256_set_pd(other[2][0], other[2][1], other[2][2], other[2][0]);
-
61  __m256d __oc2 = _mm256_set_pd(other[2][1], other[2][2], other[2][0], other[2][1]);
-
62 
-
63  // Initialize sums
-
64  __m256d __sum1 = _mm256_set1_pd(0);
-
65  __m256d __sum2 = _mm256_set1_pd(0);
-
66 
-
67  // Let's multiply-add them together
-
68  // First, the first block
-
69  __sum1 = _mm256_fmadd_pd(__va1, __oa1, __sum1);
-
70  __sum1 = _mm256_fmadd_pd(__vb1, __ob1, __sum1);
-
71  __sum1 = _mm256_fmadd_pd(__vc1, __oc1, __sum1);
-
72 
-
73  // Then the second block
-
74  __sum2 = _mm256_fmadd_pd(__va2, __oa2, __sum2);
-
75  __sum2 = _mm256_fmadd_pd(__vb2, __ob2, __sum2);
-
76  __sum2 = _mm256_fmadd_pd(__vc2, __oc2, __sum2);
-
77 
-
78  // Retrieve results
-
79  double sum1[4];
-
80  double sum2[4];
-
81 
-
82  _mm256_storeu_pd(sum1, __sum1);
-
83  _mm256_storeu_pd(sum2, __sum2);
-
84 
-
85  // Apply results
-
86  // Block 1
-
87  newMatrix[0][0] = sum1[3];
-
88  newMatrix[0][1] = sum1[2];
-
89  newMatrix[0][2] = sum1[1];
-
90  newMatrix[1][0] = sum1[0];
-
91 
-
92  // Block 2
-
93  newMatrix[1][1] = sum2[3];
-
94  newMatrix[1][2] = sum2[2];
-
95  newMatrix[2][0] = sum2[1];
-
96  newMatrix[2][1] = sum2[0];
-
97 
-
98  // Does not fit in the intrinsic calculation. Might just calculate 'by hand'.
-
99  newMatrix[2][2] = (v[2][0] * other[0][2]) + (v[2][1] * other[1][2]) + (v[2][2] * other[2][2]);
-
100 
-
101 
-
102  /* <= Translation component => */
-
103 
-
104  // Load translation components into registers
-
105  __m256d __transSelf = _mm256_set_pd(0, l, h, d);
-
106  __m256d __transOther = _mm256_set_pd(0, other.l, other.h, other.d);
-
107 
-
108  // Let's add them
-
109  __m256d __sum = _mm256_add_pd(__transSelf, __transOther);
-
110 
-
111  // Retrieve results
-
112  double sum[4];
-
113  _mm256_storeu_pd(sum, __sum);
-
114 
-
115  // Apply them
-
116  newMatrix.d = sum[0];
-
117  newMatrix.h = sum[1];
-
118  newMatrix.l = sum[2];
-
119 
-
120  #else
-
121 
-
122 
-
123  // Rotation, Scaling
-
124  newMatrix[0][0] = (v[0][0] * other[0][0]) + (v[0][1] * other[1][0]) + (v[0][2] * other[2][0]);
-
125  newMatrix[0][1] = (v[0][0] * other[0][1]) + (v[0][1] * other[1][1]) + (v[0][2] * other[2][1]);
-
126  newMatrix[0][2] = (v[0][0] * other[0][2]) + (v[0][1] * other[1][2]) + (v[0][2] * other[2][2]);
-
127 
-
128  newMatrix[1][0] = (v[1][0] * other[0][0]) + (v[1][1] * other[1][0]) + (v[1][2] * other[2][0]);
-
129  newMatrix[1][1] = (v[1][0] * other[0][1]) + (v[1][1] * other[1][1]) + (v[1][2] * other[2][1]);
-
130  newMatrix[1][2] = (v[1][0] * other[0][2]) + (v[1][1] * other[1][2]) + (v[1][2] * other[2][2]);
-
131 
-
132  newMatrix[2][0] = (v[2][0] * other[0][0]) + (v[2][1] * other[1][0]) + (v[2][2] * other[2][0]);
-
133  newMatrix[2][1] = (v[2][0] * other[0][1]) + (v[2][1] * other[1][1]) + (v[2][2] * other[2][1]);
-
134  newMatrix[2][2] = (v[2][0] * other[0][2]) + (v[2][1] * other[1][2]) + (v[2][2] * other[2][2]);
-
135 
-
136 
-
137  // Translation
-
138  newMatrix[0][3] = v[0][3] + other[0][3];
-
139  newMatrix[1][3] = v[1][3] + other[1][3];
-
140  newMatrix[2][3] = v[2][3] + other[2][3];
-
141 
-
142  #endif
-
143 
-
144  return newMatrix;
-
145 }
-
146 
- -
148 {
-
149  *this = *this * other;
-
150  return;
-
151 }
-
152 
- -
154 {
-
155  return *this * other.Inverse3x3();
-
156 }
-
157 
- -
159 {
-
160  *this = *this * other.Inverse3x3();
-
161  return;
-
162 }
-
163 
-
164 Matrix4x4 Matrix4x4::operator*(const double scalar) const
-
165 {
-
166  Matrix4x4 m;
-
167 
-
168  #ifndef _EULE_NO_INTRINSICS_
-
169 
-
170  // Load matrix rows
-
171  __m256d __row0 = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]);
-
172  __m256d __row1 = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]);
-
173  __m256d __row2 = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]);
-
174  __m256d __row3 = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]);
-
175 
-
176  // Load scalar
-
177  __m256d __scalar = _mm256_set1_pd(scalar);
-
178 
-
179  // Scale values
-
180  __m256d __sr0 = _mm256_mul_pd(__row0, __scalar);
-
181  __m256d __sr1 = _mm256_mul_pd(__row1, __scalar);
-
182  __m256d __sr2 = _mm256_mul_pd(__row2, __scalar);
-
183  __m256d __sr3 = _mm256_mul_pd(__row3, __scalar);
-
184 
-
185  // Extract results
-
186  _mm256_storeu_pd(m.v[0].data(), __sr0);
-
187  _mm256_storeu_pd(m.v[1].data(), __sr1);
-
188  _mm256_storeu_pd(m.v[2].data(), __sr2);
-
189  _mm256_storeu_pd(m.v[3].data(), __sr3);
-
190 
-
191  #else
-
192 
-
193  for (std::size_t x = 0; x < 4; x++)
-
194  for (std::size_t y = 0; y < 4; y++)
-
195  m[x][y] = v[x][y] * scalar;
-
196 
-
197  #endif
-
198 
-
199  return m;
-
200 }
-
201 
-
202 void Matrix4x4::operator*=(const double scalar)
-
203 {
-
204  *this = *this * scalar;
-
205  return;
-
206 }
-
207 
-
208 Matrix4x4 Matrix4x4::operator/(const double denominator) const
-
209 {
-
210  const double precomputeDivision = 1.0 / denominator;
-
211 
-
212  return *this * precomputeDivision;
-
213 }
-
214 
-
215 void Matrix4x4::operator/=(const double denominator)
-
216 {
-
217  *this = *this / denominator;
-
218  return;
-
219 }
-
220 
- -
222 {
-
223  Matrix4x4 m;
-
224 
-
225  #ifndef _EULE_NO_INTRINSICS_
-
226 
-
227  // Load matrix rows
-
228  __m256d __row0a = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]);
-
229  __m256d __row1a = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]);
-
230  __m256d __row2a = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]);
-
231  __m256d __row3a = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]);
-
232 
-
233  __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
-
234  __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
-
235  __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
-
236  __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
-
237 
-
238  // Add rows
-
239  __m256d __sr0 = _mm256_add_pd(__row0a, __row0b);
-
240  __m256d __sr1 = _mm256_add_pd(__row1a, __row1b);
-
241  __m256d __sr2 = _mm256_add_pd(__row2a, __row2b);
-
242  __m256d __sr3 = _mm256_add_pd(__row3a, __row3b);
-
243 
-
244  // Extract results
-
245  _mm256_storeu_pd(m.v[0].data(), __sr0);
-
246  _mm256_storeu_pd(m.v[1].data(), __sr1);
-
247  _mm256_storeu_pd(m.v[2].data(), __sr2);
-
248  _mm256_storeu_pd(m.v[3].data(), __sr3);
-
249 
-
250  #else
-
251 
-
252  for (std::size_t x = 0; x < 4; x++)
-
253  for (std::size_t y = 0; y < 4; y++)
-
254  m[x][y] = v[x][y] + other[x][y];
-
255 
-
256  #endif
-
257 
-
258  return m;
-
259 }
-
260 
- -
262 {
-
263  #ifndef _EULE_NO_INTRINSICS_
-
264  // Doing it again is a tad directer, and thus faster. We avoid an intermittent Matrix4x4 instance
-
265 
-
266  // Load matrix rows
-
267  __m256d __row0a = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]);
-
268  __m256d __row1a = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]);
-
269  __m256d __row2a = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]);
-
270  __m256d __row3a = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]);
-
271 
-
272  __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
-
273  __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
-
274  __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
-
275  __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
-
276 
-
277  // Add rows
-
278  __m256d __sr0 = _mm256_add_pd(__row0a, __row0b);
-
279  __m256d __sr1 = _mm256_add_pd(__row1a, __row1b);
-
280  __m256d __sr2 = _mm256_add_pd(__row2a, __row2b);
-
281  __m256d __sr3 = _mm256_add_pd(__row3a, __row3b);
-
282 
-
283  // Extract results
-
284  _mm256_storeu_pd(v[0].data(), __sr0);
-
285  _mm256_storeu_pd(v[1].data(), __sr1);
-
286  _mm256_storeu_pd(v[2].data(), __sr2);
-
287  _mm256_storeu_pd(v[3].data(), __sr3);
-
288 
-
289  #else
-
290 
-
291  *this = *this + other;
-
292 
-
293  #endif
-
294 
-
295  return;
-
296 }
-
297 
- -
299 {
-
300  Matrix4x4 m;
-
301 
-
302  #ifndef _EULE_NO_INTRINSICS_
-
303 
-
304  // Load matrix rows
-
305  __m256d __row0a = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]);
-
306  __m256d __row1a = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]);
-
307  __m256d __row2a = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]);
-
308  __m256d __row3a = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]);
-
309 
-
310  __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
-
311  __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
-
312  __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
-
313  __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
-
314 
-
315  // Subtract rows
-
316  __m256d __sr0 = _mm256_sub_pd(__row0a, __row0b);
-
317  __m256d __sr1 = _mm256_sub_pd(__row1a, __row1b);
-
318  __m256d __sr2 = _mm256_sub_pd(__row2a, __row2b);
-
319  __m256d __sr3 = _mm256_sub_pd(__row3a, __row3b);
-
320 
-
321  // Extract results
-
322  _mm256_storeu_pd(m.v[0].data(), __sr0);
-
323  _mm256_storeu_pd(m.v[1].data(), __sr1);
-
324  _mm256_storeu_pd(m.v[2].data(), __sr2);
-
325  _mm256_storeu_pd(m.v[3].data(), __sr3);
-
326 
-
327  #else
-
328 
-
329  for (std::size_t x = 0; x < 4; x++)
-
330  for (std::size_t y = 0; y < 4; y++)
-
331  m[x][y] = v[x][y] - other[x][y];
-
332 
-
333  #endif
-
334 
-
335  return m;
-
336 }
-
337 
- -
339 {
-
340  #ifndef _EULE_NO_INTRINSICS_
-
341  // Doing it again is a tad directer, and thus faster. We avoid an intermittent Matrix4x4 instance
-
342 
-
343  // Load matrix rows
-
344  __m256d __row0a = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]);
-
345  __m256d __row1a = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]);
-
346  __m256d __row2a = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]);
-
347  __m256d __row3a = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]);
-
348 
-
349  __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
-
350  __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
-
351  __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
-
352  __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
-
353 
-
354  // Subtract rows
-
355  __m256d __sr0 = _mm256_sub_pd(__row0a, __row0b);
-
356  __m256d __sr1 = _mm256_sub_pd(__row1a, __row1b);
-
357  __m256d __sr2 = _mm256_sub_pd(__row2a, __row2b);
-
358  __m256d __sr3 = _mm256_sub_pd(__row3a, __row3b);
-
359 
-
360  // Extract results
-
361  _mm256_storeu_pd(v[0].data(), __sr0);
-
362  _mm256_storeu_pd(v[1].data(), __sr1);
-
363  _mm256_storeu_pd(v[2].data(), __sr2);
-
364  _mm256_storeu_pd(v[3].data(), __sr3);
-
365 
-
366  #else
-
367 
-
368  * this = *this - other;
-
369 
-
370  #endif
-
371 
-
372  return;
-
373 }
-
374 
-
375 std::array<double, 4>& Matrix4x4::operator[](std::size_t y)
-
376 {
-
377  return v[y];
-
378 }
-
379 
-
380 const std::array<double, 4>& Matrix4x4::operator[](std::size_t y) const
-
381 {
-
382  return v[y];
-
383 }
-
384 
-
385 void Matrix4x4::operator=(const Matrix4x4& other)
-
386 {
-
387  v = other.v;
-
388  return;
-
389 }
-
390 
-
391 void Matrix4x4::operator=(Matrix4x4&& other) noexcept
-
392 {
-
393  v = std::move(other.v);
-
394  return;
-
395 }
-
396 
- -
398 {
-
399  return v == other.v;
-
400 }
-
401 
- -
403 {
-
404  return !operator==(other);
-
405 }
-
406 
- -
408 {
-
409  return Vector3d(d, h, l);
-
410 }
-
411 
- -
413 {
-
414  d = trans.x;
-
415  h = trans.y;
-
416  l = trans.z;
-
417  return;
-
418 }
-
419 
- -
421 {
-
422  Matrix4x4 m(*this);
-
423  m.d = 0;
-
424  m.h = 0;
-
425  m.l = 0;
-
426  return m;
-
427 }
-
428 
- -
430 {
-
431  Matrix4x4 trans(*this); // Keep other cells
-
432 
-
433  for (std::size_t i = 0; i < 3; i++)
-
434  for (std::size_t j = 0; j < 3; j++)
-
435  trans[j][i] = v[i][j];
-
436 
-
437  return trans;
-
438 }
-
439 
- -
441 {
-
442  Matrix4x4 trans;
-
443 
-
444  for (std::size_t i = 0; i < 4; i++)
-
445  for (std::size_t j = 0; j < 4; j++)
-
446  trans[j][i] = v[i][j];
-
447 
-
448  return trans;
-
449 }
-
450 
- -
452 {
-
453  Matrix4x4 m;
-
454 
-
455  m[0][0] = (v[0][0]*o[0][0]) + (v[0][1]*o[1][0]) + (v[0][2]*o[2][0]) + (v[0][3]*o[3][0]);
-
456  m[0][1] = (v[0][0]*o[0][1]) + (v[0][1]*o[1][1]) + (v[0][2]*o[2][1]) + (v[0][3]*o[3][1]);
-
457  m[0][2] = (v[0][0]*o[0][2]) + (v[0][1]*o[1][2]) + (v[0][2]*o[2][2]) + (v[0][3]*o[3][2]);
-
458  m[0][3] = (v[0][0]*o[0][3]) + (v[0][1]*o[1][3]) + (v[0][2]*o[2][3]) + (v[0][3]*o[3][3]);
-
459 
-
460  m[1][0] = (v[1][0]*o[0][0]) + (v[1][1]*o[1][0]) + (v[1][2]*o[2][0]) + (v[1][3]*o[3][0]);
-
461  m[1][1] = (v[1][0]*o[0][1]) + (v[1][1]*o[1][1]) + (v[1][2]*o[2][1]) + (v[1][3]*o[3][1]);
-
462  m[1][2] = (v[1][0]*o[0][2]) + (v[1][1]*o[1][2]) + (v[1][2]*o[2][2]) + (v[1][3]*o[3][2]);
-
463  m[1][3] = (v[1][0]*o[0][3]) + (v[1][1]*o[1][3]) + (v[1][2]*o[2][3]) + (v[1][3]*o[3][3]);
-
464 
-
465  m[2][0] = (v[2][0]*o[0][0]) + (v[2][1]*o[1][0]) + (v[2][2]*o[2][0]) + (v[2][3]*o[3][0]);
-
466  m[2][1] = (v[2][0]*o[0][1]) + (v[2][1]*o[1][1]) + (v[2][2]*o[2][1]) + (v[2][3]*o[3][1]);
-
467  m[2][2] = (v[2][0]*o[0][2]) + (v[2][1]*o[1][2]) + (v[2][2]*o[2][2]) + (v[2][3]*o[3][2]);
-
468  m[2][3] = (v[2][0]*o[0][3]) + (v[2][1]*o[1][3]) + (v[2][2]*o[2][3]) + (v[2][3]*o[3][3]);
-
469 
-
470  m[3][0] = (v[3][0]*o[0][0]) + (v[3][1]*o[1][0]) + (v[3][2]*o[2][0]) + (v[3][3]*o[3][0]);
-
471  m[3][1] = (v[3][0]*o[0][1]) + (v[3][1]*o[1][1]) + (v[3][2]*o[2][1]) + (v[3][3]*o[3][1]);
-
472  m[3][2] = (v[3][0]*o[0][2]) + (v[3][1]*o[1][2]) + (v[3][2]*o[2][2]) + (v[3][3]*o[3][2]);
-
473  m[3][3] = (v[3][0]*o[0][3]) + (v[3][1]*o[1][3]) + (v[3][2]*o[2][3]) + (v[3][3]*o[3][3]);
-
474 
-
475  return m;
-
476 }
-
477 
-
478 Matrix4x4 Matrix4x4::GetCofactors(std::size_t p, std::size_t q, std::size_t n) const
-
479 {
-
480  if (n > 4)
-
481  throw std::runtime_error("Dimension out of range! 0 <= n <= 4");
-
482 
-
483  Matrix4x4 cofs;
-
484 
-
485  std::size_t i = 0;
-
486  std::size_t j = 0;
-
487 
-
488  for (std::size_t y = 0; y < n; y++)
-
489  for (std::size_t x = 0; x < n; x++)
-
490  {
-
491  if ((y != p) && (x != q))
-
492  {
-
493  cofs[i][j] = v[y][x];
-
494  j++;
-
495  }
-
496 
-
497  if (j == n - 1)
-
498  {
-
499  j = 0;
-
500  i++;
-
501  }
-
502  }
-
503 
-
504  return cofs;
-
505 }
-
506 
-
507 /*
-
508 * BEGIN_REF
-
509 * https://www.geeksforgeeks.org/adjoint-inverse-matrix/
-
510 */
-
511 double Matrix4x4::Determinant(std::size_t n) const
-
512 {
-
513  if (n > 4)
-
514  throw std::runtime_error("Dimension out of range! 0 <= n <= 4");
-
515 
-
516  double d = 0;
-
517  double sign = 1;
-
518 
-
519  if (n == 1)
-
520  return v[0][0];
-
521 
-
522  for (std::size_t x = 0; x < n; x++)
-
523  {
-
524  Matrix4x4 cofs = GetCofactors(0, x, n);
-
525 
-
526  d += sign * v[0][x] * cofs.Determinant(n - 1);
-
527  sign = -sign;
-
528  }
-
529 
-
530  return d;
-
531 }
-
532 
-
533 Matrix4x4 Matrix4x4::Adjoint(std::size_t n) const
-
534 {
-
535  if (n > 4)
-
536  throw std::runtime_error("Dimension out of range! 0 <= n <= 4");
-
537 
-
538  Matrix4x4 adj;
-
539  double sign = 1;
-
540 
-
541  for (std::size_t i = 0; i < n; i++)
-
542  for (std::size_t j = 0; j < n; j++)
-
543  {
-
544  Matrix4x4 cofs = GetCofactors(i, j, n);
-
545 
-
546  // sign of adj[j][i] positive if sum of row
-
547  // and column indexes is even.
-
548  sign = ((i + j) % 2 == 0) ? 1 : -1;
-
549 
-
550  // Interchanging rows and columns to get the
-
551  // transpose of the cofactor matrix
-
552  adj[j][i] = sign * (cofs.Determinant(n - 1));
-
553  }
-
554 
-
555  return adj;
-
556 }
-
557 
- -
559 {
-
560  Matrix4x4 inv;
-
561 
-
562  double det = Determinant(3);
-
563  if (det == 0.0)
-
564  throw std::runtime_error("Matrix3x3 not inversible!");
-
565 
-
566  Matrix4x4 adj = Adjoint(3);
-
567 
-
568  for (std::size_t i = 0; i < 3; i++)
-
569  for (std::size_t j = 0; j < 3; j++)
-
570  inv[i][j] = adj[i][j] / det;
-
571 
- -
573 
-
574  return inv;
-
575 }
-
576 
- -
578 {
-
579  Matrix4x4 inv;
-
580 
-
581  double det = Determinant(4);
-
582  if (det == 0.0)
-
583  throw std::runtime_error("Matrix4x4 not inversible!");
-
584 
-
585  Matrix4x4 adj = Adjoint(4);
-
586 
-
587  for (std::size_t i = 0; i < 4; i++)
-
588  for (std::size_t j = 0; j < 4; j++)
-
589  inv[i][j] = adj[i][j] / det;
-
590 
-
591  return inv;
-
592 }
-
593 
-
594 /*
-
595 * END REF
-
596 */
-
597 
- -
599 {
-
600  return (Determinant(3) != 0);
-
601 }
-
602 
- -
604 {
-
605  return (Determinant(4) != 0);
-
606 }
-
607 
-
608 bool Matrix4x4::Similar(const Matrix4x4& other, double epsilon) const
-
609 {
-
610  for (std::size_t i = 0; i < 4; i++)
-
611  for (std::size_t j = 0; j < 4; j++)
-
612  if (!Math::Similar(v[i][j], other[i][j], epsilon))
-
613  return false;
-
614 
-
615  return true;
-
616 }
-
617 
-
618 namespace Eule
-
619 {
-
620  std::ostream& operator<<(std::ostream& os, const Matrix4x4& m)
-
621  {
-
622  os << std::endl;
-
623 
-
624  for (std::size_t y = 0; y < 4; y++)
-
625  {
-
626  for (std::size_t x = 0; x < 4; x++)
-
627  os << " | " << m[y][x];
-
628 
-
629  os << " |" << std::endl;
-
630  }
-
631 
-
632  return os;
-
633  }
-
634 
-
635  std::wostream& operator<<(std::wostream& os, const Matrix4x4& m)
-
636  {
-
637  os << std::endl;
-
638 
-
639  for (std::size_t y = 0; y < 4; y++)
-
640  {
-
641  for (std::size_t x = 0; x < 4; x++)
-
642  os << L" | " << m[y][x];
-
643 
-
644  os << L" |" << std::endl;
-
645  }
-
646 
-
647  return os;
-
648  }
-
649 }
-
-
double & j
Definition: Matrix4x4.h:137
-
Matrix4x4 Inverse4x4() const
Will return the full 4x4-inverse of this matrix.
Definition: Matrix4x4.cpp:577
-
Matrix4x4 Adjoint(std::size_t n) const
Will return the adjoint of this matrix, by dimension n.
Definition: Matrix4x4.cpp:533
-
bool operator==(const Matrix4x4 &other)
Definition: Matrix4x4.cpp:397
-
Matrix4x4 operator+(const Matrix4x4 &other) const
Cellwise addition.
Definition: Matrix4x4.cpp:221
-
double & i
Definition: Matrix4x4.h:136
-
void operator-=(const Matrix4x4 &other)
Cellwise subtraction.
Definition: Matrix4x4.cpp:338
-
Matrix4x4 Transpose4x4() const
Will return the 4x4 transpose of this matrix.
Definition: Matrix4x4.cpp:440
-
bool operator!=(const Matrix4x4 &other)
Definition: Matrix4x4.cpp:402
- -
std::array< double, 4 > & operator[](std::size_t y)
Definition: Matrix4x4.cpp:375
-
Matrix4x4 DropTranslationComponents() const
Will return this Matrix4x4 with d,h,l being set to 0.
Definition: Matrix4x4.cpp:420
-
void operator*=(const Matrix4x4 &other)
Definition: Matrix4x4.cpp:147
-
Matrix4x4 Inverse3x3() const
Will return the 3x3-inverse of this matrix.
Definition: Matrix4x4.cpp:558
-
Matrix4x4 operator/(const Matrix4x4 &other) const
Definition: Matrix4x4.cpp:153
-
std::array< std::array< double, 4 >, 4 > v
Array holding the matrices values.
Definition: Matrix4x4.h:44
-
Matrix4x4 operator*(const Matrix4x4 &other) const
Definition: Matrix4x4.cpp:34
- -
Vector3< double > Vector3d
Definition: Matrix4x4.h:9
- -
void operator=(const Matrix4x4 &other)
Definition: Matrix4x4.cpp:385
- -
A matrix 4x4 class representing a 3d transformation.
Definition: Matrix4x4.h:36
-
bool IsInversible4x4() const
Will check if the entire matrix is inversible.
Definition: Matrix4x4.cpp:603
-
bool Similar(const Matrix4x4 &other, double epsilon=0.00001) const
Will compare if two matrices are similar to a certain epsilon value.
Definition: Matrix4x4.cpp:608
-
void operator/=(const Matrix4x4 &other)
Definition: Matrix4x4.cpp:158
- -
double & p
Definition: Matrix4x4.h:143
-
static constexpr bool Similar(const double a, const double b, const double epsilon=0.00001)
Compares two double values with a given accuracy.
Definition: Math.h:102
-
bool IsInversible3x3() const
Will check if the 3x3-component is inversible.
Definition: Matrix4x4.cpp:598
-
Matrix4x4 Transpose3x3() const
Will return the 3x3 transpose of this matrix.
Definition: Matrix4x4.cpp:429
-
std::ostream & operator<<(std::ostream &os, const Matrix4x4 &m)
Definition: Matrix4x4.cpp:620
-
double & l
Definition: Matrix4x4.h:139
-
Matrix4x4 operator-(const Matrix4x4 &other) const
Cellwise subtraction.
Definition: Matrix4x4.cpp:298
-
double Determinant(std::size_t n) const
Will return the determinant, by dimension n.
Definition: Matrix4x4.cpp:511
- -
void operator+=(const Matrix4x4 &other)
Cellwise addition.
Definition: Matrix4x4.cpp:261
- -
void SetTranslationComponent(const Vector3d &trans)
Will set d,h,l from a Vector3d(x,y,z)
Definition: Matrix4x4.cpp:412
-
Matrix4x4 Multiply4x4(const Matrix4x4 &o) const
Will return the Matrix4x4 of an actual 4x4 multiplication. operator* only does a 3x3.
Definition: Matrix4x4.cpp:451
-
double & o
Definition: Matrix4x4.h:142
-
double & m
Definition: Matrix4x4.h:140
-
Matrix4x4 GetCofactors(std::size_t p, std::size_t q, std::size_t n) const
Will return the cofactors of this matrix, by dimension n.
Definition: Matrix4x4.cpp:478
-
const Vector3d GetTranslationComponent() const
Will return d,h,l as a Vector3d(x,y,z)
Definition: Matrix4x4.cpp:407
-
double & n
Definition: Matrix4x4.h:141
-
double & h
Definition: Matrix4x4.h:135
-
Definition: Collider.h:4
-
double & d
Definition: Matrix4x4.h:131
- - - - - diff --git a/Doxygen/build/Matrix4x4_8h.html b/Doxygen/build/Matrix4x4_8h.html deleted file mode 100644 index 5028ec7..0000000 --- a/Doxygen/build/Matrix4x4_8h.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Matrix4x4.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Matrix4x4.h File Reference
-
-
-
#include <cstring>
-#include <array>
-#include <ostream>
-
-Include dependency graph for Matrix4x4.h:
-
-
- - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - -

-Classes

class  Eule::Vector3< T >
 Representation of a 3d vector. More...
 
class  Eule::Matrix4x4
 A matrix 4x4 class representing a 3d transformation. More...
 
- - - -

-Namespaces

 Eule
 
- - - -

-Typedefs

typedef Vector3< double > Eule::Vector3d
 
-
- - - - diff --git a/Doxygen/build/Matrix4x4_8h__dep__incl.map b/Doxygen/build/Matrix4x4_8h__dep__incl.map deleted file mode 100644 index 702c3aa..0000000 --- a/Doxygen/build/Matrix4x4_8h__dep__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/Doxygen/build/Matrix4x4_8h__dep__incl.md5 b/Doxygen/build/Matrix4x4_8h__dep__incl.md5 deleted file mode 100644 index 3a01bcf..0000000 --- a/Doxygen/build/Matrix4x4_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5154dfffad2d15709c7dfb374c8ae661 \ No newline at end of file diff --git a/Doxygen/build/Matrix4x4_8h__dep__incl.png b/Doxygen/build/Matrix4x4_8h__dep__incl.png deleted file mode 100644 index c4d23845d0b7f5f36f2614ea62836f701832fbb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41026 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 Bv>N~b diff --git a/Doxygen/build/Matrix4x4_8h__incl.map b/Doxygen/build/Matrix4x4_8h__incl.map deleted file mode 100644 index fdee30a..0000000 --- a/Doxygen/build/Matrix4x4_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Doxygen/build/Matrix4x4_8h__incl.md5 b/Doxygen/build/Matrix4x4_8h__incl.md5 deleted file mode 100644 index 0c4deeb..0000000 --- a/Doxygen/build/Matrix4x4_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ab989368f6dcbdc7dd60a9f3b05fea6e \ No newline at end of file diff --git a/Doxygen/build/Matrix4x4_8h__incl.png b/Doxygen/build/Matrix4x4_8h__incl.png deleted file mode 100644 index 3627873f30f3bff881f0fe11c0b508dd07eaa23c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5888 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 - - - - - - -Leonetienne/Eule: Eule/Matrix4x4.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Matrix4x4.h
-
-
-Go to the documentation of this file.
1 #pragma once
-
2 #include <cstring>
-
3 #include <array>
-
4 #include <ostream>
-
5 
-
6 namespace Eule
-
7 {
-
8  template <class T>
-
9  class Vector3;
-
10  typedef Vector3<double> Vector3d;
-
11 
-
36  class Matrix4x4
-
37  {
-
38  public:
-
39  Matrix4x4();
-
40  Matrix4x4(const Matrix4x4& other);
-
41  Matrix4x4(Matrix4x4&& other) noexcept;
-
42 
-
44  std::array<std::array<double, 4>, 4> v;
-
45 
-
46  Matrix4x4 operator*(const Matrix4x4& other) const;
-
47  void operator*=(const Matrix4x4& other);
-
48 
-
49  Matrix4x4 operator/(const Matrix4x4& other) const;
-
50  void operator/=(const Matrix4x4& other);
-
51 
-
53  Matrix4x4 operator*(const double scalar) const;
-
55  void operator*=(const double scalar);
-
56 
-
58  Matrix4x4 operator/(const double denominator) const;
-
60  void operator/=(const double denominator);
-
61 
-
63  Matrix4x4 operator+(const Matrix4x4& other) const;
-
65  void operator+=(const Matrix4x4& other);
-
66 
-
68  Matrix4x4 operator-(const Matrix4x4& other) const;
-
70  void operator-=(const Matrix4x4& other);
-
71 
-
72 
-
73  std::array<double, 4>& operator[](std::size_t y);
-
74  const std::array<double, 4>& operator[](std::size_t y) const;
-
75 
-
76  void operator=(const Matrix4x4& other);
-
77  void operator=(Matrix4x4&& other) noexcept;
-
78 
-
79  bool operator==(const Matrix4x4& other);
-
80  bool operator!=(const Matrix4x4& other);
-
81 
-
83  const Vector3d GetTranslationComponent() const;
-
85  void SetTranslationComponent(const Vector3d& trans);
-
86 
- -
89 
-
91  Matrix4x4 Transpose3x3() const;
-
92 
-
94  Matrix4x4 Transpose4x4() const;
-
95 
-
97  Matrix4x4 Multiply4x4(const Matrix4x4& o) const;
-
98 
-
100  Matrix4x4 GetCofactors(std::size_t p, std::size_t q, std::size_t n) const;
-
101 
-
103  double Determinant(std::size_t n) const;
-
104 
-
106  Matrix4x4 Adjoint(std::size_t n) const;
-
107 
-
110  Matrix4x4 Inverse3x3() const;
-
111 
-
113  Matrix4x4 Inverse4x4() const;
-
114 
-
116  bool IsInversible3x3() const;
-
117 
-
119  bool IsInversible4x4() const;
-
120 
-
122  bool Similar(const Matrix4x4& other, double epsilon = 0.00001) const;
-
123 
-
124  friend std::ostream& operator<<(std::ostream& os, const Matrix4x4& m);
-
125  friend std::wostream& operator<<(std::wostream& os, const Matrix4x4& m);
-
126 
-
127  // Shorthands
-
128  double& a = v[0][0];
-
129  double& b = v[0][1];
-
130  double& c = v[0][2];
-
131  double& d = v[0][3];
-
132  double& e = v[1][0];
-
133  double& f = v[1][1];
-
134  double& g = v[1][2];
-
135  double& h = v[1][3];
-
136  double& i = v[2][0];
-
137  double& j = v[2][1];
-
138  double& k = v[2][2];
-
139  double& l = v[2][3];
-
140  double& m = v[3][0];
-
141  double& n = v[3][1];
-
142  double& o = v[3][2];
-
143  double& p = v[3][3];
-
144  };
-
145 }
-
-
double & j
Definition: Matrix4x4.h:137
-
Matrix4x4 Inverse4x4() const
Will return the full 4x4-inverse of this matrix.
Definition: Matrix4x4.cpp:577
-
Matrix4x4 Adjoint(std::size_t n) const
Will return the adjoint of this matrix, by dimension n.
Definition: Matrix4x4.cpp:533
-
bool operator==(const Matrix4x4 &other)
Definition: Matrix4x4.cpp:397
-
Matrix4x4 operator+(const Matrix4x4 &other) const
Cellwise addition.
Definition: Matrix4x4.cpp:221
-
double & i
Definition: Matrix4x4.h:136
-
void operator-=(const Matrix4x4 &other)
Cellwise subtraction.
Definition: Matrix4x4.cpp:338
-
Matrix4x4 Transpose4x4() const
Will return the 4x4 transpose of this matrix.
Definition: Matrix4x4.cpp:440
-
bool operator!=(const Matrix4x4 &other)
Definition: Matrix4x4.cpp:402
-
Representation of a 3d vector.
Definition: Matrix4x4.h:9
-
std::array< double, 4 > & operator[](std::size_t y)
Definition: Matrix4x4.cpp:375
-
Matrix4x4 DropTranslationComponents() const
Will return this Matrix4x4 with d,h,l being set to 0.
Definition: Matrix4x4.cpp:420
-
double & e
Definition: Matrix4x4.h:132
-
double & f
Definition: Matrix4x4.h:133
-
void operator*=(const Matrix4x4 &other)
Definition: Matrix4x4.cpp:147
-
Matrix4x4 Inverse3x3() const
Will return the 3x3-inverse of this matrix.
Definition: Matrix4x4.cpp:558
-
double & k
Definition: Matrix4x4.h:138
-
Matrix4x4 operator/(const Matrix4x4 &other) const
Definition: Matrix4x4.cpp:153
-
std::array< std::array< double, 4 >, 4 > v
Array holding the matrices values.
Definition: Matrix4x4.h:44
-
Matrix4x4 operator*(const Matrix4x4 &other) const
Definition: Matrix4x4.cpp:34
-
Vector3< double > Vector3d
Definition: Matrix4x4.h:9
-
void operator=(const Matrix4x4 &other)
Definition: Matrix4x4.cpp:385
-
A matrix 4x4 class representing a 3d transformation.
Definition: Matrix4x4.h:36
-
bool IsInversible4x4() const
Will check if the entire matrix is inversible.
Definition: Matrix4x4.cpp:603
-
double & b
Definition: Matrix4x4.h:129
-
bool Similar(const Matrix4x4 &other, double epsilon=0.00001) const
Will compare if two matrices are similar to a certain epsilon value.
Definition: Matrix4x4.cpp:608
-
double & g
Definition: Matrix4x4.h:134
-
void operator/=(const Matrix4x4 &other)
Definition: Matrix4x4.cpp:158
-
friend std::ostream & operator<<(std::ostream &os, const Matrix4x4 &m)
Definition: Matrix4x4.cpp:620
-
double & p
Definition: Matrix4x4.h:143
-
bool IsInversible3x3() const
Will check if the 3x3-component is inversible.
Definition: Matrix4x4.cpp:598
-
Matrix4x4 Transpose3x3() const
Will return the 3x3 transpose of this matrix.
Definition: Matrix4x4.cpp:429
-
double & l
Definition: Matrix4x4.h:139
-
Matrix4x4 operator-(const Matrix4x4 &other) const
Cellwise subtraction.
Definition: Matrix4x4.cpp:298
-
double Determinant(std::size_t n) const
Will return the determinant, by dimension n.
Definition: Matrix4x4.cpp:511
-
void operator+=(const Matrix4x4 &other)
Cellwise addition.
Definition: Matrix4x4.cpp:261
- -
void SetTranslationComponent(const Vector3d &trans)
Will set d,h,l from a Vector3d(x,y,z)
Definition: Matrix4x4.cpp:412
-
double & c
Definition: Matrix4x4.h:130
-
Matrix4x4 Multiply4x4(const Matrix4x4 &o) const
Will return the Matrix4x4 of an actual 4x4 multiplication. operator* only does a 3x3.
Definition: Matrix4x4.cpp:451
-
double & o
Definition: Matrix4x4.h:142
-
double & a
Definition: Matrix4x4.h:128
-
double & m
Definition: Matrix4x4.h:140
-
Matrix4x4 GetCofactors(std::size_t p, std::size_t q, std::size_t n) const
Will return the cofactors of this matrix, by dimension n.
Definition: Matrix4x4.cpp:478
-
const Vector3d GetTranslationComponent() const
Will return d,h,l as a Vector3d(x,y,z)
Definition: Matrix4x4.cpp:407
-
double & n
Definition: Matrix4x4.h:141
-
double & h
Definition: Matrix4x4.h:135
-
Definition: Collider.h:4
-
double & d
Definition: Matrix4x4.h:131
- - - - diff --git a/Doxygen/build/Quaternion_8cpp.html b/Doxygen/build/Quaternion_8cpp.html deleted file mode 100644 index 2ef11a9..0000000 --- a/Doxygen/build/Quaternion_8cpp.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Quaternion.cpp File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Quaternion.cpp File Reference
-
-
-
#include "Quaternion.h"
-#include "Constants.h"
-#include <immintrin.h>
-
-Include dependency graph for Quaternion.cpp:
-
-
- - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - -

-Namespaces

 Eule
 
- - - - - -

-Functions

std::ostream & Eule::operator<< (std::ostream &os, const Quaternion &q)
 
std::wostream & Eule::operator<< (std::wostream &os, const Quaternion &q)
 
-
- - - - diff --git a/Doxygen/build/Quaternion_8cpp__incl.map b/Doxygen/build/Quaternion_8cpp__incl.map deleted file mode 100644 index e2e3f3a..0000000 --- a/Doxygen/build/Quaternion_8cpp__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/Doxygen/build/Quaternion_8cpp__incl.md5 b/Doxygen/build/Quaternion_8cpp__incl.md5 deleted file mode 100644 index 292eb8c..0000000 --- a/Doxygen/build/Quaternion_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -57d3a0062141f1640bb90bcf0db84cb2 \ No newline at end of file diff --git a/Doxygen/build/Quaternion_8cpp__incl.png b/Doxygen/build/Quaternion_8cpp__incl.png deleted file mode 100644 index 2d003b886a361f7445db6ffc4d2efe64f212a259..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38683 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

*DMYOd$6H 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 - - - - - - -Leonetienne/Eule: Eule/Quaternion.cpp Source File - - - - - - - - - - - -

-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Quaternion.cpp
-
-
-Go to the documentation of this file.
1 #include "Quaternion.h"
-
2 #include "Constants.h"
-
3 
-
4 //#define _EULE_NO_INTRINSICS_
-
5 #ifndef _EULE_NO_INTRINSICS_
-
6 #include <immintrin.h>
-
7 #endif
-
8 
-
9 using namespace Eule;
-
10 
- -
12 {
-
13  v = Vector4d(0, 0, 0, 1);
-
14  return;
-
15 }
-
16 
- -
18 {
-
19  v = values;
-
20  return;
-
21 }
-
22 
- -
24 {
-
25  v = q.v;
-
26  return;
-
27 }
-
28 
-
29 Quaternion::Quaternion(const Vector3d eulerAngles)
-
30 {
-
31  Vector3d eulerRad = eulerAngles * Deg2Rad;
-
32 
-
33  #ifndef _EULE_NO_INTRINSICS_
-
34 
-
35  // Calculate sine and cos values
-
36  __m256d __vec = _mm256_set_pd(0, eulerRad.z, eulerRad.y, eulerRad.x);
-
37  __vec = _mm256_mul_pd(__vec, _mm256_set1_pd(0.5));
-
38  __m256d __cos;
-
39  __m256d __sin = _mm256_sincos_pd(&__cos, __vec);
-
40 
-
41  // Create multiplication vectors
-
42  double sin[4];
-
43  double cos[4];
-
44 
-
45  _mm256_storeu_pd(sin, __sin);
-
46  _mm256_storeu_pd(cos, __cos);
-
47 
-
48  __m256d __a = _mm256_set_pd(cos[0], cos[0], sin[0], cos[0]);
-
49  __m256d __b = _mm256_set_pd(cos[1], sin[1], cos[1], cos[1]);
-
50  __m256d __c = _mm256_set_pd(sin[2], cos[2], cos[2], cos[2]);
-
51 
-
52  __m256d __d = _mm256_set_pd(sin[0], sin[0], cos[0], sin[0]);
-
53  __m256d __e = _mm256_set_pd(sin[1], cos[1], sin[1], sin[1]);
-
54  __m256d __f = _mm256_set_pd(cos[2], sin[2], sin[2], sin[2]);
-
55 
-
56  // Multiply them
-
57  __m256d __abc;
-
58  __abc = _mm256_mul_pd(__a, __b);
-
59  __abc = _mm256_mul_pd(__abc, __c);
-
60 
-
61  __m256d __def;
-
62  __def = _mm256_mul_pd(__d, __e);
-
63  __def = _mm256_mul_pd(__def, __f);
-
64 
-
65  // Extract results
-
66  double abc[4];
-
67  double def[4];
-
68 
-
69  _mm256_storeu_pd(abc, __abc);
-
70  _mm256_storeu_pd(def, __def);
-
71 
-
72  // Sum them up
-
73  v.w = abc[0] + def[0];
-
74  v.x = abc[1] - def[1];
-
75  v.y = abc[2] + def[2];
-
76  v.z = abc[3] - def[3];
-
77 
-
78  #else
-
79 
-
80  const double cy = cos(eulerRad.z * 0.5);
-
81  const double sy = sin(eulerRad.z * 0.5);
-
82  const double cp = cos(eulerRad.y * 0.5);
-
83  const double sp = sin(eulerRad.y * 0.5);
-
84  const double cr = cos(eulerRad.x * 0.5);
-
85  const double sr = sin(eulerRad.x * 0.5);
-
86 
-
87  v.w = cr * cp * cy + sr * sp * sy;
-
88  v.x = sr * cp * cy - cr * sp * sy;
-
89  v.y = cr * sp * cy + sr * cp * sy;
-
90  v.z = cr * cp * sy - sr * sp * cy;
-
91 
-
92  #endif
-
93 
-
94  return;
-
95 }
-
96 
- -
98 {
-
99  return;
-
100 }
-
101 
- -
103 {
-
104  InvalidateCache();
-
105 
-
106  v = q.v;
-
107 
-
108  return (*this);
-
109 }
-
110 
- -
112 {
-
113  return Quaternion(Vector4d(
-
114  v.w * q.v.x + v.x * q.v.w + v.y * q.v.z - v.z * q.v.y,
-
115  v.w * q.v.y + v.y * q.v.w + v.z * q.v.x - v.x * q.v.z,
-
116  v.w * q.v.z + v.z * q.v.w + v.x * q.v.y - v.y * q.v.x,
-
117  v.w * q.v.w - v.x * q.v.x - v.y * q.v.y - v.z * q.v.z
-
118  ));
-
119 }
-
120 
-
121 Quaternion Quaternion::operator*(const double scale) const
-
122 {
-
123  return Quaternion(v * scale);
-
124 }
-
125 
- -
127 {
-
128  return ((*this) * (q.Inverse()));
-
129 }
-
130 
- -
132 {
-
133  InvalidateCache();
-
134 
-
135  Vector4d bufr = v;
-
136  v.x = bufr.w * q.v.x + bufr.x * q.v.w + bufr.y * q.v.z - bufr.z * q.v.y; // x
-
137  v.y = bufr.w * q.v.y + bufr.y * q.v.w + bufr.z * q.v.x - bufr.x * q.v.z; // y
-
138  v.z = bufr.w * q.v.z + bufr.z * q.v.w + bufr.x * q.v.y - bufr.y * q.v.x; // z
-
139  v.w = bufr.w * q.v.w - bufr.x * q.v.x - bufr.y * q.v.y - bufr.z * q.v.z; // w
-
140 
-
141  return (*this);
-
142 }
-
143 
-
144 Quaternion& Quaternion::operator*=(const double scale)
-
145 {
-
146  InvalidateCache();
-
147 
-
148  v *= scale;
-
149  return (*this);
-
150 }
-
151 
- -
153 {
-
154  InvalidateCache();
-
155 
-
156  (*this) = (*this) * q.Inverse();
-
157  return (*this);
-
158 }
-
159 
- -
161 {
-
162  return RotateVector(p);
-
163 }
-
164 
- -
166 {
-
167  return (v.Similar(q.v)) || (v.Similar(q.v * -1));
-
168 }
-
169 
- -
171 {
-
172  return (!v.Similar(q.v)) && (!v.Similar(q.v * -1));
-
173 }
-
174 
- -
176 {
-
177  if (!isCacheUpToDate_inverse)
-
178  {
-
179  cache_inverse = (Conjugate() * (1.0 / v.SqrMagnitude())).v;
-
180 
-
181  isCacheUpToDate_inverse = true;
-
182  }
-
183 
-
184  return Quaternion(cache_inverse);
-
185 }
-
186 
- -
188 {
-
189  return Quaternion(Vector4d(-v.x, -v.y, -v.z, v.w));
-
190 }
-
191 
- -
193 {
-
194  return (*this) * (1.0 / v.Magnitude());
-
195 }
-
196 
- -
198 {
-
199  Quaternion pure(Vector4d(vec.x, vec.y, vec.z, 0));
-
200 
-
201  //Quaternion f = Conjugate() * pure * (*this);
-
202  //Quaternion f = Inverse().Conjugate() * pure * (this->Inverse());
-
203 
-
204 
-
205  Quaternion f = Inverse() * pure * (*this);
-
206 
-
207  Vector3d toRet;
-
208  toRet.x = f.v.x;
-
209  toRet.y = f.v.y;
-
210  toRet.z = f.v.z;
-
211 
-
212  return toRet;
-
213 }
-
214 
- -
216 {
-
217  if (!isCacheUpToDate_euler)
-
218  {
-
219  Vector3d euler;
-
220  // roll (x-axis rotation)
-
221  double sinr_cosp = 2.0 * (v.w * v.x + v.y * v.z);
-
222  double cosr_cosp = 1.0 - 2.0 * (v.x * v.x + v.y * v.y);
-
223  euler.x = std::atan2(sinr_cosp, cosr_cosp);
-
224 
-
225  // pitch (y-axis rotation)
-
226  double sinp = 2.0 * (v.w * v.y - v.z * v.x);
-
227  if (std::abs(sinp) >= 1)
-
228  euler.y = std::copysign(PI / 2, sinp); // use 90 degrees if out of range
-
229  else
-
230  euler.y = std::asin(sinp);
-
231 
-
232  // yaw (z-axis rotation)
-
233  double siny_cosp = 2.0 * (v.w * v.z + v.x * v.y);
-
234  double cosy_cosp = 1.0 - 2.0 * (v.y * v.y + v.z * v.z);
-
235  euler.z = std::atan2(siny_cosp, cosy_cosp);
-
236 
-
237  euler *= Rad2Deg;
-
238 
-
239  cache_euler = euler;
-
240  isCacheUpToDate_matrix = true;
-
241  }
-
242 
-
243  return cache_euler;
-
244 }
-
245 
- -
247 {
-
248  if (!isCacheUpToDate_matrix)
-
249  {
-
250  Matrix4x4 m;
-
251 
-
252  const double sqx = v.x * v.x;
-
253  const double sqy = v.y * v.y;
-
254  const double sqz = v.z * v.z;
-
255  const double sqw = v.w * v.w;
-
256  const double x = v.x;
-
257  const double y = v.y;
-
258  const double z = v.z;
-
259  const double w = v.w;
-
260 
-
261  // invs (inverse square length) is only required if quaternion is not already normalised
-
262  double invs = 1.0 / (sqx + sqy + sqz + sqw);
-
263 
-
264  // since sqw + sqx + sqy + sqz =1/invs*invs
-
265 
-
266  // yaw (y)
-
267  m.c = ((2 * x * z) - (2 * w * y)) * invs;
-
268  m.f = (1 - (2 * sqx) - (2 * sqz)) * invs;
-
269  m.i = ((2 * x * z) + (2 * w * y)) * invs;
-
270 
-
271  // pitch (x)
-
272  m.a = (1 - (2 * sqy) - (2 * sqz)) * invs;
-
273  m.g = ((2 * y * z) + (2 * w * x)) * invs;
-
274  m.j = ((2 * y * z) - (2 * w * x)) * invs;
-
275 
-
276  // roll (z)
-
277  m.b = ((2 * x * v.y) + (2 * w * z)) * invs;
-
278  m.e = ((2 * x * v.y) - (2 * w * z)) * invs;
-
279  m.k = (1 - (2 * sqx) - (2 * sqy)) * invs;
-
280 
-
281  m.p = 1;
-
282 
-
283  cache_matrix = m;
-
284  isCacheUpToDate_matrix = true;
-
285  }
-
286 
-
287  return cache_matrix;
-
288 }
-
289 
- -
291 {
-
292  return v;
-
293 }
-
294 
- -
296 {
-
297  return other * Conjugate();
-
298 }
-
299 
- -
301 {
-
302  InvalidateCache();
-
303 
-
304  v = values;
-
305 
-
306  return;
-
307 }
-
308 
-
309 Quaternion Quaternion::Lerp(const Quaternion& other, double t) const
-
310 {
-
311  return Quaternion(v.Lerp(other.v, t)).UnitQuaternion();
-
312 }
-
313 
-
314 void Quaternion::InvalidateCache()
-
315 {
-
316  isCacheUpToDate_euler = false;
-
317  isCacheUpToDate_matrix = false;
-
318  isCacheUpToDate_inverse = false;
-
319 
-
320  return;
-
321 }
-
322 
-
323 namespace Eule
-
324 {
-
325  std::ostream& operator<< (std::ostream& os, const Quaternion& q)
-
326  {
-
327  os << "[" << q.v << "]";
-
328  return os;
-
329  }
-
330 
-
331  std::wostream& operator<<(std::wostream& os, const Quaternion& q)
-
332  {
-
333  os << L"[" << q.v << L"]";
-
334  return os;
-
335  }
-
336 }
-
-
Quaternion operator/(Quaternion &q) const
Divides (applies)
Definition: Quaternion.cpp:126
-
double & j
Definition: Matrix4x4.h:137
-
Matrix4x4 ToRotationMatrix() const
Will return a rotation matrix representing this Quaternions rotation.
Definition: Quaternion.cpp:246
-
Vector4d GetRawValues() const
Will return the raw four-dimensional values.
Definition: Quaternion.cpp:290
-
static constexpr double PI
Pi up to 50 decimal places.
Definition: Constants.h:6
-
double & i
Definition: Matrix4x4.h:136
-
Quaternion AngleBetween(const Quaternion &other) const
Will return the value between two Quaternion's as another Quaternion.
Definition: Quaternion.cpp:295
- -
Quaternion Lerp(const Quaternion &other, double t) const
Will return the lerp result between two quaternions.
Definition: Quaternion.cpp:309
- -
Quaternion UnitQuaternion() const
Definition: Quaternion.cpp:192
-
double & e
Definition: Matrix4x4.h:132
- -
Vector4< double > Vector4d
Definition: Vector4.h:107
- -
double & f
Definition: Matrix4x4.h:133
-
Vector3d ToEulerAngles() const
Will return euler angles representing this Quaternion's rotation.
Definition: Quaternion.cpp:215
-
static constexpr double Deg2Rad
Factor to convert degrees to radians.
Definition: Constants.h:12
-
double & k
Definition: Matrix4x4.h:138
-
Vector4< double > Lerp(const Vector4< T > &other, double t) const
Will return a lerp result between this and another vector.
Definition: Vector4.cpp:287
-
Quaternion operator=(const Quaternion &q)
Copies.
Definition: Quaternion.cpp:102
- - - -
Quaternion operator*(const Quaternion &q) const
Multiplies (applies)
Definition: Quaternion.cpp:111
-
A matrix 4x4 class representing a 3d transformation.
Definition: Matrix4x4.h:36
- -
Quaternion & operator*=(const Quaternion &q)
Also multiplies.
Definition: Quaternion.cpp:131
-
bool Similar(const Vector4< T > &other, double epsilon=0.00001) const
Will compare if two vectors are similar to a certain epsilon value.
Definition: Vector4.cpp:162
-
double & b
Definition: Matrix4x4.h:129
-
void SetRawValues(const Vector4d values)
Will set the raw four-dimensional values.
Definition: Quaternion.cpp:300
-
double Magnitude() const
Will compute the magnitude.
Definition: Vector4.cpp:38
-
double & g
Definition: Matrix4x4.h:134
- -
double & p
Definition: Matrix4x4.h:143
-
Vector3d RotateVector(const Vector3d &vec) const
Will rotate a vector by this quaternion.
Definition: Quaternion.cpp:197
-
double SqrMagnitude() const
Will compute the square magnitude.
Definition: Vector4.cpp:31
- -
std::ostream & operator<<(std::ostream &os, const Matrix4x4 &m)
Definition: Matrix4x4.cpp:620
-
static constexpr double Rad2Deg
Factor to convert radians to degrees.
Definition: Constants.h:15
-
Quaternion Conjugate() const
Definition: Quaternion.cpp:187
-
Quaternion Inverse() const
Definition: Quaternion.cpp:175
-
bool operator==(const Quaternion &q) const
Definition: Quaternion.cpp:165
-
double & c
Definition: Matrix4x4.h:130
-
3D rotation representation
Definition: Quaternion.h:10
-
double & a
Definition: Matrix4x4.h:128
- -
bool operator!=(const Quaternion &q) const
Definition: Quaternion.cpp:170
-
Quaternion & operator/=(const Quaternion &q)
Also divides.
Definition: Quaternion.cpp:152
-
Definition: Collider.h:4
- - - - - - diff --git a/Doxygen/build/Quaternion_8h.html b/Doxygen/build/Quaternion_8h.html deleted file mode 100644 index 06407f5..0000000 --- a/Doxygen/build/Quaternion_8h.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Quaternion.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Quaternion.h File Reference
-
-
-
#include "Vector3.h"
-#include "Vector4.h"
-#include "Matrix4x4.h"
-
-Include dependency graph for Quaternion.h:
-
-
- - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  Eule::Quaternion
 3D rotation representation More...
 
- - - -

-Namespaces

 Eule
 
-
- - - - diff --git a/Doxygen/build/Quaternion_8h__dep__incl.map b/Doxygen/build/Quaternion_8h__dep__incl.map deleted file mode 100644 index 6c700c6..0000000 --- a/Doxygen/build/Quaternion_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doxygen/build/Quaternion_8h__dep__incl.md5 b/Doxygen/build/Quaternion_8h__dep__incl.md5 deleted file mode 100644 index 513a0cb..0000000 --- a/Doxygen/build/Quaternion_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -0219cd7956ac16cdc9c91c9605d3285a \ No newline at end of file diff --git a/Doxygen/build/Quaternion_8h__dep__incl.png b/Doxygen/build/Quaternion_8h__dep__incl.png deleted file mode 100644 index 542be950400a346bda85ee03e65999aecccfaeae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3640 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 diff --git a/Doxygen/build/Quaternion_8h__incl.map b/Doxygen/build/Quaternion_8h__incl.map deleted file mode 100644 index 774d6a5..0000000 --- a/Doxygen/build/Quaternion_8h__incl.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/Doxygen/build/Quaternion_8h__incl.md5 b/Doxygen/build/Quaternion_8h__incl.md5 deleted file mode 100644 index b35b1f6..0000000 --- a/Doxygen/build/Quaternion_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -634a4ab00421470b51e923cdf9e8b35f \ No newline at end of file diff --git a/Doxygen/build/Quaternion_8h__incl.png b/Doxygen/build/Quaternion_8h__incl.png deleted file mode 100644 index 7dc20f07d628ec6513413940790d93806c809a65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32059 zcmZ_01yogA7%qxOMMMcPXpwFOq*J=PTS}y*r40|unw6T)X=;)_CW26Tp&y<=9dpV^d7jRb|F|7~-@d#qcu$1iDUo+&9kQ3|23Sgt2JZKRctU}_{>yd3G!2(7Z+ zPINwrF9{Y1BfHO!c?bUM{xBNK_20ig*ISZ||9g!;O{jzz#q$M(?jgIM#MT?-z@vsKt1~ZDxNO8yT6H{&aN(%s2aY5(XtV z3kV2&JliMVnW+osdcxno-$s7;cB0JW37uNV!AfuGyKX$4+K;~-XWgO=tnYiiFpLso zy~B@oez?{Mi%@jo`19vaQDtRoXQ%(4uMa%zE-y}Y&aO^oIo!^fVV8&UHKWDDDdel| z)`kpv5_u#CGo^2-m76}*uC^0bJS!9QL8p3x8bzlru+ozNpFh(lfJ@F_o*lr;645UM z0|U{}(Gj0{MyK}X?b{cU(JzhG1~P_nlpkPYN55)WUtJZ0@2s-lc=q}8XQ>3vNQ=pe z{yg>9mebYEbuK3iOicRoO}^Ro(y-^N0~rtC!na-_ z(Oc)>9i7R#bMM}3r~So;M6g}U-#G9+UwAe9V;@|e*{bAgH1{NMWvdmF94vP)G z_a-(E41{ILChhMpNpjk)?#gp*O_U3Yic%htB!nJ3=W{2})zyWy{|Y4)Wp~)bLE^jI zy*-?(YTOclOTg#OZU2LmwD|gej>3Bta^Z;Oa_+%n_d=kWN#mmBgTiqRiD zXzc9`HW|#6&y>PNeM-}`+MniheaXSk&yOS|ENs0q!-L0aE+!;&2Z>xV>hcFYAt7Nv zK!8GUI~DvXM>$udP^XUFc3G-I|L*E|DP?A6=IZL@jjCTl0wIgpNcx-4|BX#dU_E;D zJC4nYms3g_r9*O@;msaUPjUE*S}FZ*Px?5E~EAub|*11qDU6 z2Rvqikoe7X?uvkl=<$OGp2<##62StWe)Ijo_=+>0l$4Yl)sxNHh9nYUKiB=3QsdqM zh#@2zmAr4hzV~NlW+32byRAiopWh8zVRxkt+TH!&etl-_e!fPD$Nc_NeLb(s@uoPT z$gP1xDMMxzq^|;@+ZMX|=H>wk*<{Sj%q%8|eg7re9{B>LDjY}T(H)i_8s#)M*B7t) z`}=F1k5JjzD(!+Mu zlKJ?NT{%Zd@9(eAi=ENI8>5B)o@XO!R8&-+TJeAIDTnQ;b|@I~R8KB<8!^f(r#X*) z_BQM3>;L&7pLTk-lH}{>m+E}9uBNVTeQ~@s1fQKvf|V6J?&##G76$qIcN!ZgN1q+6 zl)~?NV-N)iq$JCyi3AXGsaR}1@O<&=D_N%T11Bk1iin5^oo0m;ZL~o3&z~WD9_|E$ zgo8X3Pzv-Kz5ASnLV8CW&u2A`JBd@oD1TJ>pB!QB$48{<==yu!%}puP4d2}r zd^5t=!^w&K2{m%v4LNu;ON|kqgj6;p;_zrYQ={yCztm0+Es6kM>W}D^1V>Wj;z0 zW4=Rtfv71}A+b%!q?rW8 z^BB=87qLWxk^6Fn6)rFT8!t0qZ@4yJD};qX^&c!YAgmIUh%P8V?~I-_c&~;;nbqCY)HGPA`?#tR z>kj{eZ!kiX$tfuj@ZGqEq+{#1 zNBN8Bl9+d55wk~G*VhNZr`H!-LZYp6+q_?1YIiN6QxCQTS)4R9Eg*%4T1&+a$Zv<- z;SUK#M2BQkGkJ-A^CK7kw)9&b*=N0^LdRI3DGbrgtt zM*rc=2J*)L^LX`pGc&lmLxPZLCU$v$yt=o{@fSPA>rNg zd=XBon%I}pXv1p7+X!njA7|Rnm1I^>(~K)|IuHvYsA~T92wz-GEDW*VHX(3F#6IK{ zH0s6ky3U7cf>k!n91i9!s;|xWIp{T%3_7Di<9RMV=`~)Hy?ps^7uty7hQ1Kkt@J!F zH;=b=9Oi}kGBa$<@(Gvx3p0(f2VqoRjw;*Sug`lzLQMmuD^^gdWe^Xl?*$@zyh-5K9xGiEN6ZUs;_R$0a1Z%gftdhg)4e zpB9y^1Ud=|;njWvddKbB5X3JHNx9xe_59B5w2#bHW8W29dXF-Tm4Kb$bB=Q0 z5<0Cal|~sRmqS2`NFdYUdU;T;YEm0v*b5X>G6;t@3UP_;?)RhHsxx&iy|W%3y%E$2 zLRKOaxHwP#7B+YfCi4rQAKNb-u3h}g!0+Fz1o_*%|NgBUo2+4QIkv37C?LPN=E7AR zw6XDtG+WzPF&?B4ohZw04ne!Y?ly|zM{zF<2Xa+IrIPBy7g~21OqK96r8k7GFXz+J zWvZ(=^R&h>1RFgAo^So$UvgWUtSp|=gP;(e$5+5)`rWy~IheKcXKXCQ>mH>-p^k8s z;JGO^Vy;{j4<$K=I_R~!%I=L(8OBA&k6D7)_>fyEDe_%0#gDCaCLa=vMI^bef3A0T zuWIagoGG*QrQV&_{ZxV)h(le5YkKu0(vWJ{%^TcD38mn`m zgVqPpxw|Y~hNu#|M5y9nWK~|6U*hfd=1D1}CuHpG2>h`p`!oEjrihn*YS+A++rST5 zwmR8qAn|bLp;4v@UEaAmXGxKc`_6%@6UFWFEU2#TfwME`N9UjvsaSnPDhMz+LP2m6 z(b6J;67qZa2#1yR9i5K3s4v#nC3MMWS+cXOGc!y6tq^lPi3tbt|E1;&2&S#h&PJ}T ze&pt9m8-H5N8Hmb#MH5?toF0de`7Q$)8%5RlfTTWA)q_1x5QAKXlmMLd0gmrvU+Kb zuInZ0SI=tu&Xw;%w_yej;c;n^FEP}E8rwKsLyTC}fBHS%yH9ubsseL2tXqO-0mv$R zpPXL^S1Vh^KbE3}q5w)HD)3Hgmj^96q($tCt z%x8JMB_bsTa!0MSYNFh+Xix-tAap}=c|4x?j1_AleY`wH>x{aJbDkW|l`X2!X<6|^+5Gjj559G3N0^9zqd$?j(;eD&{S>`8R{<@fYP->k;lX35WXGiJ5>G{X6a zMj^$spVDfuU%s!*L^&W3&6b_!sDHFK*ryc*l0u}xeS^b(9VV*#0*QdciAOa`78ynh z`N$dfZafk;R;h4!FJ-5uWQq)Z2`4K8Q_a3CT}2Jy9zqEXzAZ9{u*NHQgHb7`%s)Fq;%R^XeY-7<;Lo?|n+uY4 z`%1H#DSZ@RckQ;dRK33q$*QW}GhVr7XIEpgS)_2-swP8x(+VO5>~-p0eZmLd{T=lE zqLAG*ctEn!!_zhX%O(ZNceeWA7Yth_ZEeDdihN-xTl;r2-$4u{d2F|Td!&LWViuD< zolwpfsUg{Io<>UiX*YRYTzucPKqw#xJ%Fe|cr!ZmmV-lJU;o)n$`kRh)oHF1jFii0 z7+`#e%wstQy-fxk=9e7=5D%jF-y^2eJjTF&h3w|=^zJ7G>b-g4I}Mlfk%FO1Iy}zI zZ!#1zu4~@h;+d!{q&E=y&f;Ls_3Y(lyXW0|>Se1TQ*$T+iOH0XNS-0`Su)cG-FUNh zF3e9*??U!KnSqBSI+&@Ptx?WQ6Zs`5D5fSf5qf-oGCz5Nj+Kj?^Klw zwMH2dy{1YuS3H4%nP!r}*ZtS1h@j8Mk1DpW=p7ZCzb)MTLr49Maqz;5oPIk5R0QOzWQ&&Vn3w zf;tI1jGxkLM11>(QeNS7ym{Lj{fbbsGv{XwM#h_4dt6eOLv7lwsWw#(TN8{ni(*xc zeK9}T$=R&xGc?LmpU`H;Ci=(3-~eBh8Ct=|?6|G9J~BKr@ih9Ck9?{Se~uC^y(85c zr}H6IVq&7HRVCD#kItNoACmFW(Jjp<7QaDrDo+x{+@}dOU$g;?_j_hWXPd#Me0O)3 zK%6x%FOPY^HudFn4W&Zzr$iOmh=6b3`ov0Z$u+nOL#1PQ`w6~i`{T!eUwuW%B0c0N zPJuY_Pww3M5?4xS(!+(USf5?u~qk=c9|`Kv7jypXWRy`-|=P|K61*!xtz}E!5$uFdrvz z#QB50STUMyw??u#we}@NkAHJ>WN%eI22mmk{*iTG>>}vYW1yl!^@@PYU}5h5O9@r1 zc9G}$W@ep#e|zycX~wZy-~f|WF<~`UL=1oFP{BvSc+UOy*QZ+%G|GMo84~@KR=SCN z9*J8Hw*FK5oEafxzCa|U$Wi@tzp9>?7=9+~x4N*#;r*SZvky^StM=6psW8jzOp!SW+!GnL4CH|@QH2N5tHwkZphg!D02Pi3E~RPtt(Q8U)?aLM zK|TYAdiMo0bHuIN$ZyTfrGTTuWimvunyr_%01n9+$U+~WD-GVihkDNiNct|Y3F+`t zDNpT@sHo^m-TKS%R=8K5i3$tJP!eGv0FZ%qF?C(GQL%JNcyZ>WTjN0A)6;|NY+iL{ z-;tz?!B$CJW~Cd)@5TCIv5g+_l&1u-Z1Rt{CMAJYjjitWy!#-%+I}PRnv0iLhekOk zqRe_h1e$*~uowzJIA#E!BaR?-Go@llh6{Cd6=)*E$ix*+wx=_m(QAlRTFpiQ8B7jz zTYG1xB)nBpR3v6WDGZDW89qM#8W0ZygITf}tQHeutgNirm2q)#lE66)#J)C8hkt_S z-L5aIhU#1#vtcLJcqwdcZL{^8{RRNTr9%dq%>DTqR$N@1u8_@i7+>plq4FP@mDSEe z!X$Nd6F#VY#bhnFRabjX(tQXp_3Dd0+)1z=3?cLqdGywR$gGaxllVvbF z?W4n&QxE+1TI18<$5g2DH6+FElqlH)?owP?}s3@cXdfQA8)Ex2e(g6X=xPe3$HgQzT8f#>GdgN9B)G_90Y<` zG5l8m1^&2G0+~2h7#iF|qy%|)QiCjwu6s$D+l5nAiG}-qoQ2+QL9sUds zhC{MgU!Lv_-S>es5fByi0Rod$T;cl-L?Db=k@7T=+^(m);alsg>26%gKjc2Ar;{b} zx_v*dyod2TeI|;e4r?5GIg?Qb04eiCZl^Hk*;;`(-7KK>_Tdo*1O_VVQhqu=+IVfh zu5`qGtLoQS@m35^&4YuL9ph#{QX3yq6b(r-d?&fqAVO;O5;EYwTY#SCv|mSRZ_ol# zsi!YR@czSxWUQ=FK&1DV8q3ZvEFk!72rHwpBE6|9TOY@rnPR<0WZ0`aZ(^B@c27FQpMed}(uu#8%vRF3vg$qB7zI*x0fMJ1iI3>< z@9!3;A4g0Uz)c=U{( zlgyFbGdU8f)V;OURR;Yg6nN;o8X{|RbNt=kS=OeiUbnQg1Q78hrU?2dB){2rnAEH= zPXWH)ZgVUYmgxEu|Qi!tL7N0@6xIQk&JSvoDrI1U z#v44i&ki>F(^~O7J^vssY!mULG=)4YOi8QZ`b#+Fj`e&KkLA=y3577f^XBjO53*)jCnmo8U=Zo+>813KVPV;|CFy4L+qzy~RxkDz4yj!Lc}~D-7a#jN z0rzz#CG;#+vkPi_#GEp)iMF5e<&HK9397z%e7UuoG@s}Vxp;_7O#a!+@*;^%m7r|8$l z+mCT^MbGw|fmx$~xv+7dgeF4*H`CRdL=5|p%NijbfhjS?+XpRy)B1!xD`@1HOy7ApSJtZC!B?%4Zw3JzDhpXh9zJ*PI zS<^Uo3o+556Q1|aMoJLQ)KZJ7sS(fA(S9o^@H;=!HKH*Q6YE==Yn&GnU1|M8LMGW8 zERpeoES(`kqWRtGl%C$#k4GJ!CdwQ8+6`w{uP&PJqp|#IqYAQFN~KaD;~m_?!@((n zDM4yhRuhQPgK0+(n}g-o6_$kJUda0FN~i14Z77>tC_XH87|0}`Hub*3^tgF@cyxe3 z<#~BIgC$1xU0pP;RVf6Rk01AznQ(D@_=_haV*!{0S$n!GxY}aeCg|&fx}Pp5(R8i* zC$rbU&-xY@6K{-SWUAzss9SE>A|j&h9ET_g2`J(!rvo6uP)$c)`jp#S~$H6`75aU!Sc|SX=wT6!es<#@lX9KQX(h1=yg{cUvvLl96atkF%T( za@75(8FtC@HD4{Q_M6~3TM_}!(9#mi>xNhSL9b9M0h+(7+wIe<6UEcBy9$+-P6UMc ztHYfnk~@V{>sJ?d2ngA1_Vh7zlHWa{N{-Grwux&J zA~$HYTwd+xy4-7Z96yi0@2ODM9r!=J08xPJtAPmS@VF+fufKJAI<>sFF#6<`<(tWh z@}i0YX}ASyovAn541?t^Cq@ADgr}>Q)EnFxU=Zk5aaosOeNnZdcVud%lE0rKcu!F! zZ#8<(KaF#$<^)T3b~2vxX&VsjVq#*c3K>{sR#p-|=$Xuxm(t%K7=75)M1Nk}QelA& zrHNid@(eKvX z5j}Qe#1=tTerGA=J^2eOzufa7iepR4P-ApMMl)>z%AZPMaYJ_^UnwVsb2z-trSR`O z)3<+Qzc?l{pqF*b=g%A022b{Ykf}VOCm~%J(E9S7^-5*K`PDToFRw3z|LK7&pEsIW zI|iSfs$|!?6stl!$H6D-g^J{?tj214bhw|uiHV*cCp(XSx^irVsQval`=Q%F((I4F zd%9<~J$3*0*iRJgn(u@8aZVNU0RgVPf4=INLvC44ukURXx>0E;@%WDTJrx~mxS?@( zFJ-cCNGE#=&7s!$X*=JIRHj&{=eQp!GqWF1PDOf+;$-(XxA0$EYE7C`)=tQTkuCSm z_O=9Osn^%Oa=T!Sf@UMf7HV#&jM!qL{Qxbo)S{Xl)W2BM=uFHYXt=aVt|{w2NQFb z#NK63zxmK)rk0bCGe+OS;`@?L3~<0q_BoUi8DSZcTWe#*L7a`o>q@dPQg!wu7%;ib z78Ox(+Npi6a=OcEN#IRFE2(r%3cXCW*FR6wF=BUDt=h4$HC>$WbU998+)^`+UibP{ zPtOdUTA$ZkBMYAt6$(cikJZDVoc4v*LJrqcWFPeDzb%1p{hrYaWy#oourc+IR6a5f zjO$#Q^{`?x8E^oq@N?yf68s=`6vNdwH2jq*-FUWu!T0RtA($F`^0YTT`HJ^kqRLpM zW|i7{aN6fc%E{q?2!;sVq3pyTN?4hhOYg@^I8{`JUk^<_1tqDMkH~OiZozDCN(q&DuMy)yTuhGXofHBi-zk5@gRi>_fZ5g6a$(6np);CD zvFr!$*5qiWW~DQfCB+RN(Sh)Ybp5q~25V~$k)4@mm*=@WcONV(UN|uim+qxNHZVGu z-P@UIp5L4zGBZ;QOxT#Ii{6}Zi%sBql^MG_o+j$W%p%A81X{p&DF!f;-R#Das&E5l122~o9T4lqR(jq+hX~48s;qMNo$<$h6o7Yx4a!iFc`Of*U43I! zHYDRn--3dSe|z3GpLR~vYt&$}(qY?QQI&0-E;XJbVE+)gHTi0HRUSt<7Y~RazRt%y zN!(6eNxJ)5!H+4ov7Sb9w`Li2t}~nLqp?|XFZA-s0`trP1hk%E`uP237PB7xo_NcL zctdoZ7Ghyw*?1n$b@GW+G}G{7q|7_*+S70L8$ojmw)mj21Q3j`=W4Om821_>BmysF z7K6DzI;OaZSa)!t9}9o{_|OOAq7>TTOKsFtpsLHvR3E@&0YT<#;>_rt(J~aiFZVS8 zEimA-x{3zkQQ-0D%8=tzBcuh32^mC0=WhI^3qBAPYO-1FLj$t1X{j@qS|txtyE;bC zcvLR`u|jy5(w#fpt*tAp5ONE@z2uN+l&JVmwvP}+z0q5_M0s+-7O1dn9XEpUDf5%5|4P%3a-9NfY$pJX{<6w%na-viU#<9Yz4<+*)gg z<4o084**_-Z*|1rh7PtPlgZB5+e~zUoE^(kW9DsU15zp|8(c?M$+@{+<>l1C{IY!i z(DJ`D*#254mTLRgt+O|{qQNu7WMu!5lHUH#Rw#mKxsw&oj5>1)M_-iQtz#NU3=DiN z=u`1_d&<)E+wOrvRJY~0%`>1EAL0%Wh>Fsd=MRO(69ZiuGMEgo{`o@^%T>t*`)Fb*i)#Z-2d2{#*f$A6 zo8k)A=8hbZ3ct5T8Ofv3n`73WsTH};HeQKNRQBpviHm#%Ms>~_fQ?LwLiXxp<$Z(J zitgh3jo*?&PWUpZFgT%+F(0*-=xKSF}Q>qLO

%G>-1v=p4)1jT6 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 - - - - - - -Leonetienne/Eule: Eule/Quaternion.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Quaternion.h
-
-
-Go to the documentation of this file.
1 #pragma once
-
2 #include "Vector3.h"
-
3 #include "Vector4.h"
-
4 #include "Matrix4x4.h"
-
5 
-
6 namespace Eule
-
7 {
-
10  class Quaternion
-
11  {
-
12  public:
-
13  Quaternion();
-
14 
-
16  explicit Quaternion(const Vector4d values);
-
17 
-
19  Quaternion(const Quaternion& q);
-
20 
-
22  Quaternion(const Vector3d eulerAngles);
-
23 
-
24  ~Quaternion();
-
25 
- -
28 
-
30  Quaternion operator* (const Quaternion& q) const;
-
31 
- -
34 
- -
37 
- -
40 
-
42  Vector3d operator* (const Vector3d& p) const;
-
43 
-
44  bool operator== (const Quaternion& q) const;
-
45  bool operator!= (const Quaternion& q) const;
-
46 
-
47  Quaternion Inverse() const;
-
48 
-
49  Quaternion Conjugate() const;
-
50 
-
51  Quaternion UnitQuaternion() const;
-
52 
-
54  Vector3d RotateVector(const Vector3d& vec) const;
-
55 
-
57  Vector3d ToEulerAngles() const;
-
58 
- -
61 
-
63  Vector4d GetRawValues() const;
-
64 
-
66  Quaternion AngleBetween(const Quaternion& other) const;
-
67 
-
69  void SetRawValues(const Vector4d values);
-
70 
-
72  Quaternion Lerp(const Quaternion& other, double t) const;
-
73 
-
74  friend std::ostream& operator<< (std::ostream& os, const Quaternion& q);
-
75  friend std::wostream& operator<< (std::wostream& os, const Quaternion& q);
-
76 
-
77  private:
-
79  Quaternion operator* (const double scale) const;
-
80  Quaternion& operator*= (const double scale);
-
81 
-
83  Vector4d v;
-
84 
-
86  void InvalidateCache();
-
87 
-
88  // Caches for conversions
-
89  mutable bool isCacheUpToDate_euler = false;
-
90  mutable Vector3d cache_euler;
-
91 
-
92  mutable bool isCacheUpToDate_matrix = false;
-
93  mutable Matrix4x4 cache_matrix;
-
94 
-
95  mutable bool isCacheUpToDate_inverse = false;
-
96  mutable Vector4d cache_inverse;
-
97 
-
98  };
-
99 }
-
-
Quaternion operator/(Quaternion &q) const
Divides (applies)
Definition: Quaternion.cpp:126
-
Matrix4x4 ToRotationMatrix() const
Will return a rotation matrix representing this Quaternions rotation.
Definition: Quaternion.cpp:246
-
Vector4d GetRawValues() const
Will return the raw four-dimensional values.
Definition: Quaternion.cpp:290
-
Quaternion AngleBetween(const Quaternion &other) const
Will return the value between two Quaternion's as another Quaternion.
Definition: Quaternion.cpp:295
- -
Quaternion Lerp(const Quaternion &other, double t) const
Will return the lerp result between two quaternions.
Definition: Quaternion.cpp:309
-
Quaternion UnitQuaternion() const
Definition: Quaternion.cpp:192
-
Vector3d ToEulerAngles() const
Will return euler angles representing this Quaternion's rotation.
Definition: Quaternion.cpp:215
-
Quaternion operator=(const Quaternion &q)
Copies.
Definition: Quaternion.cpp:102
- - -
Quaternion operator*(const Quaternion &q) const
Multiplies (applies)
Definition: Quaternion.cpp:111
-
A matrix 4x4 class representing a 3d transformation.
Definition: Matrix4x4.h:36
-
Quaternion & operator*=(const Quaternion &q)
Also multiplies.
Definition: Quaternion.cpp:131
-
void SetRawValues(const Vector4d values)
Will set the raw four-dimensional values.
Definition: Quaternion.cpp:300
- -
Vector3d RotateVector(const Vector3d &vec) const
Will rotate a vector by this quaternion.
Definition: Quaternion.cpp:197
- - -
Quaternion Conjugate() const
Definition: Quaternion.cpp:187
-
Quaternion Inverse() const
Definition: Quaternion.cpp:175
-
bool operator==(const Quaternion &q) const
Definition: Quaternion.cpp:165
-
friend std::ostream & operator<<(std::ostream &os, const Quaternion &q)
Definition: Quaternion.cpp:325
-
3D rotation representation
Definition: Quaternion.h:10
-
bool operator!=(const Quaternion &q) const
Definition: Quaternion.cpp:170
-
Quaternion & operator/=(const Quaternion &q)
Also divides.
Definition: Quaternion.cpp:152
-
Definition: Collider.h:4
- - - - - diff --git a/Doxygen/build/Rect_8h.html b/Doxygen/build/Rect_8h.html deleted file mode 100644 index 8c90be9..0000000 --- a/Doxygen/build/Rect_8h.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Rect.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Rect.h File Reference
-
-
-
#include "../Eule/Vector2.h"
-
-Include dependency graph for Rect.h:
-
-
- - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

struct  Eule::Rect
 Trivial data structure representing a rectangle. More...
 
- - - -

-Namespaces

 Eule
 
-
- - - - diff --git a/Doxygen/build/Rect_8h__incl.map b/Doxygen/build/Rect_8h__incl.map deleted file mode 100644 index bb6e123..0000000 --- a/Doxygen/build/Rect_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Doxygen/build/Rect_8h__incl.md5 b/Doxygen/build/Rect_8h__incl.md5 deleted file mode 100644 index fa4dce9..0000000 --- a/Doxygen/build/Rect_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5b67ebb9ac1fb7c31a00bb159f2570b2 \ No newline at end of file diff --git a/Doxygen/build/Rect_8h__incl.png b/Doxygen/build/Rect_8h__incl.png deleted file mode 100644 index 7dc6251e32ddde32d9db9860420dde7d1c5f812c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6779 zcmcI}cT`i+*JT7L(xplbO^{xcDm5sGbfigdN)rJ=2qbh6kR~0ZgEZ+%@4fdX%|Jl9 zKoF#tx&FSjzBRLEX3bxdtR!o_ym#Nd=bp3A-us1Vsw)u_&=Ei&5Mt$LPqe{rIruc< z5)_LgKMdx^aOJA@150L5C?(K2`WF4*MX<){`Ay&@naqr!+8ha7C%c)>(h9+ zUhxEsM^8(OM>~)&;OXyfyP_jQzS0NJi%Ng2@EZR0(d(Z1SVcwYP>!v$iIbMaU1O-E zm}0GMtte>W>#M1aea9*`PT|;zZzeX*dS5KHw=*>^4m*SlCa1;Q^{N5#ahspc^kcOx zoNFcrooApDzJ+C|qO9CLlKwb_U%@Jp@i8@zewlScgt}HEW_@F0wJVGwS=@znGS4=x z(PLlO1eR220yio#Yt7gqe?+n{lXl!h=`fDbE_vFiQb|oL;P+}U5&e7ayK2%nTR4q? zA`&Sz`KpkTSfJa`9#NIe6A%#KygOely5RA9_Lh>8Qr_^+#zsiB!;h7|7`E86_ik?H zZ{L!bnVG4kOX{*5o?cvZPEJxx7HH`A!JD6!;|oCGo}LzGf7ZBD1!QHRA|fL9WRP`J zm&C-x;)r8jQOEh)j~_ptot-T#;ZV!H>(~kA5|fz7an@2&LR3~(R#;RN<9Ty_?)Cd; zBaMuV3>iT%J_(7UvU1pzcbRcLmW_>#vp7T1uB4nXRzEo|v4he7~bt*U(@&_wCiYOdB5`8ND*&FxrQ&+eSx8f0Uc; zPe@iqDhAaSi#nkqIyzv;ztj4mQBfcA^6t-+8imkkc(=S;Bj|}@Tv)FJt2o^%$ZSJ9 z3%YHNsYlnltSVYtTbmCi@|_;^LWSHmH7~C(_D?SlM=hM3qD35Ln1zJyUL5bn8J!5U zUIyf;B(41Fk8^f)?d*x9A5Yczu_xlFpsGq_X=(YTCSCG90WL1C30(n*1&x3y*jr9P z^EL>i4G)ThWNU_|r7_IT&*wBW(2+7p`NhS>4V_h2Rguxr5fBoFt4H>49J;IxP(4vp z>{wi6fG|@MG&bR)P^f#NZ|*^s(>+k_VoS(CPK}JV+1a{5t4jIuJLNfEsGJ;D$gsR^ zXFeh9(pIg!8Lbrj?7WKq`~ei`9Lq7 z#_a6uUrS&wAfJ6Hj`W&2ns&#>$79Y}^mKIkn#)sCXvG;w)YBz#{NGI}yE?L+U#wa^``;V1Yy_O3#j(x+!PaPfkM$#k#i zR$#O6iHLL-St~Wm?>K?2F*Y&DYgt)Yfjok8mX?$R)z*py1O}p4Rwnig+S}VJs;Zu7 zYLcP6PfS26gwyO5moY&&QrUSogkK&g9CX>OHki^RZdGXM_ZG4 zplV+?PzD>d`bev)sybhuy5y^D#hZTL&`pSsk9Rl1eg6K@3Qj63qqJB27I|Uom^7&E zNB=7d{HNGixVXXqNT|PjNec!_=Fgp+5^cJ)t;CGPX!SiyL)sfCivN!e8u;NI3a8|GNYN{TTp#1a&Y*w^u>D&T&lj7 zl+hj+fp|!z_eH`Mj$ zy)&?eXaLq(3_+pF11G;8tT~H2yH#~8w_nkI{d$s%*7fs1*&(L<2iMvbQo*TDz^Oew z$OzhpUvzimFvknI_llJ%#xUG{zvt9reGlQrb#=3yv&p08Pn)5{@;la77 zC(CPVQ|)Yp898WOGH-7a)f8a{NLJ}^aO%Rd4?Npfws5L{bB454*|D{6>vAI1jWJ>tL3?RzKsCeV&kBfP^xu3sOD6Y=*@xmvK*0i;= zLkU!yG`bhL$>ar}G@qbe%#7KqJ$UnEsl_{)Kk#mEG*o{J`MDOMDXd1!Px0Sfj;(X& z_wNXW5E3Di4~8zz&T`h)?31tD!W2IwZ8I8BnIaH~FJHcxpC4^4JBvHEkdu?g%d{31 zajg%havr+t>+AEHwKOTYic3hK8~0mw#_vHsrKLq|O%`;vwL#X`*9~gkfRKLmk}8w5 zP=iCI;C>%J5`Z}3LdeL-Ah6J>A5%py5@c>_mwdu0IMuUqVCNJaw6wI()YW??@>CM^ z6!e2Wd|(w6Bs)7h6ZgHA;y14IqvFvMG)aV2ax@iaWcGm3+Sc5SzXb;ePnp(bWkDE7 z3e=Vjr>3TunVBJadU}G79tCMWc=Gmb+0faN&xIpEhkwwdT??i|HZn4DPsCm)WK~yJ zmj#?JDk>@{EF93gv7>skjV`OBc_`6@B*5wQ1a33F^I+s=4kqqf@(5J*DC0Rl1>y2Uz%*|yZfyxlU z@U>sOxb>(N{o>`zFxl%gq}kg$j5g!A)+-Wyp9x$7it~N)}?5k}}?|0iC}8s@qcNF8=LbpwA0$2=MZ< z8yXt2i-;tU!TLa_2+huBDJm`9b#7W*G{*7+eZCJ_78Mos3xn>A-T(gW8$Kj9E{<*P zcq7x79P(>CS1E`LrWnnn22)U2D_hEtMmz(JMfvsX{Kbn1Ch5FFi~+k>N{A&H69C8eeJ7d{Zt zveuUd=jG)M_3i^wW#)5sA5@TJ+T_%f&L1afX=#X@x3_n}wlx+H|B2iAksTZkcRRoK z^77ISH#IcmK4}5zyZo;H0Uuwt-z{uO=~j@JuSYW?*9Mc=z#aqMxiVPSGMrKq6P zRQflLj(`^90&IiG0eWF+WtCk}z$r0LMn#1qlNqg*tJpq1eivX{XlUrC3#7fheTCg5 z$FH@ub`;9=n@mGP10$bU@qGdZEbSkzUGtpY6P^=j)&j-0b#jSxHt8z zdg+k+kc^goz2Mi23z|1uTU&I}viCFR_dU6uGyTtcB>Y2?C0`z+qpifcl3f(YpMH9t zuUQ!B{pI#RG|1*ni)kztIrkct4C%NVu?LdchV!J+&=XyA-R;h~Ia;tWx^u{*Xngl} zP#CjKXG9~JX2IDCjVDUlFqk?k$GT)}>`dEG#I<8hMwYY_=h{XR8!s;j)K{u>p&iF> zRE8qQ_r}NIyJEF|(pID`{INe-z;to0h20!}ye0jcO($!_GuNnL~ z>_aVu&nXL45`Ui6Ld{85>CY>l+U}k51@r661N=J@VJj=oadZk(z+jr%+QDOE4>2d1 zx0RF}f+JNHLNapEyKM!T8Gio$Ojy_jJZ{GGGDi%=PLHoImX_|)c+fA@wid(}%T63; z+iYeFOK@{<3%aaO*VQ)%I4;C{l%mhi6;)HdG2Wc^s))a{uAErkirmc5j}mAR$Kg*3 z{6w~v5vslrvX_faKu_ekrHQ*Rrivjt+vLvnKa3w|BWxGOo|~Ak<*Ux&;^Cx6mH+q=uF4#n_!H$5R!nT>Q!W;P#FV{Fs;_ll=G^(sZShCf~XGLmEoTc&kYc z0mYrHU4@Nt3|5`T{@s>q$-68pOchn}-p#_gIp7al~g86x=%gaNh<#!9F z6;XGpyf>43_B~JbHM*`Yp5hZ8YNak?frCVmBu?t;wC;PCIR5@`D{A+z@2n5N7DA5g z-Ym%B`$v!Z#3%h=7In{qjZEs|&dc-_R3cEJp*+vjhPy`6U8h9rAdb-a+!!<;S5epc zu+2fauUb!`R^VeFNT=-ubE;wuF(HjlU_=BtJA288vNF-hH8%oq#YCO-et(=@Xmo2} zMTJDk9saRJncuVMz@XdnGF4-Rn8c(XmRIL5lEwDbB517!-6Two*HaZL%x^hD4Q+Mc zvKPPE;ZjU9W$Ep1TtAQJY?zJ$Q+>yiG1nl+(j?zw8`XL#FppU^q`l4E?Ob}q+B7{q zTJd_=1@0+fF<+&h%wNz8Vy?>8K~LvJH<}^cOJmm5>BdE%uz*L5@AUjRH7nbT3YT1( zh{!Y5q+CG|skL5DditmEol?e%Z*+d4q4&XYN){HO&@ko6zGC&`ZR!0Q$I1u%WnD9+ z%_p!QpBH70<}s-H7oix8b%~J}1vVa?uu0T}?YoP%bBy8>V|hizuqn})!aF?rOo4H6 zA}C+8_em)>&k;({?H&3`r=^>FUsdZ3ps4cJYbeOIsGp6i2bcBtAehV>c4oHR+ZGnC zZRo;Luwm@Q-e5yIy26aez;d2Gr6STRU??HkU+op?8{`Rj#@=(hTbV5R{_#k9V;C5w z(tg^_z=-~#NzOpitPI2BWBQrWi#w*KHzAr`yBt45Pd5Z=(_PXyXJU*8Ed%wR&4Cv zLxc2p6_QOf{8DX)8#$s2PjfgZY4kgKZDa!ia&nBe}kE@P1;xn|)A=i%A;l%UITa-7eB1@r6cqhyduF6kK1*@>3@v%GpJLO{p^ zn#>w1x_5Qu&l(YxUOuvfcz?QB!nWLKN+cE+TtdUS9&3boi-XVV-|F3V5B4x>GVY0!afcCcuo@#XafX&ACZfv zC!g>`71}~|2?JWx{5XKNyD z_YjED15>>ZC+B}dw95;tt38(w-yd|6UgHy`mFXopT6WaAD13^ij1WUr#26C7#)?Ux z--Mfrie8S*%wUZ*iB;B$DZo1HRg(qd(F0Q`@pP+!HcRI7c7U8B`B2Dn;|($}A@YP`bTs^AD#c^SFZac7RVq zTv(#BH2PFT^rOq+YbH0hstSuhvbS#qR<~ZPF(AbR1^ob()9%q*lWhGn0AY}A!T0x< zMIY}fg@#`+a&Y{ve~km#+}?&UlRa~EaDA&_XUDaNYA&AWXjr+v;uLq=Bt`z|rxz5{ z-&=|V7MHlHnp%ReD8&vhHN_L9B?Su$5xr8n+=+U`Kv&o8e^h6F=Jn`;<-`}|fwBUl zh=@N2qrL>~8$34Av#eZP%0;WSntvrVQdT}rP4S99UMO-yWz@NDL=Ek}>ntu)jMlp$ zTrGMmic>3Hf^1jRf&jzL(jJOhS+N9mn3T^YFnIn;LiIPd0u{i@#-^*w)XiK?>ZBw| z@NgO-L}$v$$%#Dq=^;(WCL%%=PBR(KSF3b)rzFatbtCUl60E~WS2x(t4+6Zow!S|6 z>+9>n(o!7AKT`w9k!-xT4}cH_bfVkl>d%@MfQf`348y;T zMFf>$5E2sF9pNi>tV5jegNvBS@G)_agCF6aBjRckcYks?r86=xkdc!ID93Tg zo0&m@QczG+BgVqQGJo|72N*j9vm4-42X5!2&ucXbK5`y4{%_x z024xYhO7edpaAlMmzUSv+}sbCY&k_myS?!Z!ByJY+Awko3L~etKZa5s_5+UHpZ?gR z54be_{@8eZKqB@B;*o{|$EMzGi@d13oRf=-%X<2&ZfviFq-1Po2&qcs+R6&7sj2B1 z@SpmJhS=5B)o(+%czD=?$b?@H-6LmW;;;AJ*;fL@KO!RH88B;#N=n#`YTmG5`TGH( z=DsCypMxV7y!fT_c^VoS~dCpDW3tvN8@r8h-Zk^K)y! zB!RWa$u2FOo}7{r1DGCv>GbYGZ9n)dyxDhw11WI_5*rgUzFzbD_nV1wGud}LGkhu0 zj?INBDJi%8bZmhvXkb7sFPj&6n);l*dbix>uP)08n-XXObJqWn@@f4&0Wom`GBYz% z1M=ygf)cGXP`!=izv$wzk5WS-kzaZi>shA8iR9#tF*&Z!>9XegC-`U@PC!CtEV>nf8ElO8Y)6eJXTsd8X z*JvgR6yc$1~rGcNRM){_Jaf{`Kn@1Tr){+>Ukzrfl2lfhI`e5K<@> zBnm1U^}`fFjFf=_=(=_5mgCGcnAIOA6B8347-_D~|HjShnVBu^zK3f?cRDya0{<_f zq=Yx676FGd^YfGFmz#EjhzePB+@6}A7SR|<$Ut>;U{zOFKj6E%$mO1!n=>gZTEjb7 zxkpV+ZNjAVv#K`H%s5j;(TC_hzyQU)^*_#eLVJy`$% diff --git a/Doxygen/build/Rect_8h_source.html b/Doxygen/build/Rect_8h_source.html deleted file mode 100644 index 22ec769..0000000 --- a/Doxygen/build/Rect_8h_source.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Rect.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Rect.h
-
-
-Go to the documentation of this file.
1 #pragma once
-
2 #include "../Eule/Vector2.h"
-
3 
-
4 namespace Eule
-
5 {
-
8  struct Rect
-
9  {
- - -
12  };
-
13 }
-
-
Trivial data structure representing a rectangle.
Definition: Rect.h:8
-
Vector2d size
Definition: Rect.h:11
- -
Vector2d pos
Definition: Rect.h:10
-
Definition: Collider.h:4
- - - - diff --git a/Doxygen/build/TrapazoidalPrismCollider_8cpp.html b/Doxygen/build/TrapazoidalPrismCollider_8cpp.html deleted file mode 100644 index db68681..0000000 --- a/Doxygen/build/TrapazoidalPrismCollider_8cpp.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/TrapazoidalPrismCollider.cpp File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
TrapazoidalPrismCollider.cpp File Reference
-
-
-
-Include dependency graph for TrapazoidalPrismCollider.cpp:
-
-
- - - - - - - - - - - - - -
-
-

Go to the source code of this file.

-
- - - - diff --git a/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.map b/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.map deleted file mode 100644 index 0ead1cb..0000000 --- a/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.md5 b/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.md5 deleted file mode 100644 index 8ece64c..0000000 --- a/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -35039ee1e3ae4141890e6d8a89d1e486 \ No newline at end of file diff --git a/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.png b/Doxygen/build/TrapazoidalPrismCollider_8cpp__incl.png deleted file mode 100644 index 19f4f0c354e48a91c9c7427b34177f92c46e3db8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31904 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⪼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 - - - - - - -Leonetienne/Eule: Eule/TrapazoidalPrismCollider.cpp Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
TrapazoidalPrismCollider.cpp
-
-
-Go to the documentation of this file.
-
2 
-
3 using namespace Eule;
-
4 
- -
6 {
-
7  return;
-
8 }
-
9 
- -
11 {
-
12  vertices = other.vertices;
-
13  faceNormals = other.faceNormals;
-
14 
-
15  return;
-
16 }
-
17 
- -
19 {
-
20  vertices = std::move(other.vertices);
-
21  faceNormals = std::move(other.faceNormals);
-
22 
-
23  return;
-
24 }
-
25 
-
26 const Vector3d& TrapazoidalPrismCollider::GetVertex(std::size_t index) const
-
27 {
-
28  return vertices[index];
-
29 }
-
30 
-
31 void TrapazoidalPrismCollider::SetVertex(std::size_t index, const Vector3d value)
-
32 {
-
33  vertices[index] = value;
-
34  GenerateNormalsFromVertices();
-
35  return;
-
36 }
-
37 
-
38 void TrapazoidalPrismCollider::GenerateNormalsFromVertices()
-
39 {
-
40  faceNormals[(std::size_t)FACE_NORMALS::LEFT] =
-
41  (vertices[BACK|LEFT|BOTTOM] - vertices[FRONT|LEFT|BOTTOM])
-
42  .CrossProduct(vertices[FRONT|LEFT|TOP] - vertices[FRONT|LEFT|BOTTOM]);
-
43 
-
44  faceNormals[(std::size_t)FACE_NORMALS::RIGHT] =
-
45  (vertices[FRONT|RIGHT|TOP] - vertices[FRONT|RIGHT|BOTTOM])
-
46  .CrossProduct(vertices[BACK|RIGHT|BOTTOM] - vertices[FRONT|RIGHT|BOTTOM]);
-
47 
-
48  faceNormals[(std::size_t)FACE_NORMALS::FRONT] =
-
49  (vertices[FRONT|LEFT|TOP] - vertices[FRONT|LEFT|BOTTOM])
-
50  .CrossProduct(vertices[FRONT|RIGHT|BOTTOM] - vertices[FRONT|LEFT|BOTTOM]);
-
51 
-
52  faceNormals[(std::size_t)FACE_NORMALS::BACK] =
-
53  (vertices[BACK|RIGHT|BOTTOM] - vertices[BACK|LEFT|BOTTOM])
-
54  .CrossProduct(vertices[BACK|LEFT|TOP] - vertices[BACK|LEFT|BOTTOM]);
-
55 
-
56  faceNormals[(std::size_t)FACE_NORMALS::TOP] =
-
57  (vertices[BACK|LEFT|TOP] - vertices[FRONT|LEFT|TOP])
-
58  .CrossProduct(vertices[FRONT|RIGHT|TOP] - vertices[FRONT|LEFT|TOP]);
-
59 
-
60  faceNormals[(std::size_t)FACE_NORMALS::BOTTOM] =
-
61  (vertices[FRONT|RIGHT|BOTTOM] - vertices[FRONT|LEFT|BOTTOM])
-
62  .CrossProduct(vertices[BACK|LEFT|BOTTOM] - vertices[FRONT|LEFT|BOTTOM]);
-
63 
-
64  return;
-
65 }
-
66 
-
67 double TrapazoidalPrismCollider::FaceDot(FACE_NORMALS face, const Vector3d& point) const
-
68 {
-
69  // This vertex is the one being used twice to calculate the normals
-
70  std::size_t coreVertexIdx;
-
71  switch (face)
-
72  {
-
73  case FACE_NORMALS::LEFT:
-
74  coreVertexIdx = FRONT|LEFT|BOTTOM;
-
75  break;
-
76 
-
77  case FACE_NORMALS::RIGHT:
-
78  coreVertexIdx = FRONT|RIGHT|BOTTOM;
-
79  break;
-
80 
-
81  case FACE_NORMALS::FRONT:
-
82  coreVertexIdx = FRONT|LEFT|BOTTOM;
-
83  break;
-
84 
-
85  case FACE_NORMALS::BACK:
-
86  coreVertexIdx = BACK|LEFT|BOTTOM;
-
87  break;
-
88 
-
89  case FACE_NORMALS::TOP:
-
90  coreVertexIdx = FRONT|LEFT|TOP;
-
91  break;
-
92 
-
93  case FACE_NORMALS::BOTTOM:
-
94  coreVertexIdx = FRONT|LEFT|BOTTOM;
-
95  break;
-
96  }
-
97 
-
98  if ((std::size_t)face < 6)
-
99  return faceNormals[(std::size_t)face].DotProduct(point - vertices[coreVertexIdx]);
-
100  return 1;
-
101 }
-
102 
- -
104 {
-
105  for (std::size_t i = 0; i < 6; i++)
-
106  if (FaceDot((FACE_NORMALS)i, point) < 0)
-
107  return false;
-
108 
-
109  return true;
-
110 }
-
-
static constexpr std::size_t RIGHT
- -
static constexpr std::size_t BACK
- -
static constexpr std::size_t FRONT
-
static constexpr std::size_t BOTTOM
-
void operator=(const TrapazoidalPrismCollider &other)
-
static constexpr std::size_t LEFT
-
void SetVertex(std::size_t index, const Vector3d value)
Will set the value of a specific vertex.
-
bool Contains(const Vector3d &point) const override
Tests, if this Collider contains a point.
-
A collider describing a trapazoidal prism.
- -
const Vector3d & GetVertex(std::size_t index) const
Will return a specific vertex.
-
static constexpr std::size_t TOP
-
Definition: Collider.h:4
- - - - diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h.html b/Doxygen/build/TrapazoidalPrismCollider_8h.html deleted file mode 100644 index 439dd56..0000000 --- a/Doxygen/build/TrapazoidalPrismCollider_8h.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/TrapazoidalPrismCollider.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
TrapazoidalPrismCollider.h File Reference
-
-
-
#include "Vector3.h"
-#include "Collider.h"
-#include <array>
-
-Include dependency graph for TrapazoidalPrismCollider.h:
-
-
- - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  Eule::TrapazoidalPrismCollider
 A collider describing a trapazoidal prism. More...
 
- - - -

-Namespaces

 Eule
 
-
- - - - diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.map b/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.map deleted file mode 100644 index 2f2c4ce..0000000 --- a/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.md5 b/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.md5 deleted file mode 100644 index 7b5ae4c..0000000 --- a/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -454e47315f9721a30455a4d878793baf \ No newline at end of file diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.png b/Doxygen/build/TrapazoidalPrismCollider_8h__dep__incl.png deleted file mode 100644 index b277e776c594fcb8f310f2935972b9edd9ad5515..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5002 zcmc(jg{Y6beD94k`f{%B`~N6C@mclk^@LL zLn_kUaW~(6Zv6#!c$nGGnK}FHz2djtwIiOWDUuS=5BVxMlqK5?SIQ*HfFAs*63J}a2jQ20f}Nv+|lpr8;CNRu4M+ClNw=~k~< zK!9DQ-vDb`;VpQ>M%~2(#^2)i?lC4UWxVqt1r_odOzzH*<~jsJ+hr~PlYkqEkQ2Ka zn8I$eNJ}?nAK>C>5a#9OU0T0-D^@Q{-a0e$K`oc7nTya&X?EMQFH@R5$MUIwB=n=N z&+#`VWpjxN#-FhG`}f0#58su%_VFfM3PguJxxoPjPg0ge?8cn-SG2VDrH1Ofb}dG} z>aDM@yVzY+@-uDRyWQ7m78w5H$B(tOHCav8>*;^7#CM22Ze3)M$R}S=mgb6FcE&JB zAf$XbjNo*1t7~g#7xzw2PenvTRFezx@|G4C>jF+UTjE$0sRnL*khHhAx3yh$Y&dRf zYI?C;g9{}jCf;FZm-ag;udGaNGRAz6oSdB0fA(zGa8e^nRYm>w2;}TJ+MzWdqx&9{0=|8EM4k@9!_+vC;b37ZF?O`gb5Iip0>+&^c{m z!$CL=+;(`dKG_-1?l@lhv$Yjgo0yroIX@qK*C_bM4;dPo%q_VV3X?VWKi*ome3Gl8Xkixa_HB@1T7t%{`2Q5xr2>I^Tc&{DGU^! z-aO2~!^1NKvyYcqIygAM`Hbp3DK>c|B_)M~zJL4HGcw}7`@4sd?a_~5Hy0O9F0O*F zUj_O2t`igc>?|tV*yPJFZEbB4l9D3HVaWcfsw%MRuc$`EYC@+OK0dz5s6rfEmJL^7 zfr}y|ER4V?q-E}PXlPP$ax6kpoR!sVWhl?Z*Hb6dV9!j{X;ub>LizgE1qC(z9n3vk z8;^hgKKw3-Rcw2E*q8bJ)zKU@noTYJ%jeIbpB}No>wS;;`S}Mhn6=$L>2^$^K{fp5 zO>KbAz@%(kF8e+k zn+3MPkB^TJ-m8E_-lnDfAnBvcL=MIgii(T3Znv7&d2TancPzPpMbpyISlZg^YiT9M z$G?g|Ku(7n(;Xd3#Kdn}!pKZj#JzURe0+SAl)}r(b}=aet1BzO?0CuogBnG<^Py5B(Y+*E2HW`BOC2-MyLQ%GOpyP%t4O!EU_N9P^&9t*tFh#L<6iR@TgyuX8fmX+>Y)!Iy&m>>)YF}SHJw@?&0A$Ri&Y>-ZwQh)!CU>S_+4L{Mo$*0R+oM3Z#fMxmD>2<*(=-90rmRW*rwZugkgk11m1aF3Lf6oNodY&W;HJp>8g+}sS( zXwXU!T?5v9S{eh z!|9>H_WbIVnv_Hx-#Jz5vH3+K=c6fA ztV!Po$@UlqTSv#rl9KK1?UIs`CWkpGU>qwO8yjouIY!`e=U3pize$}6DliTF#VB44 z*Le-&zLEETB279fMZm_Y+Q;Zwg7Wh21~Vn|qDDqXldGyCudQQax*Sx(A|j?NnkW<* z^w#q{MlJVnZ*S|^*RFgEu_VEEqd!5m{A+E^)eFtx4YGK4c6M*i^_?YeQc}|A&!5M~ z$B#^c<=LJxhx0R8`YtJmd?Yy*J3rc9C@U=mH-RO?DJegZMny+YPfeMam{b`!0O#uI zjf4C+IXw-Ld-3AM9DAm(+~?$(86zsBo2%=?82aP0wPLeeY(TUj8pU`V+K@~vx7-T+mWxb$FATBz5CP58YL4MqP_9|Y%x2EG}0&@x6`VHZX1zc z*GXag3Nroj90XL7uU%yN3-GCsbJ7_FoE=gfoQqsH3DsVfkt2g5B5Lv(j-8lzHA+!x z^_kM-%6t2kIFPuwi`H5@L0I!e340Ye7j^a%LGvyIBx7wIQzJh0f|KsO^G&BsBXj+< ztZ$FO;8VU|HuIA`PA19o?T)w=7RCJB+-}eF8~j5u{ak4?GeH>4y9@sp0gd+s%0A{Q z?%dJuc!G;8vU73y;Nfw(Tadc3aWPrht+`5u7lhUk{`)s}Xy`&LPg6&6_J-mym?N>b z_ruznrCc`ospx&Clhe&y1_sIe{Yaau?^Z`MNl4CCJ^bXdm)oM*^LN5huP&FDGyiow z;W6TV8X=H?7ir{GUg5sSf5pHcbChnPEE@TDVw#N*q+FBNf3yk5r2!pz|DQ+ zUw~_hHa2nKiUPBs(0;b7m|1urS_f|6ps##gk@ej_-c(3c6;T6+w4Hi18{>teS=e^rl zKB*?olfcjeJt<(;*4A;RyN!w0oE}lmIOLb6&hKKiiGbH3E7@(};VkeOKpb!bt+5;^jAVaKeY#v6FV^AvN2VCaBvV66_vf}e3a9%9$j56Cbjgk+5jedO8nvWhX3&r4O@I(PL6*2Q!+{JA*#3SBIK0`6Uoo2YCKc7*!MeWKf|BM%A%~B8qstPI#4f-KH8tWA z5)!<;ymp=t1WdwB{pQO&sQ!nW*uFozjb}UE7|bIoBxn)_2M5(NrTi|=yr$O1N=*Cv z`we(TvDkp7V7vziGKgsqc#jg5$IQZ#k)Cc~U;sg?$vpOsj=VfPJe-{KPNH1eU*Ed7 zVX-Jx)q?zdP8ODhp}c3F)%5KhOb8YuT@8&A`^gFc%ii*e3WT_;Qe6+Y|7UxJ%E>{TKRV6RwFZa0%4hf9+Q*4;~{@CO}E$hUc~W(0t;9&QUm{0Tt-IpxRWS7Bm;OW5eXYjTkE+JQk^C;PVB9QpbA5cK%*%aDq3W))}{fbu*XsmgLi z`1zTi6#u8SycHD{?d|VDv!L6`^gqe_@ByJ=2)O4=Tu5lRvr}0|her18 z+qdLA$#1Zw6&2KtZ4R9!m#3SJEzQk^hP4(pHbl^@lPJr>sN&Mn=8YIeX#^M5;p^_D zmF4AIbabYS_I7qxxF;uv6U<~`VL^s?Q004E8W9oU8YTLOZTIYWce2tkQ`~I@I7?MU zWlP^xoS_yp4CsCR3JB(={@R-Dy*o`22J0CAW{By4Ygy5 zY>?~~6~g}9OuKV-Q&r9Y74O}lm_~t#FxXH~NC;56@8$U+pk3xT z4jvx0Gd`MbiHB}(-$8oOpU%(EFLft_Oa;XD;tn-6H7+i$o15F1qMb@vaWVN}>(ta4 z=n^~whlhvF=qU-(_yN5U5fMFj@Zh6qf^k0@si&t0`XK}Yv9Ym%6C|UCZcPz&Mkgi? zrwCYnbd38i4o~R^KfE3yXV()a<4wPm+(;QoRSy)1G2pD}&n~Lo8}JF6y|J}*wdeM{ zR)MybrY0dQ7{Hsim)HKm!3`1;&|Y+o|9UexJ$(-zK|(?zC@2UP0yfaPi2!H?v^OIo z0|*kx&+hIw9T&p|I^5K&%l$b(JU!h21ABNJM$?H13ko`krUPC*-u)BHa9ZRM2pk3^ zLD+txbzwWdprECtrBhVcsTv zcj$rw3G*&0OG`_T{Rs)I>+&ipDmpsJ(b1%Del{~wE=dSmNu909#xd?-kUBa;I*^pwfkF7UtijL z&kB?>-RgfgE7GdN{En=Yh+R-n^X!`WFHuoZR(AHr015J8Il-7$bf~N^1bRQ2FN@(g z8r=Dp-i*)_4UKFY8YU_e-EbofDjJ%C3A}I|CR#;g^k(tcj0{s3?7z;N{ylgyd(d%m ze0MyOzYX8XCaxOi)SUn`M|yyM9%Fu=ANMR3=7HZE*u?%Mx>fq$vsk}Q91)%r1) R@zrS?q>NNkD3mh}{tt$ln|J^K diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h__incl.map b/Doxygen/build/TrapazoidalPrismCollider_8h__incl.map deleted file mode 100644 index bdf82b8..0000000 --- a/Doxygen/build/TrapazoidalPrismCollider_8h__incl.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h__incl.md5 b/Doxygen/build/TrapazoidalPrismCollider_8h__incl.md5 deleted file mode 100644 index 140b189..0000000 --- a/Doxygen/build/TrapazoidalPrismCollider_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -0a77a0b440c18a81fcd925c01f564edc \ No newline at end of file diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h__incl.png b/Doxygen/build/TrapazoidalPrismCollider_8h__incl.png deleted file mode 100644 index ccb508bc54be5de018fbad768cf5b4ade2764a60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26179 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

-3w;M!P^7qRA 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 DtM))u diff --git a/Doxygen/build/TrapazoidalPrismCollider_8h_source.html b/Doxygen/build/TrapazoidalPrismCollider_8h_source.html deleted file mode 100644 index 79e9dc3..0000000 --- a/Doxygen/build/TrapazoidalPrismCollider_8h_source.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/TrapazoidalPrismCollider.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
TrapazoidalPrismCollider.h
-
-
-Go to the documentation of this file.
1 #pragma once
-
2 #include "Vector3.h"
-
3 #include "Collider.h"
-
4 #include <array>
-
5 
-
6 namespace Eule
-
7 {
- -
14  {
-
15  public:
- -
17  TrapazoidalPrismCollider(const TrapazoidalPrismCollider& other) = default;
-
18  TrapazoidalPrismCollider(TrapazoidalPrismCollider&& other) noexcept = default;
-
19  void operator=(const TrapazoidalPrismCollider& other);
-
20  void operator=(TrapazoidalPrismCollider&& other) noexcept;
-
21 
-
23  const Vector3d& GetVertex(std::size_t index) const;
-
24 
-
26  void SetVertex(std::size_t index, const Vector3d value);
-
27 
-
29  bool Contains(const Vector3d& point) const override;
-
30 
-
31  /* Vertex identifiers */
-
32  static constexpr std::size_t BACK = 0;
-
33  static constexpr std::size_t FRONT = 4;
-
34  static constexpr std::size_t LEFT = 0;
-
35  static constexpr std::size_t RIGHT = 2;
-
36  static constexpr std::size_t BOTTOM = 0;
-
37  static constexpr std::size_t TOP = 1;
-
38 
-
39  private:
-
40  enum class FACE_NORMALS : std::size_t;
-
41 
-
43  void GenerateNormalsFromVertices();
-
44 
-
46  double FaceDot(FACE_NORMALS face, const Vector3d& point) const;
-
47 
-
48  std::array<Vector3d, 8> vertices;
-
49 
-
50 
-
51  // Face normals
-
52  enum class FACE_NORMALS : std::size_t
-
53  {
-
54  LEFT = 0,
-
55  RIGHT = 1,
-
56  FRONT = 2,
-
57  BACK = 3,
-
58  TOP = 4,
-
59  BOTTOM = 5
-
60  };
-
61  std::array<Vector3d, 6> faceNormals;
-
62  };
-
63 }
-
-
static constexpr std::size_t RIGHT
-
Abstract class of a collider domain.
Definition: Collider.h:10
-
static constexpr std::size_t BACK
- -
static constexpr std::size_t FRONT
-
static constexpr std::size_t BOTTOM
-
void operator=(const TrapazoidalPrismCollider &other)
-
static constexpr std::size_t LEFT
-
void SetVertex(std::size_t index, const Vector3d value)
Will set the value of a specific vertex.
-
bool Contains(const Vector3d &point) const override
Tests, if this Collider contains a point.
- -
A collider describing a trapazoidal prism.
- -
const Vector3d & GetVertex(std::size_t index) const
Will return a specific vertex.
- -
static constexpr std::size_t TOP
-
Definition: Collider.h:4
- - - - diff --git a/Doxygen/build/Vector2_8cpp.html b/Doxygen/build/Vector2_8cpp.html deleted file mode 100644 index d395002..0000000 --- a/Doxygen/build/Vector2_8cpp.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Vector2.cpp File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Vector2.cpp File Reference
-
-
-
#include "Vector2.h"
-#include "Math.h"
-#include <iostream>
-#include <immintrin.h>
-#include "Vector3.h"
-#include "Vector4.h"
-
-Include dependency graph for Vector2.cpp:
-
-
- - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

-
- - - - diff --git a/Doxygen/build/Vector2_8cpp__incl.map b/Doxygen/build/Vector2_8cpp__incl.map deleted file mode 100644 index 4c2de4a..0000000 --- a/Doxygen/build/Vector2_8cpp__incl.map +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/Doxygen/build/Vector2_8cpp__incl.md5 b/Doxygen/build/Vector2_8cpp__incl.md5 deleted file mode 100644 index 67ab26c..0000000 --- a/Doxygen/build/Vector2_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -deda7dfc8579dff3057c04f6c146a99e \ No newline at end of file diff --git a/Doxygen/build/Vector2_8cpp__incl.png b/Doxygen/build/Vector2_8cpp__incl.png deleted file mode 100644 index eecfd00865be7b737143da753de8d53e9003f7b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34534 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 diff --git a/Doxygen/build/Vector2_8cpp_source.html b/Doxygen/build/Vector2_8cpp_source.html deleted file mode 100644 index de69a53..0000000 --- a/Doxygen/build/Vector2_8cpp_source.html +++ /dev/null @@ -1,802 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Vector2.cpp Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Vector2.cpp
-
-
-Go to the documentation of this file.
1 #include "Vector2.h"
-
2 #include "Math.h"
-
3 #include <iostream>
-
4 
-
5 //#define _EULE_NO_INTRINSICS_
-
6 #ifndef _EULE_NO_INTRINSICS_
-
7 #include <immintrin.h>
-
8 #endif
-
9 
-
10 using namespace Eule;
-
11 
-
12 /*
-
13  NOTE:
-
14  Here you will find bad, unoptimized methods for T=int.
-
15  This is because the compiler needs a method for each type in each instantiation of the template!
-
16  I can't generalize the methods when heavily optimizing for doubles.
-
17  These functions will get called VERY rarely, if ever at all, for T=int, so it's ok.
-
18  The T=int instantiation only exists to store a value-pair of two ints. Not so-much as a vector in terms of vector calculus.
-
19 */
-
20 
-
21 // Good, optimized chad version for doubles
-
22 double Vector2<double>::DotProduct(const Vector2<double>& other) const
-
23 {
-
24  #ifndef _EULE_NO_INTRINSICS_
-
25 
-
26  // Move vector components into registers
-
27  __m256 __vector_self = _mm256_set_ps(0,0,0,0,0,0, (float)y, (float)x);
-
28  __m256 __vector_other = _mm256_set_ps(0,0,0,0,0,0, (float)other.y, (float)other.x);
-
29 
-
30  // Define bitmask, and execute computation
-
31  const int mask = 0x31; // -> 0011 1000 -> use positions 0011 (last 2) of the vectors supplied, and place them in 1000 (first only) element of __dot
-
32  __m256 __dot = _mm256_dp_ps(__vector_self, __vector_other, mask);
-
33 
-
34  // Retrieve result, and return it
-
35  float result[8];
-
36  _mm256_storeu_ps(result, __dot);
-
37 
-
38  return result[0];
-
39 
-
40  #else
-
41  return (x * other.x) +
-
42  (y * other.y);
-
43  #endif
-
44 }
-
45 
-
46 // Slow, lame version for intcels
-
47 double Vector2<int>::DotProduct(const Vector2<int>& other) const
-
48 {
-
49  int iDot = (x * other.x) +
-
50  (y * other.y);
-
51 
-
52  return (double)iDot;
-
53 }
-
54 
-
55 
-
56 
-
57 // Good, optimized chad version for doubles
-
58 double Vector2<double>::CrossProduct(const Vector2<double>& other) const
-
59 {
-
60  return (x * other.y) -
-
61  (y * other.x);
-
62 }
-
63 
-
64 // Slow, lame version for intcels
-
65 double Vector2<int>::CrossProduct(const Vector2<int>& other) const
-
66 {
-
67  int iCross = (x * other.y) -
-
68  (y * other.x);
-
69 
-
70  return (double)iCross;
-
71 }
-
72 
-
73 
-
74 
-
75 // Good, optimized chad version for doubles
-
76 double Vector2<double>::SqrMagnitude() const
-
77 {
-
78  // x.DotProduct(x) == x.SqrMagnitude()
-
79  return DotProduct(*this);
-
80 }
-
81 
-
82 // Slow, lame version for intcels
- -
84 {
-
85  int iSqrMag = x*x + y*y;
-
86  return (double)iSqrMag;
-
87 }
-
88 
-
89 template<typename T>
-
90 double Vector2<T>::Magnitude() const
-
91 {
-
92  return sqrt(SqrMagnitude());
-
93 }
-
94 
-
95 
-
96 
- -
98 {
-
99  #ifndef _EULE_NO_INTRINSICS_
-
100 
-
101  // Load vectors into registers
-
102  __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
-
103  __m256d __vector_scalar = _mm256_set_pd(0, 0, scalar.y, scalar.x);
-
104 
-
105  // Multiply them
-
106  __m256d __product = _mm256_mul_pd(__vector_self, __vector_scalar);
-
107 
-
108  // Retrieve result
-
109  double result[4];
-
110  _mm256_storeu_pd(result, __product);
-
111 
-
112  // Return value
-
113  return Vector2<double>(
-
114  result[0],
-
115  result[1]
-
116  );
-
117 
-
118  #else
-
119 
-
120  return Vector2<double>(
-
121  x * scalar.x,
-
122  y * scalar.y
-
123  );
-
124  #endif
-
125 }
-
126 
- -
128 {
-
129  return Vector2<int>(
-
130  x * scalar.x,
-
131  y * scalar.y
-
132  );
-
133 }
-
134 
-
135 
-
136 template<typename T>
- -
138 {
-
139  Vector2<double> norm(x, y);
-
140  norm.NormalizeSelf();
-
141 
-
142  return norm;
-
143 }
-
144 
-
145 // Method to normalize a Vector2d
- -
147 {
-
148  double length = Magnitude();
-
149 
-
150  // Prevent division by 0
-
151  if (length == 0)
-
152  {
-
153  x = 0;
-
154  y = 0;
-
155  }
-
156  else
-
157  {
-
158  #ifndef _EULE_NO_INTRINSICS_
-
159 
-
160  // Load vector and length into registers
-
161  __m256d __vec = _mm256_set_pd(0, 0, y, x);
-
162  __m256d __len = _mm256_set1_pd(length);
-
163 
-
164  // Divide
-
165  __m256d __prod = _mm256_div_pd(__vec, __len);
-
166 
-
167  // Extract and set values
-
168  double prod[4];
-
169  _mm256_storeu_pd(prod, __prod);
-
170 
-
171  x = prod[0];
-
172  y = prod[1];
-
173 
-
174  #else
-
175 
-
176  x /= length;
-
177  y /= length;
-
178 
-
179  #endif
-
180  }
-
181 
-
182  return;
-
183 }
-
184 
-
185 // You can't normalize an int vector, ffs!
-
186 // But we need an implementation for T=int
- -
188 {
-
189  std::cerr << "Stop normalizing int-vectors!!" << std::endl;
-
190  x = 0;
-
191  y = 0;
-
192 
-
193  return;
-
194 }
-
195 
-
196 
-
197 // Good, optimized chad version for doubles
-
198 void Vector2<double>::LerpSelf(const Vector2<double>& other, double t)
-
199 {
-
200  const double it = 1.0 - t; // Inverse t
-
201 
-
202  #ifndef _EULE_NO_INTRINSICS_
-
203 
-
204  // Move vector components and factors into registers
-
205  __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
-
206  __m256d __vector_other = _mm256_set_pd(0, 0, other.y, other.x);
-
207  __m256d __t = _mm256_set1_pd(t);
-
208  __m256d __it = _mm256_set1_pd(it); // Inverse t
-
209 
-
210  // Procedure:
-
211  // (__vector_self * __it) + (__vector_other * __t)
-
212 
-
213  __m256d __sum = _mm256_set1_pd(0); // this will hold the sum of the two multiplications
-
214 
-
215  __sum = _mm256_fmadd_pd(__vector_self, __it, __sum);
-
216  __sum = _mm256_fmadd_pd(__vector_other, __t, __sum);
-
217 
-
218  // Retrieve result, and apply it
-
219  double sum[4];
-
220  _mm256_storeu_pd(sum, __sum);
-
221 
-
222  x = sum[0];
-
223  y = sum[1];
-
224 
-
225  #else
-
226 
-
227  x = it * x + t * other.x;
-
228  y = it * y + t * other.y;
-
229 
-
230  #endif
-
231 
-
232  return;
-
233 }
-
234 
-
235 
-
236 
-
237 // Slow, lame version for intcels
-
238 void Vector2<int>::LerpSelf(const Vector2<int>& other, double t)
-
239 {
-
240  const double it = 1.0 - t; // Inverse t
-
241 
-
242  x = (int)(it * (double)x + t * (double)other.x);
-
243  y = (int)(it * (double)y + t * (double)other.y);
-
244 
-
245  return;
-
246 }
-
247 
-
248 Vector2<double> Vector2<double>::Lerp(const Vector2<double>& other, double t) const
-
249 {
-
250  Vector2d copy(*this);
-
251  copy.LerpSelf(other, t);
-
252 
-
253  return copy;
-
254 }
-
255 
-
256 Vector2<double> Vector2<int>::Lerp(const Vector2<int>& other, double t) const
-
257 {
-
258  Vector2d copy(this->ToDouble());
-
259  copy.LerpSelf(other.ToDouble(), t);
-
260 
-
261  return copy;
-
262 }
-
263 
-
264 
-
265 
-
266 template<typename T>
-
267 T& Vector2<T>::operator[](std::size_t idx)
-
268 {
-
269  switch (idx)
-
270  {
-
271  case 0:
-
272  return x;
-
273  case 1:
-
274  return y;
-
275  default:
-
276  throw std::out_of_range("Array descriptor on Vector2<T> out of range!");
-
277  }
-
278 }
-
279 
-
280 template<typename T>
-
281 const T& Vector2<T>::operator[](std::size_t idx) const
-
282 {
-
283  switch (idx)
-
284  {
-
285  case 0:
-
286  return x;
-
287  case 1:
-
288  return y;
-
289  default:
-
290  throw std::out_of_range("Array descriptor on Vector2<T> out of range!");
-
291  }
-
292 }
-
293 
-
294 template<typename T>
-
295 bool Vector2<T>::Similar(const Vector2<T>& other, double epsilon) const
-
296 {
-
297  return
-
298  (::Math::Similar(x, other.x, epsilon)) &&
-
299  (::Math::Similar(y, other.y, epsilon))
-
300  ;
-
301 }
-
302 
-
303 template<typename T>
- -
305 {
-
306  return Vector2<int>((int)x, (int)y);
-
307 }
-
308 
-
309 template<typename T>
- -
311 {
-
312  return Vector2<double>((double)x, (double)y);
-
313 }
-
314 
-
315 
- -
317 {
-
318  #ifndef _EULE_NO_INTRINSICS_
-
319 
-
320  // Move vector components and factors into registers
-
321  __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
-
322  __m256d __vector_other = _mm256_set_pd(0, 0, other.y, other.x);
-
323 
-
324  // Add the components
-
325  __m256d __sum = _mm256_add_pd(__vector_self, __vector_other);
-
326 
-
327  // Retrieve and return these values
-
328  double sum[4];
-
329  _mm256_storeu_pd(sum, __sum);
-
330 
-
331  return Vector2<double>(
-
332  sum[0],
-
333  sum[1]
-
334  );
-
335 
-
336  #else
-
337 
-
338  return Vector2<double>(
-
339  x + other.x,
-
340  y + other.y
-
341  );
-
342  #endif
-
343 }
-
344 
-
345 template<typename T>
- -
347 {
-
348  return Vector2<T>(
-
349  x + other.x,
-
350  y + other.y
-
351  );
-
352 }
-
353 
-
354 
-
355 
- -
357 {
-
358  #ifndef _EULE_NO_INTRINSICS_
-
359 
-
360  // Move vector components and factors into registers
-
361  __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
-
362  __m256d __vector_other = _mm256_set_pd(0, 0, other.y, other.x);
-
363 
-
364  // Add the components
-
365  __m256d __sum = _mm256_add_pd(__vector_self, __vector_other);
-
366 
-
367  // Retrieve and apply these values
-
368  double sum[4];
-
369  _mm256_storeu_pd(sum, __sum);
-
370 
-
371  x = sum[0];
-
372  y = sum[1];
-
373 
-
374  #else
-
375 
-
376  x += other.x;
-
377  y += other.y;
-
378 
-
379  #endif
-
380 
-
381  return;
-
382 }
-
383 
-
384 template<typename T>
- -
386 {
-
387  x += other.x;
-
388  y += other.y;
-
389  return;
-
390 }
-
391 
-
392 
-
393 
- -
395 {
-
396  #ifndef _EULE_NO_INTRINSICS_
-
397 
-
398  // Move vector components and factors into registers
-
399  __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
-
400  __m256d __vector_other = _mm256_set_pd(0, 0, other.y, other.x);
-
401 
-
402  // Subtract the components
-
403  __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other);
-
404 
-
405  // Retrieve and return these values
-
406  double diff[4];
-
407  _mm256_storeu_pd(diff, __diff);
-
408 
-
409  return Vector2<double>(
-
410  diff[0],
-
411  diff[1]
-
412  );
-
413 
-
414  #else
-
415 
-
416  return Vector2<double>(
-
417  x - other.x,
-
418  y - other.y
-
419  );
-
420  #endif
-
421 }
-
422 
-
423 template<typename T>
- -
425 {
-
426  return Vector2<T>(
-
427  x - other.x,
-
428  y - other.y
-
429  );
-
430 }
-
431 
-
432 
-
433 
- -
435 {
-
436  #ifndef _EULE_NO_INTRINSICS_
-
437 
-
438  // Move vector components and factors into registers
-
439  __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
-
440  __m256d __vector_other = _mm256_set_pd(0, 0, other.y, other.x);
-
441 
-
442  // Subtract the components
-
443  __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other);
-
444 
-
445  // Retrieve and apply these values
-
446  double diff[4];
-
447  _mm256_storeu_pd(diff, __diff);
-
448 
-
449  x = diff[0];
-
450  y = diff[1];
-
451 
-
452  #else
-
453 
-
454  x -= other.x;
-
455  y -= other.y;
-
456 
-
457  #endif
-
458 
-
459  return;
-
460 }
-
461 
-
462 template<typename T>
- -
464 {
-
465  x -= other.x;
-
466  y -= other.y;
-
467  return;
-
468 }
-
469 
-
470 
-
471 
-
472 Vector2<double> Vector2<double>::operator*(const double scale) const
-
473 {
-
474  #ifndef _EULE_NO_INTRINSICS_
-
475 
-
476  // Move vector components and factors into registers
-
477  __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
-
478  __m256d __scalar = _mm256_set1_pd(scale);
-
479 
-
480  // Multiply the components
-
481  __m256d __prod = _mm256_mul_pd(__vector_self, __scalar);
-
482 
-
483  // Retrieve and return these values
-
484  double prod[4];
-
485  _mm256_storeu_pd(prod, __prod);
-
486 
-
487  return Vector2<double>(
-
488  prod[0],
-
489  prod[1]
-
490  );
-
491 
-
492  #else
-
493 
-
494  return Vector2<double>(
-
495  x * scale,
-
496  y * scale
-
497  );
-
498 
-
499  #endif
-
500 }
-
501 
-
502 template<typename T>
-
503 Vector2<T> Vector2<T>::operator*(const T scale) const
-
504 {
-
505  return Vector2<T>(
-
506  x * scale,
-
507  y * scale
-
508  );
-
509 }
-
510 
-
511 
-
512 
-
513 void Vector2<double>::operator*=(const double scale)
-
514 {
-
515  #ifndef _EULE_NO_INTRINSICS_
-
516 
-
517  // Move vector components and factors into registers
-
518  __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
-
519  __m256d __scalar = _mm256_set1_pd(scale);
-
520 
-
521  // Multiply the components
-
522  __m256d __prod = _mm256_mul_pd(__vector_self, __scalar);
-
523 
-
524  // Retrieve and apply these values
-
525  double prod[4];
-
526  _mm256_storeu_pd(prod, __prod);
-
527 
-
528  x = prod[0];
-
529  y = prod[1];
-
530 
-
531  #else
-
532 
-
533  x *= scale;
-
534  y *= scale;
-
535 
-
536  #endif
-
537 
-
538  return;
-
539 }
-
540 
-
541 template<typename T>
-
542 void Vector2<T>::operator*=(const T scale)
-
543 {
-
544  x *= scale;
-
545  y *= scale;
-
546  return;
-
547 }
-
548 
-
549 
-
550 
-
551 Vector2<double> Vector2<double>::operator/(const double scale) const
-
552 {
-
553  #ifndef _EULE_NO_INTRINSICS_
-
554 
-
555  // Move vector components and factors into registers
-
556  __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
-
557  __m256d __scalar = _mm256_set1_pd(scale);
-
558 
-
559  // Divide the components
-
560  __m256d __prod = _mm256_div_pd(__vector_self, __scalar);
-
561 
-
562  // Retrieve and return these values
-
563  double prod[4];
-
564  _mm256_storeu_pd(prod, __prod);
-
565 
-
566  return Vector2<double>(
-
567  prod[0],
-
568  prod[1]
-
569  );
-
570 
-
571  #else
-
572 
-
573  return Vector2<double>(
-
574  x / scale,
-
575  y / scale
-
576  );
-
577 
-
578  #endif
-
579 }
-
580 
-
581 template<typename T>
-
582 Vector2<T> Vector2<T>::operator/(const T scale) const
-
583 {
-
584  return Vector2<T>(
-
585  x / scale,
-
586  y / scale
-
587  );
-
588 }
-
589 
-
590 
-
591 
-
592 void Vector2<double>::operator/=(const double scale)
-
593 {
-
594  #ifndef _EULE_NO_INTRINSICS_
-
595 
-
596  // Move vector components and factors into registers
-
597  __m256d __vector_self = _mm256_set_pd(0, 0, y, x);
-
598  __m256d __scalar = _mm256_set1_pd(scale);
-
599 
-
600  // Divide the components
-
601  __m256d __prod = _mm256_div_pd(__vector_self, __scalar);
-
602 
-
603  // Retrieve and apply these values
-
604  double prod[4];
-
605  _mm256_storeu_pd(prod, __prod);
-
606 
-
607  x = prod[0];
-
608  y = prod[1];
-
609 
-
610  #else
-
611 
-
612  x /= scale;
-
613  y /= scale;
-
614 
-
615  #endif
-
616  return;
-
617 }
-
618 
-
619 template<typename T>
-
620 void Vector2<T>::operator/=(const T scale)
-
621 {
-
622  x /= scale;
-
623  y /= scale;
-
624  return;
-
625 }
-
626 
-
627 
-
628 
-
629 template<typename T>
- -
631 {
-
632  x = other.x;
-
633  y = other.y;
-
634 
-
635  return;
-
636 }
-
637 
-
638 template<typename T>
-
639 void Vector2<T>::operator=(Vector2<T>&& other) noexcept
-
640 {
-
641  x = std::move(other.x);
-
642  y = std::move(other.y);
-
643 
-
644  return;
-
645 }
-
646 
-
647 template<typename T>
-
648 bool Vector2<T>::operator==(const Vector2<T>& other) const
-
649 {
-
650  return
-
651  (x == other.x) &&
-
652  (y == other.y);
-
653 }
-
654 
-
655 template<typename T>
-
656 bool Vector2<T>::operator!=(const Vector2<T>& other) const
-
657 {
-
658  return !operator==(other);
-
659 }
-
660 
-
661 template<typename T>
- -
663 {
-
664  return Vector2<T>(
-
665  -x,
-
666  -y
-
667  );
-
668 }
-
669 
-
670 // Don't want these includes above the other stuff
-
671 #include "Vector3.h"
-
672 #include "Vector4.h"
-
673 template<typename T>
- -
675 {
-
676  return Vector3<T>(x, y, 0);
-
677 }
-
678 
-
679 template<typename T>
- -
681 {
-
682  return Vector4<T>(x, y, 0, 0);
-
683 }
-
684 
-
685 template class Vector2<int>;
-
686 template class Vector2<double>;
-
687 
-
688 // Some handy predefines
-
689 template <typename T>
-
690 const Vector2<double> Vector2<T>::up(0, 1);
-
691 template <typename T>
-
692 const Vector2<double> Vector2<T>::down(0, -1);
-
693 template <typename T>
- -
695 template <typename T>
-
696 const Vector2<double> Vector2<T>::left(-1, 0);
-
697 template <typename T>
-
698 const Vector2<double> Vector2<T>::one(1, 1);
-
699 template <typename T>
- -
-
double DotProduct(const Vector2< T > &other) const
Will compute the dot product to another Vector2.
Definition: Vector2.cpp:47
-
Representation of a 3d vector.
Definition: Matrix4x4.h:9
- -
Vector2< double > ToDouble() const
Will convert this vector to a Vector2d.
Definition: Vector2.cpp:310
- -
void NormalizeSelf()
Will normalize this vector.
Definition: Vector2.cpp:187
- - - - - -
Definition: Collider.h:4
-
void LerpSelf(const Vector2< T > &other, double t)
Will lerp itself towards other by t.
Definition: Vector2.cpp:238
-
Representation of a 4d vector.
Definition: Vector2.h:8
- - - - diff --git a/Doxygen/build/Vector2_8h.html b/Doxygen/build/Vector2_8h.html deleted file mode 100644 index a8d925d..0000000 --- a/Doxygen/build/Vector2_8h.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Vector2.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Vector2.h File Reference
-
-
-
#include <cstdlib>
-#include <sstream>
-
-Include dependency graph for Vector2.h:
-
-
- - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - -

-Classes

class  Eule::Vector3< T >
 Representation of a 3d vector. More...
 
class  Eule::Vector4< T >
 Representation of a 4d vector. More...
 
class  Eule::Vector2< T >
 Representation of a 2d vector. More...
 
- - - -

-Namespaces

 Eule
 
- - - - - -

-Typedefs

typedef Vector2< int > Eule::Vector2i
 
typedef Vector2< double > Eule::Vector2d
 
-
- - - - diff --git a/Doxygen/build/Vector2_8h__dep__incl.map b/Doxygen/build/Vector2_8h__dep__incl.map deleted file mode 100644 index b7acf5c..0000000 --- a/Doxygen/build/Vector2_8h__dep__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Doxygen/build/Vector2_8h__dep__incl.md5 b/Doxygen/build/Vector2_8h__dep__incl.md5 deleted file mode 100644 index 00b2a8b..0000000 --- a/Doxygen/build/Vector2_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -51ead09597156a62231b4f13138c94a8 \ No newline at end of file diff --git a/Doxygen/build/Vector2_8h__dep__incl.png b/Doxygen/build/Vector2_8h__dep__incl.png deleted file mode 100644 index e20c662f54c2d1e410ec27681313f7c740de56b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7941 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 baR2xUr|;wvhddQb6{0M!Ay*~yI{5zp_?%CM diff --git a/Doxygen/build/Vector2_8h__incl.map b/Doxygen/build/Vector2_8h__incl.map deleted file mode 100644 index fc3c55e..0000000 --- a/Doxygen/build/Vector2_8h__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Doxygen/build/Vector2_8h__incl.md5 b/Doxygen/build/Vector2_8h__incl.md5 deleted file mode 100644 index 43ba1de..0000000 --- a/Doxygen/build/Vector2_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -16a3daa708990df0b2edd4c5f8400b48 \ No newline at end of file diff --git a/Doxygen/build/Vector2_8h__incl.png b/Doxygen/build/Vector2_8h__incl.png deleted file mode 100644 index a9c69d4e1196b4e94c88fa5fa56febf52c5d87ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4591 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 el)mr5B>W4D*W)tv^}rt{fVRd1Xo - - - - - - -Leonetienne/Eule: Eule/Vector2.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Vector2.h
-
-
-Go to the documentation of this file.
1 #pragma once
-
2 #include <cstdlib>
-
3 #include <sstream>
-
4 
-
5 namespace Eule
-
6 {
-
7  template <typename T> class Vector3;
-
8  template <typename T> class Vector4;
-
9 
-
13  template <typename T>
-
14  class Vector2
-
15  {
-
16  public:
-
17  Vector2() : x{ 0 }, y{ 0 } {}
-
18  Vector2(T _x, T _y) : x{ _x }, y{ _y } {}
-
19  Vector2(const Vector2<T>& other) = default;
-
20  Vector2(Vector2<T>&& other) noexcept = default;
-
21 
-
23  double DotProduct(const Vector2<T>& other) const;
-
24 
-
26  double CrossProduct(const Vector2<T>& other) const;
-
27 
-
29  double SqrMagnitude() const;
-
30 
-
32  double Magnitude() const;
-
33 
-
35  [[nodiscard]] Vector2<double> Normalize() const;
-
36 
-
38  void NormalizeSelf();
-
39 
-
41  Vector2<T> VectorScale(const Vector2<T>& scalar) const;
-
42 
-
44  void LerpSelf(const Vector2<T>& other, double t);
-
45 
-
47  [[nodiscard]] Vector2<double> Lerp(const Vector2<T>& other, double t) const;
-
48 
-
50  [[nodiscard]] bool Similar(const Vector2<T>& other, double epsilon = 0.00001) const;
-
51 
-
53  [[nodiscard]] Vector2<int> ToInt() const;
-
54 
-
56  [[nodiscard]] Vector2<double> ToDouble() const;
-
57 
-
58  T& operator[](std::size_t idx);
-
59  const T& operator[](std::size_t idx) const;
-
60 
-
61  Vector2<T> operator+(const Vector2<T>& other) const;
-
62  void operator+=(const Vector2<T>& other);
-
63  Vector2<T> operator-(const Vector2<T>& other) const;
-
64  void operator-=(const Vector2<T>& other);
-
65  Vector2<T> operator*(const T scale) const;
-
66  void operator*=(const T scale);
-
67  Vector2<T> operator/(const T scale) const;
-
68  void operator/=(const T scale);
-
69  Vector2<T> operator-() const;
-
70 
-
71  operator Vector3<T>() const;
-
72  operator Vector4<T>() const;
-
73 
-
74  void operator=(const Vector2<T>& other);
-
75  void operator=(Vector2<T>&& other) noexcept;
-
76 
-
77  bool operator==(const Vector2<T>& other) const;
-
78  bool operator!=(const Vector2<T>& other) const;
-
79 
-
80  friend std::ostream& operator<< (std::ostream& os, const Vector2<T>& v)
-
81  {
-
82  return os << "[x: " << v.x << " y: " << v.y << "]";
-
83  }
-
84  friend std::wostream& operator<< (std::wostream& os, const Vector2<T>& v)
-
85  {
-
86  return os << L"[x: " << v.x << L" y: " << v.y << L"]";
-
87  }
-
88 
-
89  T x;
-
90  T y;
-
91 
-
92  // Some handy predefines
-
93  static const Vector2<double> up;
-
94  static const Vector2<double> down;
-
95  static const Vector2<double> right;
-
96  static const Vector2<double> left;
-
97  static const Vector2<double> one;
-
98  static const Vector2<double> zero;
-
99  };
-
100 
- - -
103 }
-
-
Vector2< double > Normalize() const
Will return the normalization of this vector.
Definition: Vector2.cpp:137
-
bool operator!=(const Vector2< T > &other) const
Definition: Vector2.cpp:656
- -
Vector2< T > operator+(const Vector2< T > &other) const
Definition: Vector2.cpp:346
-
void operator+=(const Vector2< T > &other)
Definition: Vector2.cpp:385
-
double DotProduct(const Vector2< T > &other) const
Will compute the dot product to another Vector2.
Definition: Vector2.cpp:47
-
static const Vector2< double > left
Definition: Vector2.h:96
-
static const Vector2< double > up
Definition: Vector2.h:93
-
double Magnitude() const
Will compute the magnitude.
Definition: Vector2.cpp:90
-
void operator*=(const T scale)
Definition: Vector2.cpp:542
-
Vector2< T > operator/(const T scale) const
Definition: Vector2.cpp:582
-
static const Vector2< double > zero
Definition: Vector2.h:98
-
Vector2< T > VectorScale(const Vector2< T > &scalar) const
Will scale self.n by scalar.n.
Definition: Vector2.cpp:127
-
Vector2< int > ToInt() const
Will convert this vector to a Vector2i.
Definition: Vector2.cpp:304
-
Vector2(T _x, T _y)
Definition: Vector2.h:18
-
T & operator[](std::size_t idx)
Definition: Vector2.cpp:267
-
static const Vector2< double > one
Definition: Vector2.h:97
-
Vector2< T > operator*(const T scale) const
Definition: Vector2.cpp:503
-
void operator/=(const T scale)
Definition: Vector2.cpp:620
-
double SqrMagnitude() const
Will compute the square magnitude.
Definition: Vector2.cpp:83
-
Vector2< double > Lerp(const Vector2< T > &other, double t) const
Will return a lerp result between this and another vector.
Definition: Vector2.cpp:256
-
double CrossProduct(const Vector2< T > &other) const
Will compute the cross product to another Vector2.
Definition: Vector2.cpp:65
-
Vector2< double > ToDouble() const
Will convert this vector to a Vector2d.
Definition: Vector2.cpp:310
-
void NormalizeSelf()
Will normalize this vector.
Definition: Vector2.cpp:187
-
Vector2< T > operator-() const
Definition: Vector2.cpp:662
-
friend std::ostream & operator<<(std::ostream &os, const Vector2< T > &v)
Definition: Vector2.h:80
-
Representation of a 2d vector.
Definition: Vector2.h:14
-
Vector2< double > Vector2d
Definition: Vector2.h:102
-
void operator=(const Vector2< T > &other)
Conversion method.
Definition: Vector2.cpp:630
- - -
bool Similar(const Vector2< T > &other, double epsilon=0.00001) const
Will compare if two vectors are similar to a certain epsilon value.
Definition: Vector2.cpp:295
-
static const Vector2< double > right
Definition: Vector2.h:95
-
void operator-=(const Vector2< T > &other)
Definition: Vector2.cpp:463
-
static const Vector2< double > down
Definition: Vector2.h:94
-
bool operator==(const Vector2< T > &other) const
Definition: Vector2.cpp:648
-
Definition: Collider.h:4
-
void LerpSelf(const Vector2< T > &other, double t)
Will lerp itself towards other by t.
Definition: Vector2.cpp:238
-
Representation of a 4d vector.
Definition: Vector2.h:8
-
Vector2< int > Vector2i
Definition: Vector2.h:101
- - - - diff --git a/Doxygen/build/Vector3_8cpp.html b/Doxygen/build/Vector3_8cpp.html deleted file mode 100644 index b2c929a..0000000 --- a/Doxygen/build/Vector3_8cpp.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Vector3.cpp File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Vector3.cpp File Reference
-
-
-
#include "Vector3.h"
-#include "Math.h"
-#include <iostream>
-#include <immintrin.h>
-#include "Vector2.h"
-#include "Vector4.h"
-
-Include dependency graph for Vector3.cpp:
-
-
- - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

-
- - - - diff --git a/Doxygen/build/Vector3_8cpp__incl.map b/Doxygen/build/Vector3_8cpp__incl.map deleted file mode 100644 index fee91e1..0000000 --- a/Doxygen/build/Vector3_8cpp__incl.map +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/Doxygen/build/Vector3_8cpp__incl.md5 b/Doxygen/build/Vector3_8cpp__incl.md5 deleted file mode 100644 index 2cda40e..0000000 --- a/Doxygen/build/Vector3_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -789550095991799f4f64ce3613fef44a \ No newline at end of file diff --git a/Doxygen/build/Vector3_8cpp__incl.png b/Doxygen/build/Vector3_8cpp__incl.png deleted file mode 100644 index 49346608b5ff58b41ef1b15e2e5be1ae23c9dc9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34578 zcmZ_01z43`xA(gQq)Pz-kr0sXlq>6Gr0l$P%9lI~WzySww7_@2G@xxRhQ zde)`)L#%t=bIviwe~j^)2Fb~ap&-6Rgg_uD65_%N5D3%&1oGk~JQVoKPhFnB;4fHx zDKTNl)AN7n&AC4y5F&_#uz-?N@_vfrXAHHuZgK>fhL^%Sc@*j2&@p4)2v7!lH;3qp zVTw#O6q>7+T~%YlOhHk-#)QGjcFb~&DtZ4xu;0xyREN#lE7DhqyVbn3SvP^hZu4t& z{Z{f;JsP6F9z3`&czNZf`z^fq&owl9I>UdijtTz1t`PJb!MEYPv$C=#az7z8VuNcU z4UM^Cjao$TKaiyth|rL0+PspI@W8+XPWyr~uG7XJX=(KPbl|C>D3Bq`?5n@OL$@Ec zAE928L+*LKxRL*J!zMWJ-G8tD`|3B(-c+gQ&1rU-D;TEmtN$68oD`VCM}wYld`e2n zPz~8sZZkc-v8T9r8Z|*8^rGTo$Aj6fIvxfFIWaMEA|kJcoco7|=H}*w`T38#{Fasn zLrLt4ii+>ynV6a9%Je$G`{NgI4;vVq4ltCbj${tIRh;FZCh$OH=+QBgMMe7u2AB^g#>T!r++Ls&@}dWIB4ChN%v2a%AFuSL@w(p{8a%%; zv$8NTFqmC0Eeu_ilwvY6GE!5ut$S)}YnST2u7Ndxfof}O)9dg@>4_kur=sF?*q<&p z=s`wCrqgb^Uh9cC+ZxHu&K5v7w6tvgx+ePagqQvY^Vz=hz=KlQd?rO;s z8ylOD$K`ybBLFPhP;c*at#w*Ui-(Pkji%;&R|xidcut#T$anrakB8e>YSp)Rcu$Xa z)-Lhdtsc!T7rS|R6y)UOx80kYo7>yleLu(@TYV36g=$)zPV_hWV^>yI!o$PCjPQBf z>o(&I- z3kUl9XDf^bzyvBQE3;e9o^K4qZ*Cf|mo6?Yg7r2%FQsqT-Zm8z6C)%{J6dX;2w>SR z`bZ7`RVE2f5Y->2h+JvL`y3}92J@7nv5i;s3?>nH{cJN(8T8A6Em@nI=7F_a{R|cj_%UEGVAWp-b>`*eWo41Vd;25fDyXQ4W-Gjhf6J)v zTVDRv)YR0@&Q3_E1K2T{Y;qv7E`wm^*yH`#NOW{`NlD4=?Jd~vsJKkRii#NC=@{g) z7IQTyJE9S}K1ADKgR7~j9UL6!>FI@qg*iAl6g^uMeCU7e($n=mjN4MMzpSjR9v>gY zA_y){PH;JF*9Q}squNo(91dpfw}w;jxg4r$YIb*b>C~&l6%>H`QWO#K;|+NsfR5;Q zdVCCgLpRurp9zr!Mh_PnOSKwnfVqW-qr$<#kvi+QdA}r=O}+-^2&Rl)yQ$9e=@AK= zu1LKa(N7Qz&~myg!*yxYl;uqb3IYNpEp2Rkd>VtEptv}^EuyFkH$IF&YHI3KsgBqe z(eQU1zlw?m|LqPUc#%(+un-7z0`Nv7N$m7=bh5v0>Ouvm$!v4ptiPyiHU+GfS$~d>Ce!t zB#oJMZeRc9RdG>yd6d-`R0y)g^G5d|0n7SH7EK_7G%HI~Qo>9^%3MOSfQ>!C-u~}} zI}VHhIw@s7F}VpHZSmZw4Tisj1%aRFK*rcOrX-SBN=zhltogLH)qseg&!v@*pJ$1W)*Y6>B(k)q?Kz$`<^wBnF(YVeJL89Rq;GK66NXprQ0!A%>*ov8X#FG= zuU%MT<$Pr&c4a@{vi2u`dv6M3ZPg(!pYo!fISh8GF3RRae|{wGAmq)A)%0@busrGO z50v@q4|na?*QI`bOGbvImKLHMA4BbIa0*LHC%0B0zpdfrKrmazj*T4(3KHq{9}nQQo~EM|g}lxuEbad%(O z!dMO;Fi=?9QN?hJ+qW=Kta zm#6~^gUqyy9<`x?VkFHZnZu_r&(zj|4H^FT&m?oZ*~H!5Hzr$a193A4iwA8xrTf@!Me}tXRjFYNZ*eUhJ!kd~rc;2(I1(L)< z9$JU_*P|L6`@-=j>g#+jFH5Sbf)f&&5)$UYqi}GT+1XjrO!oe@Z_3$3m(_rVz(W2F z1nFEN5-hEyWy*JOXH3*~}8i-n5BL3|0)6++(Vxk}U=TXjLV$jacJ03MlPsFd@By;1s?GixuZo`X>hV3I6W}GqN6MXVNU5n} zi|FW}gs?*0WO%)R1=i_>Bb0XZNu1*Lrcz5;S#Pyd{_^scj?RDIiMtH?Q?T&o$RCPp zE3aIZe-C0&?>qlBHZo#<#_rIvAQ6eFwP%566e?u1#(h7Iv#m|pw}IQapCmW7&x@P zA7g~Pm>Oz3R!fJ*Cb=Vpaj&*rP9E+Axm$dA5n1hbKZ=M%5+b7W{kyN%u&k}5B*$q^ zQj&&`V8-@E_C1d3mSq$?(&dron>Uvm2XpwlyFSiyOvoKlahlY$mVsdlbmUV@62zjB z(wOh)&=P6e^~0Q|KSH?=QfehcB(eGVvrbikK<)FeQSk5ASVC6>q0 z{?bE5g}T~<>#R-M?!CTVF;h7b;7fCSQN1d5cX7dok00Ucs&W5tWs%CB8m-{*c(3t} zZe(1+ae_?SIGaI$utKolyFYSN61Q_`b8|~&Wn17Y3*2HTNc(eo#9x(H+CxqrKSqt} zj~biCV#cDMou1LQhV3qTEl=7GMI7bZmHLiLkh!*$LL9F3 zEl(~xSZu6VzrackJDMAwsJ4&haVc6u+ZR?AgV{Q`kl%LCE948U=uWv7{bq8~Wq!uk z4yH9k__J5X2Cas}!|vY=0s^voUR5civA&(@Kly9J$!fh*7+9Epv>MJ2cP7pm4g5yrwOqzg@v-Vprs!& zp$uj!-5bVUL$Lf5&uf32l0zn_pdg{IFRwX2H9Mh`9qO} zmR8^s1?)iCi|ZG_rSN-Zw33jKy?MAElhqmP{}<;oINrb)if6H-BNbIth`yr}|6DqJ z&wRc6V|I3OAb#y=>63z7q*|r%Zh^9*p&{wZc{tJSki%6Q=Zgy`EUcFx{sW)%xhSfF zsTb|#G3;|fZ$*SIj*I&ozCUVeD=RY_)TfW?!1;X!`*5z7?{MMnsL~|KZ#uDrE;wm! zN3Ubu*-BxUOh(3+T6Oj5hFo4&wts0!4>&RbA72L5F8HjmVFjA{b7i%975f6k{)jDQpD|dFT1KR+Oj)<}kJV@c5lg!Zj_CtLB`)7f=4Sh>0 z?sh*_QzPs0#ZUYOB~UO*+?r@0zqZ=G#RZE3@u-vhlc-MJF&n4L+;n-nW)o(V&s0fs zk1hkX>MU6B*iW*@^J8Ee-30KDuJgwz(M!mc!8_+$+l0 zdTlpn)}K;CJsvnmf9qzI-9ZVU3ulZrH4TrN+87#ojbeQ=r#?yZd|j&ZDN7+AXdTP> zZBot(tQWWq9nTTdEsLsuP}&tZ2KfYZn81(!1OvZ+VB)S+`DY=T$-t$_h57fKV5d@0 z-5&0`e7U>a*_+}*XrzCV*VH`Pb)h1H;GuhAIp`3!zr)<{~Nb7hFG z8`sC|`ov>k5AI{{Tojn!n16Jui!O78L+1e7_kNOLhA6sE>DII?GxK{>6Gg+zKy~23 zdkqV6w{R&bgK|HyBX$cWxdW}h=LUkaZAeg19?iM{X*2=vz3rnLP1H0iu)3(9ySuV_ zD_7Ig+%9@GEiG^Ll~GTHUVMALMfm7e!j2S&bn?f3AXdA&2wKK0y}w@S6@k9 z1R#z7Ret55laMjCTyICu#`dBpwKzN{CQxjs|OPDy&*|7XJsuuKN2WUkbN@)B4Adw z^6*dl%cIsU8ZAzVY4@FH1&SSyAr&V*TiK&H?XH(o7;<|3wSQ;A`ezct*`^vCtSla* zpy?vjen;89?0bTx_lV(kkoQ2-=n{39>L>gQe4SRb6!LVh^#sJku-~{U2pRNt1U&vK zS|s4UZZhauJ3dCKsmb(Rh$jFNL{G0TBZDz4%#zvUr{%(KK_;{Gbc#OG?Y)7tw6?nX z%ZJQ>uD9yyyTQ6D7+!?H5#o3$sj#itJX@x%EpAY!=>m^R79x}y$t~Ct)6I9F3}be* zc!2(^kTQuz%cVFkkC)A%(KKg)A6@u=3uyRZ&T=naw_c^hjeQHEH_*(G60o-!`2U~4 zS2-W>pTMWkQkwDJI7A{?1ndP~H;SL^N2h*BAtpmi*bX|kIr%}$>)$N8k=HWC-2E1? zRfssD``W)cvd@$oG;EK=*uy1?wym7LevSC*;%HT$#qwuVpwr|FCnVs~82!abvvXC) z6$gQH+M(tMGIpml@5}>x!O1PR^6UfwgXQtYB)jacovu`8>-uJ)$*yN)W=0OI7W7*b zj~k}F&Y&qHqp-t6G64ZAgKlJOhupgFUtyWK8h?&CE=_+{DsY87z)&E2CA2B&^w))Y zS68QsW4$bkn8pe!(>>d~J2}x=YDOYplh&SgU-7!wJ0klK+ue159%A2$&gin*xp#kW zJv{6WJ{@E)@QsS|6aN$YET{ex`{d6Ep>1Hmh1EH;V z74F(uF77L9X<7L5=j+U|t|az)YSl-(y-6yXN%27ZH7M?uj=r7i&L9_TIvTxsZRNi- zU+7A{>EeWk4e{CU%E-!wg@mk37MJ{5J7~j~K0;%8OXH9~0}%x#6-Wo1Z&p@xXXmfF zy3*?E;$BW^XybRv(jme)GZh)>Fpe{g}1-;-Y$qGtTp`guvmyvLdYtQL5FYwLG5i2J@WSaTm5vQ$ub4Tn0Y z-tcYwCu?nGWubvVZOBpo=eD*Ld3iOkWAjR%>OCG7`uoYKuslxmE3>mp${Huxfr{;k zXqA*Itg0AaC^zU{@5}UCAW0Pn&~aVRF1yQ9rV|NBtUOk|Y5XJ_VweA;|w(Kvk5fx^)t0}{&0H|OV6@ZNb!KeI@U z&y4qLEK9)5G?J3Xr*PvwtO%9I#vWcCSUEV{wjaKt*Be9|>dTLci%TbW3~8}m{FjGk z2zb(i>cH(uW=cyiPy^q$lPDO*XC)0&keC>Pg%j#LcveRE(iHPq)>RP@LbFJ3NBEkt z>1(j8dTxb4c9pg?G(Had_MnwsR8g^5wG_&4nwpNkiso6cSksK_+tf9kto`j8i}!AU zFrmh)>O`o@%a@hoZmjADcD)S}X*fKBfO-EeNE8_zEeU?w*Y{UJfpPb1Rz~-iH`nEc zYu$}UOGo=-1Lj0nK@8=lW3g99NVsX8=)Qs(x~fwMCAA=v0;yfQ)0fwCR9cAi%WYle+>#WF#hjdJnHJ^_B(q#wOZ~)Rk1fB z__*1uz8T;D_>3KNj*ut~>S?Mb%qf|iMIKrRd{uW*Lk+qXVxd}wmYSY031 zIDk!3(-sqh+=7g(wxQvr1R4kxnp!>PUr<-_@}r|+Sy?|s*}GsN0i!Atv9#Qaqm7s> zN^E~L@Zm*xP54w@T>K+dol*D8yn(@)YH@==#%~5>GyDTP}bg|l%t)ikIxkddG z%=30qS=l;|Ybtt>R-uXvhtp_MSL%79e9lYw99jH<9VFjC4BSLuTUu{XM0o{FS$3xx zb(onCzRQ!2llO!-H#nW(Pgp>~2vA`5&&(|E&xq)=ze4Re4#Nxbe7Jz})5(`VQg{GVDkMNO^{Dp;Rkx|HGk$OrXl?xaUqxv&A zSd}Zotk1(?{-vR{{8fZt2AhQqDxxiPC9NjNc)YNH+p?S^=<41SLPze1EGg;liST4N z@IjVh`Wvrb{wzyBsykM8oNeLau@j%JPQAfI{6J1FLKGPq`e&-t@${SpYl--kLjv1@ zq17Qf{O!>kw2wfhT%P+~lS**~c8}XzUr>SIYt^u~=cB+xgn1ZIcDt!?{GGSn-hKpX z3hob_xs{b6U#CSCUT0=9@9#{==*Nq8@cyTcu#JQ>hA{|aSGRP`>gsL2Vgxat0fVX5 zf?hm5Ju}NY$}H^=YT$ERHZ}%|($jl{^~u+$wbW-HUy;Nl7G3okQn|y7kB#Z-j%b3u z$?WFPm0rS4rjMY&_wOYjoCxm5FJIqOF7%qBP5dzHgx|npSHZ!}M=Ceq{?1QyFpv9q zZpP```vtW1;C%!L`3@U(zlX^+c1vkD^=j50I$V`{N=Ss39F_r17F4ZFmxTGoBO+`l z6T5G3ukgLf1{+(Z)xxdKu`a3Ksd)_Q^Tf#69EaNPCBv?3V59+YJPPgPwx#3A<9WQy z{5DMAEi!$K!rB@MD&uS-HyQ|L`-`?-iqeM-0wf%gVgf+x;;3U%-PwDl{FhA zHaXYnaum$W#Yot3rsg4eQB8TEoaL41>)S4qbXZ$cGjYL%kAT1e>r-CyC_`%n9=y)= z3S*Km5loIuG6frM_&n&vt(BD-G9^+`2E|4Ge#gh_IQ&jZ&oTHaCXNj#3o6=TvF>9` zOhZIORJ72mDb>=7hkGk~)xK|}9~d)5pT}sXOKM~%EFz+4VbRv+Gt!ug3(C&#zeh#4 zzx&7_RphP%)6Jhs1#2T|Lhd}0nv3*C)69y@As!nYMxLTdz=xEON4-(c2UG<%tv}EY zr-U3RYNwCo*=^~+ocy47a%uS@QMyZaG*c8MB5Z+|XyYY}0JyKHn6(H2DFtRhaWOM_ zuIO~i>I(+s0N>7ZIrNYb`b243O0#6XCtD4TT%tQN#O-b5i7C|sd2Jy0GUVpw`r6te zREuwOt79paTY~VP^>9?23Zwn*7|7**Ge~DLZjDdeoMb-iO&xjfCs5b`#X};d&D4j4 z3`;Isip69c>V7GBYy?1O#Ll0Zc?z>Oz;r zCMg&wiM$6aD4@l%vpy?@1FyPby2)un~K}}0rQvDMZ6*ZZF$*4anI@+J$$yZPS2N}^@jsaOdp9K@quWOe^ z)3j3|>RuGIVsLODwh~FZ9fI#kXlSITwa_X2{P+mCfA{sjE-F62dpr9xX--{Z?&KQv zbx?aU2TrlbZUh_!Cx`XkWjigp`3l$`4hQ zIAs-rtSlCB0ReUSuRx!KdV7cdS|zf-cuz&uDpJ5@-XMlY5lXQAl=NddDkaP(oiLt` z)@WXwSl;8FsHUo_w&t~lMi8jbPflJ=st^bL@lj<#^5}57^gQtB7|^#$X8M+Q|4(a%ynyOGfBq6^1i1oP@ZVQBUI{;c zE;c%Tnr_DV=;d_zV~N~rUvuXO1I6pQy|5AUKM2Kr01ze@dsBW3NGCp?U-vu*+Hcuk zBKjB@4=2}u+fm2~1FgX4wsIamX!&Z?T77l7ygFKHtgi=Co?lp4s?$mk(PKC3o%ep; zDJ~|4Mzc;%&*oM>+0(>#twGs;j^K z&Y!^N*#eR6*8l_Z1r zxw*;C$+?`CkPpwbfrb~5)6-i49p}$Up+UBg_wcrkj@DnkNXp9k69w`Ual2iQE-j^f zg+oI_0~RfsX>V^2CeU}<+yU)v=VENI6AO;mAJ;~d;Z&Z&!a{0tauaLowA5783rv(8 zjqKXS@}6np0PBT@zl)3700bEwJsyas2a7vCIx452pk8T=5)zBz`_f>3dY?O~k+Hf7 zw9|9$az~c0W&|Cb?Bd%Yu;^EPypDH!rLAPr310Wo#8H4|umX{~qpY^}>U?Jc@DZRE zUT-~u26^qzW2GEC;6fJN+bMrlbdJvP4=;73qmGOrQ0&-|K6qgy$C4~hA0K706 zO!#iW&d4aQsCajMLgFW=x9eZ~{BpcHOiV~HH8XR+IrS4KCE)xfuB;p@npxgLO!)jt z`E)k0A$N9DYPUrmw4=09cs(`&R%xCMs&I*;Nw;-8;Rk ztgHq45B7f5+U{(!x904l9U4YL1A2sXWoi_0^-)7Qs%Adw+AJ~070^zKiO?uJN; zqto>Ybidj*xAH#i?(MAs@iuR{3JL`!T0$O&Cv3pOgC_X>@rn>YKok@d zJ3C>cFZu&OXEruA&|!eX%aj8`-LFme*vajmpL+@GgUk8_GXxeG%Lh`@Z{NN}>VSm~ zvk><9J3g*I`!ru~2Zu%w8Wwg?tk%HDz{IsUHr94fjR>{UZFh6J!SeQCuGSjR9Y4rF zSy@{jEv5(dD1Lr1I5N`uZD$;q@$G&_ARM|kk+SmNor&C1wMtNtYG`O+dSK<|o}ZuB z)Yc~O6MP8+Q}+45JB1qS!IbFS0dISE7nDhC073%@C2G}@!T$c;;+Ov>2);bDIJmzw z*3}4rTSi73>+9RC!4{+2Wi!rnB~e3nxpzK3nQxqI zN=Zop;p6V=NL5i0kIR9E)c*ui5`s;yE$yj3Y9av;MT8(d;J_`@%#i$HPz%+HcQyz|;fqO1;IczN(4^M&RmjA&EiH8|-L6 z5UQ*H%*-T#5qKsV0f3k;;1l_0sjQ5_+1VLDhe$|B;K{)!edDA2&i@hYIp9=VT6meJ zDM(02@~AiI1%t?8ebg!p`x@-`03xMtZXVLJ23%gGVj#XC!m_n@c=+(iS`RkO=k&Zh z&_$V?sWh2*>cp)2E*4SS_9tHv%n_JYUZ>;b$jC?l3z00oFUlNSTj(XOfrO(EX}o&* z@zpqGrpIO*Z=Fl0i9HyLR>a{P*%~RyRzlc z#KA$v*4Ek9R?XNL3sk6hHOHnu+bwX4QB!MSU=#zA4Ctyv0)8C-+1V^pmZ}O{a@VQz zkP8X6j@>;sr1C3N2ue^`LGMp8@+rv3J4OB%(&L3CG_51?xq&6dyi-*sX5 z%R4)F#Kdy3vdp^7uiQEM-MXk58IAWw!5D3zPR2bocU5L)QgbzufvE)(%+vfUBSS{v zHM2)kLw)^lf9z#k94F}J<6eoq{jLWe5pQKh@MoSouMmm(n<<@(XIv2p0hWu(7r#qywAHcf7kcr~zis)>esy z<@o1M7|a4|`Rt60v1!wl^>1$Tb+15`y3#mtZyR}SwTX#|>D<1?11>8&+u63cRb#$R zR9-$xLJu%oEyqW#W}vd1DORXmUm-1JPLU)Q_72zS=9Gz^Ua{p;=6Lx8-+FOfRKy50 zaeMnEfudcUnE2DCmkf}hE_p+yi`~C~*ww+qGf(B_u-^a7DmyY@#(lIPH49oS=R4i+ z-=D#uMDMl;{WtbiT^&%OY1V3!5msb@*2pNYHj^Bu5|yf*2>wia3X{$$D4rznUL{`e&!3Z^?GLb~)uW?2 zgPw1bFSY_Z0y0aqT%Yc5j13G3wgK_&@n{hdI@sWRCM3|t?(WX2qciXl$pSD9YZ7a} zV39knjy!p7mJ@3(%g(m2adAQoxAOM)caM+%^!A4O`?IYZCouO!bLGE)z=PJWlQgKu zF1PjKvA=#pU-NKx#PQBO7mdMhY(_#>nkG0vAoP*iNNH^-W=fl3Ju&H*3$3^%?1p2{`la-a^E z!^6ed00^FnN^{V?UWYUh6XhuT)dhV0S3) z@S`6;IwnDC1t{-;`V=S+%SbzALT`_n9{&C&K}8iJn9o@I;n7w*2SMX>V_l$;fz85<++PPhQ@*)YP1g z0P0J31_;q-ulD5+pz`tfSQ`@DlE%%EhLpj;fC(Ebd3T;q%FX?OlQTEd$HJ=QV9%V@ zE+^3&N+YDIy4s$A@9}nXNEmPqViC7rOwaEVOyCYz)#S&j+-}0s_~xwVKbu*VEX-Mf z65Lu(Up!qGD{FOqz0C1R`SyMmXg`>ksG1llJKD=DDPu`XSA~YLf;ut{t-Z@TOg&#Z z8c+l@wYdL4V?4w}$SN6|`6z_`XLPj2-F3Rr@um3`CqQ<{K6J(RjZUikN}4mnPtijo zxV9sIp~g=X34Rw;#}rjmsxwx4HwF%xnuj*lJ8k7T-^fu^fhK-9p{J$(FZ;`V!Ejj8 zZNe&cYug~YG zO#RfI9ZW}XFw|XGXZPmOJgzLM0|5KVoxXaW3D$*^6D)z6bV>wah>+l$!JkHpYrF>s zTJ`m;xVXxoBQ!Jf*N_Rz&)XkO)z+3N;iLS>^yeQ#W+^3f{qgih08QwnrX;3mYNkCu zuS>oP3mrs8MFqtM6a+PfufGT!!^$LFTsHP+w%9FgXKIFGKjrogm$W$2@AUm(K|nYk zOf&`*0UpjV(VTo11x4Om(~XCk+FFU$VWG-QCC<|BtJgu%k#ab=i8s5-Y(c__EM`>^ z5!p#|Fl?+mkl%oJT7H3vcrcil5E+>;Q%M_+e|B(YSA|ZES5h znB>|%-|ATuW#oO_9*D013-I?Z9KD);qhTMZNS6T3Y%U)b(EcaavZ>OA>})kJ;R0Hn ze>9p#4Sk2MoK6heeUkxpVG z2qXAt-vs>KzM7^f#qgr`)A`N~NM5_nEfNH+n=ZVHjiI{1&{=wT?f?O_R-OA zmH{E`H|J3YW)q?F3o^H9r2(CC+S;37m_NwE4o%G8y~4R>;N)cIbfM0zh*mUZ0dh10b`uG)xI9Rrq#qdwasbv2fer=~dOd28<~x+9wH_;&e}C4h~$KlvT0JHZ%ga$Fq?wVE>;|ldbi} z%w<1JmEn%Wz0r4ZF%lL1aO%n3q9`hA+YW;QXjo=uODU<8G(N64n)-rtBD<~OFQBnx zk(wfzEh4r>z;#)Wl|>LHDufRF>Dq=-|6JA6^z{9~TnDJY=YATgt(@3Wu1r>tA6wsa znC<9T2W@O9E;A{lli`$zS}S)`OUpEliNU3%wq9{9U6U&Ll^=kj*{4A-x z&{#xHZ}}tz2nJyw7 zdb*MTJ*WRLa6l*;7@%Na(3DmZ&jszI;OyxPiz7P?2L0=wVqgHwuB)zD|2;41aqZ!!TPglhNMn5BC2Z4(`*BCUN zaG68zm|+nhWv~>;;oxAG#lbAs>(|@Vs&VCc#_LdH@;K+;zQ@y7<}1zq$>)~B-D{0_ zbH~t)ak4cG9#od@lLY0_KIy=K6dq1!Rn25&%_J-P)FE?iRdMme$dR$J@!z4OLKo?8 z{GnX{jt6bi#s-Sb&DqeuEXvA5jz?q*&38eP+0L#>cXwPi^8S+KbccI2mJy~bvq2bV zz%WbZR%p3vSM&*S{DDcsqjUk{YkFn}kT{jq_#c*ek9`2+?&IAKcF6npNaUY3ja*~^ zc$Al?@OBYz&)E;7IOhg zGq(%gkjWmfBmhxK=Bn+TIGf_b;3=fzeFR5netwik3t`k+^7zPw zcY7mKUb|)SC9}BrY`F~^EG-a!1YDbiMT2WeWqijY{vqz@OUi&)?U!_16Ey)Go3GGaD3t6o2o(R#H_$SQ&T71>Cm7+7yyOT2)5~54Ufwi895Q8(Y}zHucZc5a<*08 zjHKnVvp(1&oS!l&DsTMm_h#ijAKOKFi$X`4Khm2gcwdi%)CvfN47ZI!uRCnu_n5@*qrJEH}JmQTN`(Kms3E#+!_N4FgSN?K#$f^Qf{pE6qW)& za+1c*fh=`<;tU8M*|g!xUw8!G(>6Q11@o<~{-ub~tl&oh^z`+sj*LuojisHv0~@Bw zC#RSCcE5i8ve_IIR8*u*t^M@$TK8M@#;^T%5M6-p)Bv-(ylP$eE7I)dO!>qe`m&Uv zp|$1MARBt|)|An^$I;M8nIxMK5CX-;!k{nuy-l1ng_vmh#mHI^=~f!wQ%zkRfsX(P zhE7fiHV0NQDO&CiF71^jJ3{`wv}#OdfLCnuarL-3+TP}LyWZe?B6V>(PVe+8h5zjz zB2!UOAS4J1#|Dh?4{#LR|=O2>faKG5T?6pu?%A3Vo?%C>IZTdTx)JdVtqCx}v@Q^j?k=5!?3)oP3}@3kd8fwT+FtGxw`fa&WB{<2ys0+qiJty_`}EBjZ>F za0+abRb`_)2YxM2Cq;#K&%I96c)-U2>X_LWhoq}7DhixUTe!MpDkj~E4 zfCX!Gs1Lb_1|0R!_wQ)TOjI1|Okw6YT78r;I?hWIxp+v;ZU{uT5Wg|%uC5D^sC=;^ zOXh0@E$MQok0fcB-4TQbf$_(HqCY)ln#jRDnX}JL<5hQZGf`2&V!8qi)Uk2FbyG_P zPR*Vlhg5NKD(`7&%}m&HY88G00;^EvVQrW5alXEbJBU2`*VhLZuyvwRQzbPt$b*D; zayv5R(3?K<28Q;Isu`5wNC1NUX77*QQ>;`qb1;iA@Tv7TPg5@~Rs$ zRTmX8e#m|&kF}4ZR0f@UQdDdSpa;0G9{?4c$TkEY!U_)X7&ebeD=6%YXHO+3BM+zP z3>HpDivte#`1lwT-a7y}N~gu`G#KmhSF-CEiD3E4E(TMg%hMw`X#49u{Ouar6^JOo zN4I1;t&=ZdxGCsLp4QON=;EZ;-ioT)N=P68&$TRxx(!YXC%liMaJ_nT1-~3ieQ!%&?7KLrvvVRiS2d^# z_bQcy2Csy-ZH)_@6>M?8^ZDKe(9EsCQVDGLJ{E8m21pD-M#1#M9Uk=uC{t zG&EQkSk7_P##^+eru_FE(3$W^AF>7L=-weAi7F@#VAD2yG0Jvb>z1VR*FfLas{)U4 zd+v6tjz{|X*+l^0JT8W1dgeiL3>`ZO?)|LIg@lAe2LQ7G{XLXuQ0`cYt#ej)BMC$n zFz;^B`&1rn!9+O&%@R{U8#+1~5E4r1Vj)5h*Z8zshY^t7@&Mh^A8RBi@o7y~&(K6Q zARu?VaN6CS79=Q6b*Ca}=bM>+33iTYcl^ku=*n$VxVHprK);4|Y>c%crlg?UlF;Dv z_2#LUEmzdnU-CT_t*r5H7$3)WIJ>d97RVk3>v{j#4eWLc3m|FBKxPTb2v|{= zaBl*=QLvG8aXcQm*GgNpK@Hz=-$tWmP*$2;W?L#}C_&HdJg>A&FzgR#t|TjHYVz4; zoq{q85WnECg5VA^|26=f{-M<2_^$Tgus~Oc<@L1GUsKOwXIz-XN6xHQhTpKCVWWUUUus4tgMOZLa?rO!J)i zqjWY&%XfK1jOgdEAvq6@-hk)?4na(tBno*v)&dy`kTMF2-oYgHu@P=m1#sx~KmRVk zh<2yBv~Z_?$V*{jN)}AVi!V)yi4LaQP$$JKfC`*#xOf#L%X1R;7?mcwmHb@_hH$N%SED=QPM6;cpe0cM$Z|l9k-S3QF2c^(! z8@|DwionU(-?#AUdV6A@`jNhLvS;g8@j+gpYJ8<#96+H!L4<U)Pf#TFD= zW38%JGcwkL5DL)V(>9;Q(79J@ThMT+Adz|Vwjr{Xc>>Vcpcql-$tNL+xVC5B?9rU* zHGr)~;?1VnEI_6>lH8WUg>7!Yyt~@sfwJ2=V3e5nqckw9 z?${0!25OHO_wG%_RsFe(hd-283Y_nRgax_oz))eSLU+ zeO!G#TXdMRoLsHD>t|V66fR!%dw+t$yu2cC@(~;?)zS=g8L-D{X!j!8Ug;PS5Qso~ zm$0+N?$=`cH<3Byx_tN@#{WBC1Sff{*nOO2V2oV-`2;+#A14x zX8+Iz0R&3mxlBe7S1+HD^|PU*Wq?<0F^t{`9M^uBDrXLkH_oMV6}nF1(NCu8Yk07jpf}@UEwH zM!*yZ3W;nC`63k*{Dg)k%*j!)SlkDP@mb^}lX$#ovPsYHnfae?v@k`Djbj17NEPd_ z(Qli9cFL?03{Lf2oU^3xExG)mQ1;+{B|$2wqN4oeiwJnDtBV*IB!R`4{@gLI*)y&H z-nq5Tw~KC7FbF)9p@-y~J7%jJM%~7T-hmXM$Hy`0=?vh*PuH7n&d3o9@qm>Br4D*- zYJyNajwKhf)u^DE;`bN#Rqe`d6dGahRB3Bw5smA^Euy>o*HbGKU%ft-3y`h`Ih7+D zpx`e!Vb?{6yn@!zBRV34Lu;|I!EpqclaWz|asUaExrlI;XqhOakq@2jkV_$m@~p22RKdK`(-{XJ^LPdfC{4EhwsvfEwR9@@yHo^KgMumpNUY!u z5hER{Z?BDx4(K~EF7V-L^1VvDuLt49fMHucQ)%b_RQA*^S+i#TnrE?GES1YW_nx!QKKmCt zHsF#@bhfE?u9hnR7_zfl)PI;B)Rnqj2{q=2`Jtf$cePl*Jm@QXG?|Zy$wYMY9lS?> zU7Vdy&-APGo6Jq@)rom$+?3_T0$!dlDtMv&_NnM4248WMh&GZ}DEeQB$hWfueL?4b@2-}ZKC(=Eet~5qRGZP|Ss5*!Yf!=lbPL`DCz6)o(#mMD zmQ%RcT7#QISbF+LeZGGukx;qifAuFR`_V&+x#akl@o72gk%hq#s8-WO@bE}-s$?V^>rUv_mvA3W#wA4kXB(g(0Hm=)tTGs23Nn6+ZUo2e}2$~iSs@5O9Hf;NWjL`<9 zZvoeB8{h)>rs@XGr2E9gs1RV=H)n~P%YSjWZxkWGIVNP6akw@xJwAHtq|@&u@%%g^ z;Av2|A!1{F`H~Z>4_~nR!I{mR+p;HVo{&%g zikOZYhy)o{aTLB;%E^ya z4OWTurRRfevb4Xt;sz2~8=aiVT=$l|#932*;?>p1?k`;;f5$`l*h+;fC-_Fl=jgG~ zrAKbMpc$I!yToTX-e+pK6d4k(QM-qgDf~kU;{JgZ``gM=w8~ukwPZMiV7AcRC6}6N zMHAcFDp7xJmj=59Jf6FEpMr^C~$>X)Pw4)=|_JRJPp&&{t*SngA+`M>i zw%m7w>gBoFudYL~t|&@*Le>T{5bagw`@=~c*!+OOK%o+9M7Gmw)+Ra3e)~tJ zZ7;Q_m}qDi4@l?;Ar-ZrIWs?XtZ%+bq1(QD3m*HeTUc-gi6Y-m=V;R$pP482s3q}^ z92pxM?Cex+C%QxS4}&{cMRl;$w6`b(<)YRp9ArDY=gtb%K)m|`=tg29NoqFz?Cffj z7o*X)zz-j!K-2#6WlOshy4GP^k3y;joi;b=#h;c{s0S4n6u9jz329HM2w7CgthL_e zz>~Z<7ZO%54Wp!r>0I zj+b||IJd4Y`yprPj6A)^!Pq29wXOrHCiqHF1!jMb*9i^HX=Pxs;d5o>;dZ7TI(nq6 z8W`AicsNq5qxB`9Kd8i8%=A`U+l#LSDYXl{N5qTfkN3fjl56~;Pe`E;DQwpeo$VnRp0|KTYM7D0DV}*vF*V#FQZyC+Re>Ts-BurhlX8JgMpQPqNi!VGFxkz~7CRo0wkF;bu4?oRtf z!$91+Gqw6d)F=ViaZt~RuB_zdM(Izp=+pJUQN6^Wygr1J+QEskpLBK<<*{x}wC7M8 zNa4D z(TApl_FNRQ2b9v1K+yPYjw(!QcTYevXArg)sfn`Ef`ZfSna}Y5fd_48=j7{)x;^S= z^7aPq*7LSA%-Ua;XN*9Ryb&x74jz5Y4?7b(hP4ihiO*wLrtqu$8X)@huGi-P{0sLT zZ_Qm7=B=FvqFyaANKAGVvXW<8fBBacNNss{JwoN zRaD#nWf}m;O6e&(^My34gCl z&VZJWPL7z4!p~3l&FaIu!zL#w73j0P4hKG!AU~kIj+YL^F`VDBVf~qZ5RA_Dh@Q}u zh~zTN4A6Ss>LFv!Cwy)wm%;=jssK)Q4Gn#$r(TBoAN-S&63S{H%fcs(fS~`kZfv-P z;%`jn#H8osWYy5v@A^hHPmQVUsl@F@yEz3Mhd(C0AX$}=G@=mtN8~j@nh6Yp=~^xc zadCQXXa9)a62{@rpH;!#0vmZ}VzJUTJ=@;%C*#4HNF8%61OiY{t7zw$P*I!S%PuSg zKLAY)B7y)a3>0C&Br=3E;5mQId9nna0oF>Y0JJ|K$uEB~?VmIzE%n*wP_^0yJ$nE|P|xN|kF;wn#I@JTnr$qNOx?tXEmf({-71V~wpq9vkqp*W zELK{vWX#q-=~cT3m}G*V3lQoCZGYAt;_ux(z1-bR-Pz>kQXJ~>GTrmJ8puvQ^%B`X zYglz^5XtO6uW{d7+Jhw3KK08gLI|BulTUzj_w-**L&NUK*Vw|s!Cd8VW+u|R$Z1(w zXYFAEarEm7$($iuT0Sx|$0xfW>4-Q~B*Vl+*XD37CK1&idm$^UYQBba@K~O9p{TIq z41Nr*_Y&IZ`6)4oZh!bH*L<=*GtRpFO9hq#7d-n>sxa2uGMNCZMd3dTAnSQ;}G*?dfEa+aAk(^Aw)7Cp# znHU?lpFe!9TL%J=d-txet=$T8mFL*B-$Yh^Fd&w|{@K>{damiTp+A&`g*=rd z0-Hf-I@~C`66oulQRo91?P$nC0#{j5_bVT_@4==t-Xxq*`Imtr>V-mz7dsOZ zsf`U5aAG`tf;!vAO6z?`Ef?L|q z@UYzM$J+B8cr50LDMPu}zsGoTwCK{2VYTw>tWV&gMMf5>kXh`z_xZEN&$ax`oSefK zxsiv5=|0EXsoK?!0~lB#)Mx=%l-tW3&wYFj6IfJ!{BXfQ@w`Jy9P<7>cWms%)9QPz z;5xT)xIshn(95*<3}-_#C`4g9jc4mQuw1nX(b^iXYX);_PUIz8H?*s-E)T*aOO`-r zr>^e%@w$!O+GxKmnTt8+j5RV(PA0^kDzyGwpPzrZu-`n{o)5hDI9O~RRg(sjkYuWt zG>uO_GwcH~Xrb0(wM{AkQDQHdp4GfW_#Jfmy|pZVt(SP@YVReo?o%pBpk5_$%dK`& z%Ak+R)5Jfc6cx!UirBlh`yLb1)HtiX9VU_0n~Zlh-$uj~f61;$^+#7%Q91KyiHA+# z>QMky&!gv#j_s|jqQJV}ne$DJ{wMG#S3y02&t_8ds-EG;yXU{kzlIA~sRMmpvR^S$ z?7M|IhLYR_V|zyP(BLeK{?+mNP=*l2tQ@C6dQ4gxCB+pjS2^$aSYGGq67pi`P_xT*&BMNq`QmKb}iV^rEwH@CLXsZUEJzoFG{u|SSe^x4( z3N5O0U>yS$HLyEz?C64<=`ToJ#&D2d*9*nQw79ws-N%sb%M>-772;A&0{>Y92U~Bw`VSosGGcL2k!^0vXnkv-lwtd~t zPIVjIxe^ztVLun5sP<``=@+d>qaM8`!p8@RMqDf|1B=mf2YhVo2YCAhX0|*7tq(rjOrvyZrs|lAG0qraq=7$ivVNI>C@EBhE@D>{31PHob={8?+ zR&(8!D8uE0&9lR)V?T0Jl?O{r0?d`_f<2c>xlEeYg%iXzTLTl76Z=b2e9muO9i~lzD z?`ac`3C$fMfp|9g%6D7mg>3|pi0@UM<%oNQKSOn}sF&vV9`>3i2=GjqojgNTas4Q0 z@++w&kRUZ>(t^7VaonZfTs+<=*tB{M^2=Q}(g;>&`6PC6D?mkASkikiX!!Yk7d!GG zz`=tejnLDO$>7;SwU{a^qB#m$)W!#0>AM_$3=Nn^6wwav7KjWF%x|aIl9wqLN=NS+m9i+WB%5FB2 zQSdlJMGL@2?&>euet~Y;!=fj&-WqI1O)aG;%% zYqBrkP>(U9BQ(tY3B(RpSEtQ~1S~=n8hW!*vT&Y+59mCbHNV9#wFI`~Bq z(;O-K%a=EFbXve{l9#Wz6`GLLIW}8=tnPLaM=kjQJZt81&&c$f-@sNmHWD-74N5+7 zY=zt*0(@hT##`GQK2jRycrs$_{arkp1Cz3ek}%=6gC*t9+gGcZBi?@tR2|XOGjw%_ zC(5JZ6GpSOi2VJshe+5l9*`DHO+}^hY`qP`bCIeu+???Qzceluo5Uqo<1Ua|Yfp)S z5AdS5RLi2n(b3}7)l_Qc>-XW^XUmDH z%@AP$2e_GXGs?-yI%8urZqkSrKLg^}#6d(>$tn!b}0 z%eSX=^H*_(&lx@>BoJa`8@|w%f8&Y;S{rrM*mQoUw7|ftr7nR6&w2^$rNNx{FLE>3 ziLtA9MKrS{;~lLL4_5|%_LuA)G*no|FIU+#FtvZn8Y0;k)$RVpB%=?sY0X!bP;603 z`k3`qFvv*0VDi=8(H8IizUXnCJ#5D-ralYE=O=8!KRO&6+(UEr_NspW7V@4u$Kz47hwIK%7=TAHi%p)nGLfD^#bFmop*Y|phuH6nl z@YARMrY4;G_ic)bbPIQ~u?ncsJ`E7}WJlE2cI3YZKgnkU7hZTtSQH{&;L#guHAcJa z;|GNOLTk24J{)9+H<*w&LYBa^D@BLzMRC05ENwWS`2PJM5!w0CScyx3-60@MH>Q`U-3w(mpzsXFz$K5}|?R+m? z3Q|&}FltQ9&42dSGSRQRG%&DM>a%Nj@J=58R-`BXy~eyeYPJ#)wvxVa&EBCGj;ZUQ z5WUB<*yLT^pDw@X>mew}VrOS0r&M(omD%Vg8AAQfjtY+aRA{tf=lvBG6<_ElF3;m2 z6-!1Uv&W-s4x7qbUSNxO!0UK+K!qoMvylB|E*TgY%&oFPv;$#&+tx!yhWE_J^Ss)$ z5d&p#auTRGGaHrk7;O#xDM@Qq?jQ~fHMe$EzxXgx@N%`g`vIl!z32`aHF5D<$l{Bg z$9wig+1aTrVkdU}a`dhvBQbY~O`flT9rQ^LdtF_gscEy#?B@6SoMNf(Zc{5>WE#79Q%ef{?f&k&@C`CeYJ3?An`8xDv9^!jM)zNePxpkRHTAn9if938| zQD9<*+_{r!W!0sLdK*C;J?%*xK*DSLIeug3ekZPfnp2d%bBaAXy_f|CEoi^lG0G_>_V@M-h}Bj9HkL8%d|LEP6~}Jx=s*dX2V3Xx*Be$=khHxM*KZ85=p%rSdM4JFM0-INy6N58(b9FU0 zJ3G6e;A}`)w6eNd65DxiNsgSH9E5wI3kEGDT0p{MEpRwm+}gU|_79|k)My3y`Ji2- zj*$f|{_ZYW$AF*5^mh2xOcj=I8y@Bc8pY_Sx|Y`I zWTh4Oy!-foS>~%il>3ej4vcKqql&rV;piA`d}K;8GOOTR-g6}nFZA;Avgkin;TZSt zgKSw+LP9!M%u`ka9M#ES zIS=msXrJAgczL!bM2>BJUi&g z(83|C4G*h*<^^hWIw%Ik#l@YR_CckJi;Fwk?5j+RJ2W&TC@2U^rq-wv)AId4wAZ3POh2R>kO9{CMY+(TpivHCCxSIg7-$W-%tYU85})~6 zS~6j@!SY$_hV}+Kla*h`2-<1ez`h^!GZxm?+&nx=3JOa}h95OG5@ZIbuV+lLktgb1 zcc3W+h$&&7^myI$1y~#OFvajr&v^1aIvV@H_u%!{f`WIh)Ks@ki0x+8-ji0c(B`P|R0+;c;gg zmTm_YdR*SENkb@$z(Tym#Gjm`e2pX_HBA3hfrVnlUr ztY79*Dv*<>LrV!iKLp5M;aCcK_Jg!<1qIJQ;5VUoX9~AwU}VJPvKeHxCAY%yI|){E zxu2(`%%SK$W?_Nm1t4G!F(eMzbrVWfU}a_wq+(!YwS^81px$N2I6po8mhc_gi~RNl zZ96`E2ndqd1O-pY-KBblhlkVB(ngDQr)FnGpwmZ{vU}m<2c`pu6}B^Vpz4Ld<9TjJ z&PYf|m;oJJKs_swoMGeg+xPch(uYiMfa4Fx{RBrzu23L|yqhV}NjN|<2*x+F6y#4+A*R@e#=mRz}!}diuXh0HZ&A``0xQf!;t+}tN=jo0U) z@Cb|@ANl)jSh20gM%7{+9X|T=hIMT^>M!-FYo8ipP=pkSM0*T0^KWckk{Q?SH6`Ay^93(6)L=RP-d6tH3E}h z^y0z`EkHd^74=xVBUo8W~B4W;4Ke zwSuM1%v^0fv9PohME~Yu?ONpF-@u++qLp9TR|NM?;eh`_jhWzbi{i;}a7TQy@kV zZY@!L77y^gK@D{Y8rm zYp$GoTuNFR%xn7Ka*B#JVCezI9$@7Fdl)o2(W-N143pYBK6Z6=B|2w%hZPmStm~`* z`^}AgLwGneDFL12eGCkp8hh$jMXwl!jI6p7NUpE6W0JeZdPUc9@$jJK4mid@O$3^G zP>_&xT{m3L$w+xeGcx2+i28i6Ph?axy*R zWc0UL&y~(f;Jnr)#t19_lBvigwX}Z3F z(=oVr{QLKkNJnt8zsK~=56IDf=b4Mkv-G%)@Qa6>1uF5~zfgvM-a*oaYUIhyuGbOy7Le_MldU%iqfBg6QHiHs<{ z#fgE4=KQLmT#|1g_v{yBe11fnwOp*MQ=OfpZy%Hj8zK;PH&!^^JTRUD;zo{bVt>{dZO+r~2+2}U}!j!Lq z4qP4ZJc(ni3=%`I>)CV~+;*XJOmHRlw*B6osPmg9yfeq;r4DCT4Gv;m3H>q#h>JIM zRH8%z>_0&+kI9C|#;`WYb2U)0X32RJ+(!!XHBlda+__lYAQ*2wMW%V2{Y3S@>kK%A zu!EZ(=iPq5p3@QtMn_>%f3F>18yTH9N9(z~8D!J-(0?^ah;1Nbt+|sJLQUlpjr(-1GeN1>f0{yE0xB83yx(A5b=mA%hDr;JPGkXs1cub)0SEdSbv z;Esa>nP4sEOrPa&o{d?5@j`i#fs@mDol8uKUi`)Bszkoq8$G>QbCbhPDC71e-AZAS zjgE}mCgBS3Juz(0k^lNF@(zNXUQ0t1@f}RHlf%0mgebsfM_ptnya_t?GSH-tPj~e?*VA>J{l-QBc`hAspgMLjp_c-kOTI&6ZzdE{n_HP&nW~ z6hbuy+6BpUMzWk< zy7D@_(FWQv6Tf?XSXjv0PJNAHS=(y7va+Dl{oaK|@eqGu6r_m;en=iA-x3;-qa$SR zMH?bw^QsaySKcr^In;%^gu-84CgyJ4hBZ9wKQ&HfX|x*M_D)>B*H`i?17?Ltr?bH! zB5r3DCq2pWfvDjPEVu|+bhrp^Zr)mXc=v9JKB(a?3JW_72tZB$fLB0Ds<6pvRbOKa zZ)Bub^J!~faBx*f$DdSQr*D``^$8hzUKb~U-sjWwO2aJzgotRWn~}*sdp2-!n(OTH zmX6+bXb4YY@z5s)BLC(26(El?okoB}w+oQHVaMoCHG8vf%4+^5G9E;wE*lS5d%5=a zVn?qk5n@teA-80s_g6EEbx5}VT9Oh}0*m$5hJDk(2>BbB7GTYqBj2AUa!I^lKMqpz zykgtFKGrsY=p7Y#`M0^Nb2QRLJBO z=#`|L9FNen)vD5}b~CtN3x+II=YOV7Q5z|XG(ohp_(=Z?DsY_5n>WB zRlg5@)u3Z#?UbWE{rq`LTKbY4LqQ0*qqDV(&>?Kxq`NO&j}p|jq47} zsJ|B*CPl*oKmqoaI5DOK;4qIw0*zDSQh-Eq{!SBz}@mJ}6qwj(q-0LU1Z{c@o zR+vA8!0Y!J?uyEGYYU$;Gdx#GSj62?>v?oIUp*309W)1tjjihbg=^X?kdl@bWk@S} z!7ib!%)-He)kcicKqG@2Md@pQu=a_7xv&)C&1VEeiEn3nIX~JKoz>MX6nZ?cu+R(J zZ~|1aQDz!yZ*qvv)dfo5X%lw#uQx+*Ocu0o<+?I%PKcj=ggV~0B`!^!$ zIu}nbZYd;vgw*fj`Eg4iuHnNt!NkY>=LZ%JFcJ+7_Q!&VgIh4f7)k7 z7TnUOkr~CQx+h@hymNh3KNUk0juv#QsVjmw3zxFl0xZ|8Ms;v~E8iz`brKQ!TJ z9MJopnpeJ$XKvGeCD48}qONXaY;xDaVyFEm0_mmNa5n+-RaNCkvxCvl&zO%d>=D?= zFhmvi>#Oj%7v_q+W1h!VAhHQ{;agZ)=cl7?!D0z=-LY)n&w=t^SKOhh>bv%R7bI1n zaIExdyxD1L@~rL#lz4f$CE650MFk^$xVzMK?!K>-mmhpyu~^MF81Q^0Ib)PezZ5>&JayZkN{J< z_^TDcj0OgVv7?580SL9`fmS2rLxu=>jf$AR4T}hwpWmdoxbrUZ^h~|Bq5^j*ri^2L z0h3xV6Q2I zj6k~olilyC&S`b-4!V+Z8u-sfX4cg)jn2yo2vHE>FX0kaEp$YrL5P!b$Q4&n8Eu#1 z5+*k$P6IATwRLTo*C{_b`quDpI&gLVb3HtmY%SDixRB8LT$(5=fBk1~cjwM;Cq(l~ zFPFURzpr0u1O-Btme87K-c}xt18W7{``ch-i`b`6dPK$XZoY6dI{dqypD)t(!@(g@FpiO8K>uI~+m`Qz126UbVTFYer6}g_ zp%)M?5GSmD7)Wd7fEO`qWIV#%y?fUO*QM0wAg{E%JoPX=EsZm2dG=l9Ayyy?W2oTc z3Pb~Dp*Md&br*BH0;0K;e7TmR2SF9b%<5p$Km2c67sJm@1u7F z>aBI6V3L|idti=kuzhy8sawAQ#r>wHp=3KqoDZt!Y+1BkyRZGeeOE{i3bEjIp@X&% z&5al426?7gX$V-S`2gxN$i6uyJ~0W5CJ~oLG$3ua0G>^Cs#9dtW_m<->FHA8h`^I!B!OrZK5Zx`l z@#gC{ZYNv<>5*+MkmIhcxd6khL|-FAWQ*U5aEvRBcD$0ARX_mB%<4=`d+zS2Xvpj4 zLh-Sx6%IxpLPGuqql*A*r^+@$8XI^oK+}gOA1oES$YW%~;yzg+Dj<+YcD&KkBMiO> zPf7Sp^VH6Yv}*w~0q5&Xu1@3QZGMQ3-!ShXnp`258}~kWZe`~iq;$=5kHOzBE`}N^ zA2LrbAtlG18uy5g+3lLSWUJy0le&NjfQngTgd1z{OnyV7Br-4mbP^COc5G)+I_!VU z8cM?U-y=HT|2H)*u%$`Aja^5b@Uee?)meUd`T5_G_grSG8ynh0tZ6kCaY#Q|AZe5B zq$8(N@;sV0u<-?aysmzoHnyRv3ctd$qGFg_B(433KK_}jQ(Re=D!j+1QiWesN#LQg zA(?Y~NVS*4+N0p|@YH@l5@5ar*FkICIFd zA;cVEDW61vJQE6kkQ$dZ$z=}!iauAiT(C5^8(=s-GovHDBAPom-zEpbY(s)r19R?< z1QrdL=sl@&3}l!`$5AUBAMawKQVLdmUS)d{UEoeg;0?9~JOG=AhB`xJ)F?UHoZI1X zT>7phjvyw6KzE_6K@`7*f`XT>q^#iOxjByX4Ryq9e^uF_Xi1iKfrupq*-3}_Zk6j! z5e$hmLOAZ@5D6XKec$W!4kJCJKowYIT6RW%>`N08@TUV7BBYI`VI~cH;=;sisjXdx zn3j>=$jkm4wphACNpLwqf(`iE>CE|=uC7(T%n1W=NF=#Dc$VNgsd<|ibH9RSkNb4- z&l2kfmLLj5hPriZy@lV|(jvFK+~9$Xh2c!fqmVoiFX-==*dx9UB?(AL^T)cHye#hC zl}q8axCXMKvB|DR$<>Dx(i*Q*e185cS%qk=7kn_2+;N@1s!fzr}WI8sI8J&}(8)iB(?`FM&|~-l@9mu#&j;k`yJs$R6j#NWz1qJ$#~Y>vQa z1;!v#JhjR(SQJ6u+sJw!Vbm>(t%>pl$Oy}o{++oz)zLZHnyLksh(huw*M;^yey8^) z#@~1EAwJ(VFS;j&jhvH9#P-S=<&yG-R`wGZuJVbmShY>N&f3M_^(5f{HiFdlJDf;- zQ14DwT^&CM2OGo)IK95d$f{2TG6+W7uU}>TnW(#Y!T*-!yDKbE1qJf3gTRfWcUbMk zdljdbIu|B~e?#~7P`J$=;_gyV+^~)?#D6EUvAFIu0ZFO6^j~>K#w57Tp%W^6ILgFA zG-<<|q+*J`{6$h6jeemz5&mm1CE{OCAK@>>ZG$xTHFyW4=O zFkbVe+S2iMy6>X&Q8*FhOEvtJe%}3mrO|aOq6jE%k)ZHEv9!yWb5z9(k0|l@crJNz zvcPHOrd?`w;dFH_HK2mDxSmA#-XNCz-A`8v;D~K!AtD@rlYBKl32W4Z<<)1iU>RwEsNQ?nZRJ2V@dXINJjZ|F?FHY>1=O!mBA%B!; z1w_jul02}p4bpO=$EEfzPwpJ@-ZC&i^gsC~P9N80?0BuLb~!fk)XHv0#B&tN(b1j* zV7Cf2_KoXzQ1ObBrPb2PdU;69DK*ez{UIWvxRfvycl7Lyi%V8Gt^u_2zJGrN+SiO0 zrCzKkDniScur4&)2_zsGqfCEKuk>Sg8_rsU> z5Prk(luTu5argHywO3Z?Z}+DrB+wVK-vFpzzR(xuh-2eJljqIxc?lgV+Tp`s&ElOq zrpCkP>>P`ol4WIqKbpVY0A_@Q578XwTg#zhK!et<9-joxJ&)*D;B<{ZA%>uWl<<29 zef`I%s-*QR?Rt$uG-Y|u<UkFHnAtqTJ|sk7N1{T4`57)I<2mf(yasWc=jx^d0Yw zmv>Oxu=fq`3#2`ezh<^~bev7%z$Ctdj_~_;b9KbLB({{ee~r&2GE(3!FqmM8gDiPg zDQjTO*pVo`k19?On7*EZIpuMav$G=u;zfDptpb+N^YAW|EfHvx7;Vt3f;w+vbQBvZ z0*LP+_^xhZtcJs?TzYioH01y=_{%HV8^jhs>t1m@-_iE>inYUx7maGsJ;Q5gVP z7Fb6Ie58|40L017)3fcS$BQvq0HE67Om1ys15*$BLU){fXa{%$8h8VS2?n|P`p~Wz zb?qD;J)o4dxLx1{4u}&w1}`_aLB(tu6w|)5zi*odPh?CozVDln2{tAZdX8xun-k^W zjNL=$d-Bg;jOs&TqEY$lX}AhlXTz_w0f+Rj>P428XX-?%el{PAihBF|mF4BFet!gq z3f7+ZWt9T(B?d$pFeE_r!AX~zni}lW0m0F#f5TFp!2%EA3iVd$jqh$|=G=zy|1Vno ze?iQHgPcM_X{Rw?z5u#x>gjn7FbV)Y#26?6RA9ueTV^b$t2+bWBlI&z7Jm+%8%l7# zeE9-*c+`kM*2nxmvFP8fp0|3#e1ooMW zo0~e|E3BeoXlAy$x%r+d)L_alH8nLZ?ge;l0KyDE1$gqBvw+j<$Q)?C0d~SOlaqh9 zwu%Z18%%psIyyQQ78alYAsFa?yv`nLhc4#;q!}nO0+R9g8wtwa_AoqfHJ83N)7Gj=oL-r%amdci z1!gqdq+|$2SX30z)3oV-PDeog!9y0$$;nykZfFof3joT?x)DvEht_Fv z^H*`lpB)0wyLJu3Wyh$ltjuCdWYcf58e`2WqyhhZVz*}xYr)?8pIbvl2E|6IfPer< zQo(s2kWCR05xd!jd7k<&^kZ3d$>~nu-wf`O6BAmxx<$~-!FlcZfw!(MHP$LMK5##P z;{nF>kRL%N3@6M}oT*=BO-npuA@?5?>o?Dij}sFS$xva#!~RiDc=5HckQN&aAfmNy z4x^5bcK1r}18q2r5Z#C zKYu_XV&(q}4J9fogzLt|#sclb#Li9>TvVX5`b}POlv$=sqYH-OFm?`RJ@9)!ps|ku zbX>R2dA+3h3fj@PLA!WKNegb${TEg7CQVBmiCI}$IXTNY@`+&1zp=dhl=j)QTLx?& z+@wG>x$S+ryC`#@n71?K2Si8Aw^run28|8&E-uTu1+XG60cYvT$;&<2|tqNe|G&FHBF*u~8lh?I8*5md|KV!hcTGsT19;^v)EVrAk`38%jtjrPG z9w;d(0TPRE@ZdK9*@CXciHREUh9C^7t0$zUJ_we;DO3X+v=g}1Fn~|MqMRF0ZnzM@ zCqOHC@E{eMHt_TF=NA;f%7+=w#K;Jn12Hjleqdl@i>ji*7E@5@0bbJK!NE#Ta=HDy z1X=)qp+U8rmtbV(4R;5RFIJY;*Vot8_4ulPd1WP}ZGLle^EWCsE(1Niw47Ym`1m-G ziF9>^IXQ6ys9LK00Z?^V?6~>8`S~`$n*}>L0Axy4??6;WeNWZ+-W|#TK&zvD-%|f{ z>FV+v+|hfgVuXN`0v$^WMBXsbq%mBT+L2A1i}CTmCk>?(bST~y7eJ0_zOsr z+P4viQ2e}g*zgelvyH)b^H8h3`5Qzl>i^zOh7Z~?f+b+Cwh7$3D?uOk4O4s? - - - - - - -Leonetienne/Eule: Eule/Vector3.cpp Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Vector3.cpp
-
-
-Go to the documentation of this file.
1 #include "Vector3.h"
-
2 #include "Math.h"
-
3 #include <iostream>
-
4 
-
5 //#define _EULE_NO_INTRINSICS_
-
6 #ifndef _EULE_NO_INTRINSICS_
-
7 #include <immintrin.h>
-
8 #endif
-
9 
-
10 using namespace Eule;
-
11 
-
12 /*
-
13  NOTE:
-
14  Here you will find bad, unoptimized methods for T=int.
-
15  This is because the compiler needs a method for each type in each instantiation of the template!
-
16  I can't generalize the methods when heavily optimizing for doubles.
-
17  These functions will get called VERY rarely, if ever at all, for T=int, so it's ok.
-
18  The T=int instantiation only exists to store a value-pair of two ints. Not so-much as a vector in terms of vector calculus.
-
19 */
-
20 
-
21 // Good, optimized chad version for doubles
-
22 double Vector3<double>::DotProduct(const Vector3<double>& other) const
-
23 {
-
24  #ifndef _EULE_NO_INTRINSICS_
-
25 
-
26  // Move vector components into registers
-
27  __m256 __vector_self = _mm256_set_ps(0,0,0,0,0, (float)z, (float)y, (float)x);
-
28  __m256 __vector_other = _mm256_set_ps(0,0,0,0,0, (float)other.z, (float)other.y, (float)other.x);
-
29 
-
30  // Define bitmask, and execute computation
-
31  const int mask = 0x71; // -> 0111 1000 -> use positions 0111 (last 3) of the vectors supplied, and place them in 1000 (first only) element of __dot
-
32  __m256 __dot = _mm256_dp_ps(__vector_self, __vector_other, mask);
-
33 
-
34  // Retrieve result, and return it
-
35  float result[8];
-
36  _mm256_storeu_ps(result, __dot);
-
37 
-
38  return result[0];
-
39 
-
40  #else
-
41  return (x * other.x) +
-
42  (y * other.y) +
-
43  (z * other.z);
-
44  #endif
-
45 }
-
46 
-
47 // Slow, lame version for intcels
-
48 double Vector3<int>::DotProduct(const Vector3<int>& other) const
-
49 {
-
50  int iDot = (x * other.x) + (y * other.y) + (z * other.z);
-
51  return (double)iDot;
-
52 }
-
53 
-
54 
-
55 
-
56 // Good, optimized chad version for doubles
- -
58 {
-
59  Vector3<double> cp;
-
60  cp.x = (y * other.z) - (z * other.y);
-
61  cp.y = (z * other.x) - (x * other.z);
-
62  cp.z = (x * other.y) - (y * other.x);
-
63 
-
64  return cp;
-
65 }
-
66 
-
67 // Slow, lame version for intcels
- -
69 {
-
70  Vector3<double> cp;
-
71  cp.x = ((double)y * (double)other.z) - ((double)z * (double)other.y);
-
72  cp.y = ((double)z * (double)other.x) - ((double)x * (double)other.z);
-
73  cp.z = ((double)x * (double)other.y) - ((double)y * (double)other.x);
-
74 
-
75  return cp;
-
76 }
-
77 
-
78 
-
79 
-
80 // Good, optimized chad version for doubles
-
81 double Vector3<double>::SqrMagnitude() const
-
82 {
-
83  // x.DotProduct(x) == x.SqrMagnitude()
-
84  return DotProduct(*this);
-
85 }
-
86 
-
87 // Slow, lame version for intcels
- -
89 {
-
90  int iSqrMag = x*x + y*y + z*z;
-
91  return (double)iSqrMag;
-
92 }
-
93 
-
94 template <typename T>
-
95 double Vector3<T>::Magnitude() const
-
96 {
-
97  return sqrt(SqrMagnitude());
-
98 }
-
99 
-
100 
-
101 
- -
103 {
-
104  #ifndef _EULE_NO_INTRINSICS_
-
105 
-
106  // Load vectors into registers
-
107  __m256d __vector_self = _mm256_set_pd(0, z, y, x);
-
108  __m256d __vector_scalar = _mm256_set_pd(0, scalar.z, scalar.y, scalar.x);
-
109 
-
110  // Multiply them
-
111  __m256d __product = _mm256_mul_pd(__vector_self, __vector_scalar);
-
112 
-
113  // Retrieve result
-
114  double result[4];
-
115  _mm256_storeu_pd(result, __product);
-
116 
-
117  // Return value
-
118  return Vector3<double>(
-
119  result[0],
-
120  result[1],
-
121  result[2]
-
122  );
-
123 
-
124  #else
-
125 
-
126  return Vector3<double>(
-
127  x * scalar.x,
-
128  y * scalar.y,
-
129  z * scalar.z
-
130  );
-
131 
-
132  #endif
-
133 }
-
134 
- -
136 {
-
137  return Vector3<int>(
-
138  x * scalar.x,
-
139  y * scalar.y,
-
140  z * scalar.z
-
141  );
-
142 }
-
143 
-
144 
-
145 
-
146 template<typename T>
- -
148 {
-
149  Vector3<double> norm(x, y, z);
-
150  norm.NormalizeSelf();
-
151 
-
152  return norm;
-
153 }
-
154 
-
155 // Method to normalize a Vector3d
- -
157 {
-
158  const double length = Magnitude();
-
159 
-
160  // Prevent division by 0
-
161  if (length == 0)
-
162  {
-
163  x = 0;
-
164  y = 0;
-
165  z = 0;
-
166  }
-
167  else
-
168  {
-
169  #ifndef _EULE_NO_INTRINSICS_
-
170 
-
171  // Load vector and length into registers
-
172  __m256d __vec = _mm256_set_pd(0, z, y, x);
-
173  __m256d __len = _mm256_set1_pd(length);
-
174 
-
175  // Divide
-
176  __m256d __prod = _mm256_div_pd(__vec, __len);
-
177 
-
178  // Extract and set values
-
179  double prod[4];
-
180  _mm256_storeu_pd(prod, __prod);
-
181 
-
182  x = prod[0];
-
183  y = prod[1];
-
184  z = prod[2];
-
185 
-
186  #else
-
187 
-
188  x /= length;
-
189  y /= length;
-
190  z /= length;
-
191 
-
192  #endif
-
193  }
-
194 
-
195  return;
-
196 }
-
197 
-
198 // You can't normalize an int vector, ffs!
-
199 // But we need an implementation for T=int
- -
201 {
-
202  std::cerr << "Stop normalizing int-vectors!!" << std::endl;
-
203  x = 0;
-
204  y = 0;
-
205  z = 0;
-
206 
-
207  return;
-
208 }
-
209 
-
210 
-
211 
-
212 template<typename T>
-
213 bool Vector3<T>::Similar(const Vector3<T>& other, double epsilon) const
-
214 {
-
215  return
-
216  (::Math::Similar(x, other.x, epsilon)) &&
-
217  (::Math::Similar(y, other.y, epsilon)) &&
-
218  (::Math::Similar(z, other.z, epsilon))
-
219  ;
-
220 }
-
221 
-
222 template<typename T>
- -
224 {
-
225  return Vector3<int>((int)x, (int)y, (int)z);
-
226 }
-
227 
-
228 template<typename T>
- -
230 {
-
231  return Vector3<double>((double)x, (double)y, (double)z);
-
232 }
-
233 
-
234 template<typename T>
-
235 T& Vector3<T>::operator[](std::size_t idx)
-
236 {
-
237  switch (idx)
-
238  {
-
239  case 0:
-
240  return x;
-
241  case 1:
-
242  return y;
-
243  case 2:
-
244  return z;
-
245  default:
-
246  throw std::out_of_range("Array descriptor on Vector3<T> out of range!");
-
247  }
-
248 }
-
249 
-
250 template<typename T>
-
251 const T& Vector3<T>::operator[](std::size_t idx) const
-
252 {
-
253  switch (idx)
-
254  {
-
255  case 0:
-
256  return x;
-
257  case 1:
-
258  return y;
-
259  case 2:
-
260  return z;
-
261  default:
-
262  throw std::out_of_range("Array descriptor on Vector3<T> out of range!");
-
263  }
-
264 }
-
265 
-
266 
-
267 
-
268 // Good, optimized chad version for doubles
-
269 void Vector3<double>::LerpSelf(const Vector3<double>& other, double t)
-
270 {
-
271  const double it = 1.0 - t; // Inverse t
-
272 
-
273  #ifndef _EULE_NO_INTRINSICS_
-
274 
-
275  // Move vector components and factors into registers
-
276  __m256d __vector_self = _mm256_set_pd(0, z, y, x);
-
277  __m256d __vector_other = _mm256_set_pd(0, other.z, other.y, other.x);
-
278  __m256d __t = _mm256_set1_pd(t);
-
279  __m256d __it = _mm256_set1_pd(it); // Inverse t
-
280 
-
281  // Procedure:
-
282  // (__vector_self * __it) + (__vector_other * __t)
-
283 
-
284  __m256d __sum = _mm256_set1_pd(0); // this will hold the sum of the two multiplications
-
285 
-
286  __sum = _mm256_fmadd_pd(__vector_self, __it, __sum);
-
287  __sum = _mm256_fmadd_pd(__vector_other, __t, __sum);
-
288 
-
289  // Retrieve result, and apply it
-
290  double sum[4];
-
291  _mm256_storeu_pd(sum, __sum);
-
292 
-
293  x = sum[0];
-
294  y = sum[1];
-
295  z = sum[2];
-
296 
-
297  #else
-
298 
-
299  x = it*x + t*other.x;
-
300  y = it*y + t*other.y;
-
301  z = it*z + t*other.z;
-
302 
-
303  #endif
-
304 
-
305  return;
-
306 }
-
307 
-
308 
-
309 
-
310 // Slow, lame version for intcels
-
311 void Vector3<int>::LerpSelf(const Vector3<int>& other, double t)
-
312 {
-
313  const double it = 1.0 - t; // Inverse t
-
314 
-
315  x = (int)(it * (double)x + t * (double)other.x);
-
316  y = (int)(it * (double)y + t * (double)other.y);
-
317  z = (int)(it * (double)z + t * (double)other.z);
-
318 
-
319  return;
-
320 }
-
321 
-
322 Vector3<double> Vector3<double>::Lerp(const Vector3<double>& other, double t) const
-
323 {
-
324  Vector3d copy(*this);
-
325  copy.LerpSelf(other, t);
-
326 
-
327  return copy;
-
328 }
-
329 
-
330 Vector3<double> Vector3<int>::Lerp(const Vector3<int>& other, double t) const
-
331 {
-
332  Vector3d copy(this->ToDouble());
-
333  copy.LerpSelf(other.ToDouble(), t);
-
334 
-
335  return copy;
-
336 }
-
337 
-
338 
-
339 
- -
341 {
-
342  #ifndef _EULE_NO_INTRINSICS_
-
343 
-
344  // Move vector components and factors into registers
-
345  __m256d __vector_self = _mm256_set_pd(0, z, y, x);
-
346  __m256d __vector_other = _mm256_set_pd(0, other.z, other.y, other.x);
-
347 
-
348  // Add the components
-
349  __m256d __sum = _mm256_add_pd(__vector_self, __vector_other);
-
350 
-
351  // Retrieve and return these values
-
352  double sum[4];
-
353  _mm256_storeu_pd(sum, __sum);
-
354 
-
355  return Vector3<double>(
-
356  sum[0],
-
357  sum[1],
-
358  sum[2]
-
359  );
-
360 
-
361  #else
-
362 
-
363  return Vector3<double>(
-
364  x + other.x,
-
365  y + other.y,
-
366  z + other.z
-
367  );
-
368  #endif
-
369 }
-
370 
-
371 template<typename T>
- -
373 {
-
374  return Vector3<T>(
-
375  x + other.x,
-
376  y + other.y,
-
377  z + other.z
-
378  );
-
379 }
-
380 
-
381 
-
382 
- -
384 {
-
385  #ifndef _EULE_NO_INTRINSICS_
-
386 
-
387  // Move vector components and factors into registers
-
388  __m256d __vector_self = _mm256_set_pd(0, z, y, x);
-
389  __m256d __vector_other = _mm256_set_pd(0, other.z, other.y, other.x);
-
390 
-
391  // Add the components
-
392  __m256d __sum = _mm256_add_pd(__vector_self, __vector_other);
-
393 
-
394  // Retrieve and apply these values
-
395  double sum[4];
-
396  _mm256_storeu_pd(sum, __sum);
-
397 
-
398  x = sum[0];
-
399  y = sum[1];
-
400  z = sum[2];
-
401 
-
402  #else
-
403 
-
404  x += other.x;
-
405  y += other.y;
-
406  z += other.z;
-
407 
-
408  #endif
-
409 
-
410  return;
-
411 }
-
412 
-
413 template<typename T>
- -
415 {
-
416  x += other.x;
-
417  y += other.y;
-
418  z += other.z;
-
419  return;
-
420 }
-
421 
-
422 
-
423 
- -
425 {
-
426  #ifndef _EULE_NO_INTRINSICS_
-
427 
-
428  // Move vector components and factors into registers
-
429  __m256d __vector_self = _mm256_set_pd(0, z, y, x);
-
430  __m256d __vector_other = _mm256_set_pd(0, other.z, other.y, other.x);
-
431 
-
432  // Subtract the components
-
433  __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other);
-
434 
-
435  // Retrieve and return these values
-
436  double diff[4];
-
437  _mm256_storeu_pd(diff, __diff);
-
438 
-
439  return Vector3<double>(
-
440  diff[0],
-
441  diff[1],
-
442  diff[2]
-
443  );
-
444 
-
445  #else
-
446 
-
447  return Vector3<double>(
-
448  x - other.x,
-
449  y - other.y,
-
450  z - other.z
-
451  );
-
452  #endif
-
453 }
-
454 
-
455 template<typename T>
- -
457 {
-
458  return Vector3<T>(
-
459  x - other.x,
-
460  y - other.y,
-
461  z - other.z
-
462  );
-
463 }
-
464 
-
465 
-
466 
- -
468 {
-
469  #ifndef _EULE_NO_INTRINSICS_
-
470 
-
471  // Move vector components and factors into registers
-
472  __m256d __vector_self = _mm256_set_pd(0, z, y, x);
-
473  __m256d __vector_other = _mm256_set_pd(0, other.z, other.y, other.x);
-
474 
-
475  // Subtract the components
-
476  __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other);
-
477 
-
478  // Retrieve and apply these values
-
479  double diff[4];
-
480  _mm256_storeu_pd(diff, __diff);
-
481 
-
482  x = diff[0];
-
483  y = diff[1];
-
484  z = diff[2];
-
485 
-
486  #else
-
487 
-
488  x -= other.x;
-
489  y -= other.y;
-
490  z -= other.z;
-
491 
-
492  #endif
-
493 
-
494  return;
-
495 }
-
496 
-
497 template<typename T>
- -
499 {
-
500  x -= other.x;
-
501  y -= other.y;
-
502  z -= other.z;
-
503  return;
-
504 }
-
505 
-
506 
-
507 
-
508 Vector3<double> Vector3<double>::operator*(const double scale) const
-
509 {
-
510  #ifndef _EULE_NO_INTRINSICS_
-
511 
-
512  // Move vector components and factors into registers
-
513  __m256d __vector_self = _mm256_set_pd(0, z, y, x);
-
514  __m256d __scalar = _mm256_set1_pd(scale);
-
515 
-
516  // Multiply the components
-
517  __m256d __prod = _mm256_mul_pd(__vector_self, __scalar);
-
518 
-
519  // Retrieve and return these values
-
520  double prod[4];
-
521  _mm256_storeu_pd(prod, __prod);
-
522 
-
523  return Vector3<double>(
-
524  prod[0],
-
525  prod[1],
-
526  prod[2]
-
527  );
-
528 
-
529  #else
-
530 
-
531  return Vector3<double>(
-
532  x * scale,
-
533  y * scale,
-
534  z * scale
-
535  );
-
536 
-
537  #endif
-
538 }
-
539 
-
540 template<typename T>
-
541 Vector3<T> Vector3<T>::operator*(const T scale) const
-
542 {
-
543  return Vector3<T>(
-
544  x * scale,
-
545  y * scale,
-
546  z * scale
-
547  );
-
548 }
-
549 
-
550 
-
551 
-
552 void Vector3<double>::operator*=(const double scale)
-
553 {
-
554  #ifndef _EULE_NO_INTRINSICS_
-
555 
-
556  // Move vector components and factors into registers
-
557  __m256d __vector_self = _mm256_set_pd(0, z, y, x);
-
558  __m256d __scalar = _mm256_set1_pd(scale);
-
559 
-
560  // Multiply the components
-
561  __m256d __prod = _mm256_mul_pd(__vector_self, __scalar);
-
562 
-
563  // Retrieve and apply these values
-
564  double prod[4];
-
565  _mm256_storeu_pd(prod, __prod);
-
566 
-
567  x = prod[0];
-
568  y = prod[1];
-
569  z = prod[2];
-
570 
-
571  #else
-
572 
-
573  x *= scale;
-
574  y *= scale;
-
575  z *= scale;
-
576 
-
577  #endif
-
578 
-
579  return;
-
580 }
-
581 
-
582 template<typename T>
-
583 void Vector3<T>::operator*=(const T scale)
-
584 {
-
585  x *= scale;
-
586  y *= scale;
-
587  z *= scale;
-
588  return;
-
589 }
-
590 
-
591 
-
592 
-
593 Vector3<double> Vector3<double>::operator/(const double scale) const
-
594 {
-
595  #ifndef _EULE_NO_INTRINSICS_
-
596 
-
597  // Move vector components and factors into registers
-
598  __m256d __vector_self = _mm256_set_pd(0, z, y, x);
-
599  __m256d __scalar = _mm256_set1_pd(scale);
-
600 
-
601  // Divide the components
-
602  __m256d __prod = _mm256_div_pd(__vector_self, __scalar);
-
603 
-
604  // Retrieve and return these values
-
605  double prod[4];
-
606  _mm256_storeu_pd(prod, __prod);
-
607 
-
608  return Vector3<double>(
-
609  prod[0],
-
610  prod[1],
-
611  prod[2]
-
612  );
-
613 
-
614  #else
-
615 
-
616  return Vector3<double>(
-
617  x / scale,
-
618  y / scale,
-
619  z / scale
-
620  );
-
621 
-
622  #endif
-
623 }
-
624 
-
625 template<typename T>
-
626 Vector3<T> Vector3<T>::operator/(const T scale) const
-
627 {
-
628  return Vector3<T>(
-
629  x / scale,
-
630  y / scale,
-
631  z / scale
-
632  );
-
633 }
-
634 
-
635 
-
636 
-
637 void Vector3<double>::operator/=(const double scale)
-
638 {
-
639  #ifndef _EULE_NO_INTRINSICS_
-
640 
-
641  // Move vector components and factors into registers
-
642  __m256d __vector_self = _mm256_set_pd(0, z, y, x);
-
643  __m256d __scalar = _mm256_set1_pd(scale);
-
644 
-
645  // Divide the components
-
646  __m256d __prod = _mm256_div_pd(__vector_self, __scalar);
-
647 
-
648  // Retrieve and apply these values
-
649  double prod[4];
-
650  _mm256_storeu_pd(prod, __prod);
-
651 
-
652  x = prod[0];
-
653  y = prod[1];
-
654  z = prod[2];
-
655 
-
656  #else
-
657 
-
658  x /= scale;
-
659  y /= scale;
-
660  z /= scale;
-
661 
-
662  #endif
-
663  return;
-
664 }
-
665 
-
666 template<typename T>
-
667 void Vector3<T>::operator/=(const T scale)
-
668 {
-
669  x /= scale;
-
670  y /= scale;
-
671  z /= scale;
-
672  return;
-
673 }
-
674 
-
675 
-
676 
-
677 // Good, optimized chad version for doubles
- -
679 {
-
680  Vector3<double> newVec;
-
681 
-
682  #ifndef _EULE_NO_INTRINSICS_
-
683  // Store x, y, and z values
-
684  __m256d __vecx = _mm256_set1_pd(x);
-
685  __m256d __vecy = _mm256_set1_pd(y);
-
686  __m256d __vecz = _mm256_set1_pd(z);
-
687 
-
688  // Store matrix values
-
689  __m256d __mat_row0 = _mm256_set_pd(mat[0][0], mat[1][0], mat[2][0], 0);
-
690  __m256d __mat_row1 = _mm256_set_pd(mat[0][1], mat[1][1], mat[2][1], 0);
-
691  __m256d __mat_row2 = _mm256_set_pd(mat[0][2], mat[1][2], mat[2][2], 0);
-
692 
-
693  // Multiply x, y, z and matrix values
-
694  __m256d __mul_vecx_row0 = _mm256_mul_pd(__vecx, __mat_row0);
-
695  __m256d __mul_vecy_row1 = _mm256_mul_pd(__vecy, __mat_row1);
-
696  __m256d __mul_vecz_row2 = _mm256_mul_pd(__vecz, __mat_row2);
-
697 
-
698  // Sum up the products
-
699  __m256d __sum = _mm256_add_pd(__mul_vecx_row0, _mm256_add_pd(__mul_vecy_row1, __mul_vecz_row2));
-
700 
-
701  // Store translation values
-
702  __m256d __translation = _mm256_set_pd(mat[0][3], mat[1][3], mat[2][3], 0);
-
703 
-
704  // Add the translation values
-
705  __m256d __final = _mm256_add_pd(__sum, __translation);
-
706 
-
707  double dfinal[4];
-
708 
-
709  _mm256_storeu_pd(dfinal, __final);
-
710 
-
711  newVec.x = dfinal[3];
-
712  newVec.y = dfinal[2];
-
713  newVec.z = dfinal[1];
-
714 
-
715  #else
-
716  // Rotation, Scaling
-
717  newVec.x = (mat[0][0] * x) + (mat[1][0] * y) + (mat[2][0] * z);
-
718  newVec.y = (mat[0][1] * x) + (mat[1][1] * y) + (mat[2][1] * z);
-
719  newVec.z = (mat[0][2] * x) + (mat[1][2] * y) + (mat[2][2] * z);
-
720 
-
721  // Translation
-
722  newVec.x += mat[0][3];
-
723  newVec.y += mat[1][3];
-
724  newVec.z += mat[2][3];
-
725  #endif
-
726 
-
727  return newVec;
-
728 }
-
729 
-
730 // Slow, lame version for intcels
- -
732 {
-
733  Vector3<double> newVec;
-
734 
-
735  // Rotation, Scaling
-
736  newVec.x = ((mat[0][0] * x) + (mat[1][0] * y) + (mat[2][0] * z));
-
737  newVec.y = ((mat[0][1] * x) + (mat[1][1] * y) + (mat[2][1] * z));
-
738  newVec.z = ((mat[0][2] * x) + (mat[1][2] * y) + (mat[2][2] * z));
-
739 
-
740  // Translation
-
741  newVec.x += mat[0][3];
-
742  newVec.y += mat[1][3];
-
743  newVec.z += mat[2][3];
-
744 
-
745  return Vector3<int>(
-
746  (int)newVec.x,
-
747  (int)newVec.y,
-
748  (int)newVec.z
-
749  );
-
750 }
-
751 
-
752 
-
753 
-
754 // Good, optimized chad version for doubles
-
755 void Vector3<double>::operator*=(const Matrix4x4& mat)
-
756 {
-
757  #ifndef _EULE_NO_INTRINSICS_
-
758  // Store x, y, and z values
-
759  __m256d __vecx = _mm256_set1_pd(x);
-
760  __m256d __vecy = _mm256_set1_pd(y);
-
761  __m256d __vecz = _mm256_set1_pd(z);
-
762 
-
763  // Store matrix values
-
764  __m256d __mat_row0 = _mm256_set_pd(mat[0][0], mat[1][0], mat[2][0], 0);
-
765  __m256d __mat_row1 = _mm256_set_pd(mat[0][1], mat[1][1], mat[2][1], 0);
-
766  __m256d __mat_row2 = _mm256_set_pd(mat[0][2], mat[1][2], mat[2][2], 0);
-
767 
-
768  // Multiply x, y, z and matrix values
-
769  __m256d __mul_vecx_row0 = _mm256_mul_pd(__vecx, __mat_row0);
-
770  __m256d __mul_vecy_row1 = _mm256_mul_pd(__vecy, __mat_row1);
-
771  __m256d __mul_vecz_row2 = _mm256_mul_pd(__vecz, __mat_row2);
-
772 
-
773  // Sum up the products
-
774  __m256d __sum = _mm256_add_pd(__mul_vecx_row0, _mm256_add_pd(__mul_vecy_row1, __mul_vecz_row2));
-
775 
-
776  // Store translation values
-
777  __m256d __translation = _mm256_set_pd(mat[0][3], mat[1][3], mat[2][3], 0);
-
778 
-
779  // Add the translation values
-
780  __m256d __final = _mm256_add_pd(__sum, __translation);
-
781 
-
782  double dfinal[4];
-
783 
-
784  _mm256_storeu_pd(dfinal, __final);
-
785 
-
786  x = dfinal[3];
-
787  y = dfinal[2];
-
788  z = dfinal[1];
-
789 
-
790  #else
-
791  Vector3<double> buffer = *this;
-
792  x = (mat[0][0] * buffer.x) + (mat[0][1] * buffer.y) + (mat[0][2] * buffer.z);
-
793  y = (mat[1][0] * buffer.x) + (mat[1][1] * buffer.y) + (mat[1][2] * buffer.z);
-
794  z = (mat[2][0] * buffer.x) + (mat[2][1] * buffer.y) + (mat[2][2] * buffer.z);
-
795 
-
796  // Translation
-
797  x += mat[0][3];
-
798  y += mat[1][3];
-
799  z += mat[2][3];
-
800  #endif
-
801 
-
802  return;
-
803 }
-
804 
-
805 template<typename T>
- -
807 {
-
808  return Vector3<T>(
-
809  -x,
-
810  -y,
-
811  -z
-
812  );
-
813 }
-
814 
-
815 template<typename T>
- -
817 {
-
818  x = other.x;
-
819  y = other.y;
-
820  z = other.z;
-
821 
-
822  return;
-
823 }
-
824 
-
825 template<typename T>
-
826 void Vector3<T>::operator=(Vector3<T>&& other) noexcept
-
827 {
-
828  x = std::move(other.x);
-
829  y = std::move(other.y);
-
830  z = std::move(other.z);
-
831 
-
832  return;
-
833 }
-
834 
-
835 // Slow, lame version for intcels
- -
837 {
-
838  Vector3<double> buffer(x, y, z);
-
839 
-
840  x = (int)((mat[0][0] * buffer.x) + (mat[0][1] * buffer.y) + (mat[0][2] * buffer.z));
-
841  y = (int)((mat[1][0] * buffer.x) + (mat[1][1] * buffer.y) + (mat[1][2] * buffer.z));
-
842  z = (int)((mat[2][0] * buffer.x) + (mat[2][1] * buffer.y) + (mat[2][2] * buffer.z));
-
843 
-
844  // Translation
-
845  x += (int)mat[0][3];
-
846  y += (int)mat[1][3];
-
847  z += (int)mat[2][3];
-
848 
-
849  return;
-
850 }
-
851 
-
852 
-
853 
-
854 template<typename T>
-
855 bool Vector3<T>::operator==(const Vector3<T>& other) const
-
856 {
-
857  return
-
858  (x == other.x) &&
-
859  (y == other.y) &&
-
860  (z == other.z);
-
861 }
-
862 
-
863 template<typename T>
-
864 bool Vector3<T>::operator!=(const Vector3<T>& other) const
-
865 {
-
866  return !operator==(other);
-
867 }
-
868 
-
869 
-
870 #include "Vector2.h"
-
871 #include "Vector4.h"
-
872 template<typename T>
- -
874 {
-
875  return Vector2<T>(x, y);
-
876 }
-
877 
-
878 template<typename T>
- -
880 {
-
881  return Vector4<T>(x, y, z, 0);
-
882 }
-
883 
-
884 template class Vector3<int>;
-
885 template class Vector3<double>;
-
886 
-
887 // Some handy predefines
-
888 template <typename T>
-
889 const Vector3<double> Vector3<T>::up(0, 1, 0);
-
890 template <typename T>
-
891 const Vector3<double> Vector3<T>::down(0, -1, 0);
-
892 template <typename T>
-
893 const Vector3<double> Vector3<T>::right(1, 0, 0);
-
894 template <typename T>
-
895 const Vector3<double> Vector3<T>::left(-1, 0, 0);
-
896 template <typename T>
-
897 const Vector3<double> Vector3<T>::forward(0, 0, 1);
-
898 template <typename T>
-
899 const Vector3<double> Vector3<T>::backward(0, 0, -1);
-
900 template <typename T>
-
901 const Vector3<double> Vector3<T>::one(1, 1, 1);
-
902 template <typename T>
-
903 const Vector3<double> Vector3<T>::zero(0, 0, 0);
-
-
void LerpSelf(const Vector3< T > &other, double t)
Will lerp itself towards other by t.
Definition: Vector3.cpp:311
- -
Vector3< double > ToDouble() const
Will convert this vector to a Vector3d.
Definition: Vector3.cpp:229
- - - -
A matrix 4x4 class representing a 3d transformation.
Definition: Matrix4x4.h:36
- - -
Representation of a 2d vector.
Definition: Vector2.h:14
-
double DotProduct(const Vector3< T > &other) const
Will compute the dot product to another Vector3.
Definition: Vector3.cpp:48
- -
void NormalizeSelf()
Will normalize this vector.
Definition: Vector3.cpp:200
-
Definition: Collider.h:4
- -
Representation of a 4d vector.
Definition: Vector2.h:8
- - - - diff --git a/Doxygen/build/Vector3_8h.html b/Doxygen/build/Vector3_8h.html deleted file mode 100644 index 347a9c3..0000000 --- a/Doxygen/build/Vector3_8h.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Vector3.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Vector3.h File Reference
-
-
-
#include <cstdlib>
-#include <iomanip>
-#include <ostream>
-#include <sstream>
-#include "Matrix4x4.h"
-
-Include dependency graph for Vector3.h:
-
-
- - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - -

-Classes

class  Eule::Vector2< T >
 Representation of a 2d vector. More...
 
class  Eule::Vector4< T >
 Representation of a 4d vector. More...
 
class  Eule::Vector3< T >
 Representation of a 3d vector. More...
 
- - - -

-Namespaces

 Eule
 
- - - -

-Typedefs

typedef Vector3< int > Eule::Vector3i
 
-
- - - - diff --git a/Doxygen/build/Vector3_8h__dep__incl.map b/Doxygen/build/Vector3_8h__dep__incl.map deleted file mode 100644 index 0deaf45..0000000 --- a/Doxygen/build/Vector3_8h__dep__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Doxygen/build/Vector3_8h__dep__incl.md5 b/Doxygen/build/Vector3_8h__dep__incl.md5 deleted file mode 100644 index 627c4d5..0000000 --- a/Doxygen/build/Vector3_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5923ea443852492219c66436d4bffb10 \ No newline at end of file diff --git a/Doxygen/build/Vector3_8h__dep__incl.png b/Doxygen/build/Vector3_8h__dep__incl.png deleted file mode 100644 index 4424eecc123a52d41a7e6b110c285b4197f230af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24078 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 STD?jB%9Cok$MaRs1^pktg_ZjN diff --git a/Doxygen/build/Vector3_8h__incl.map b/Doxygen/build/Vector3_8h__incl.map deleted file mode 100644 index f44a900..0000000 --- a/Doxygen/build/Vector3_8h__incl.map +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Doxygen/build/Vector3_8h__incl.md5 b/Doxygen/build/Vector3_8h__incl.md5 deleted file mode 100644 index 26828a1..0000000 --- a/Doxygen/build/Vector3_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -f06a179ddc8c6cbfb08342b459b2b95e \ No newline at end of file diff --git a/Doxygen/build/Vector3_8h__incl.png b/Doxygen/build/Vector3_8h__incl.png deleted file mode 100644 index a5d5466ecf8f1ef7a739bbbf5ade33b58261c441..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17450 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 - - - - - - -Leonetienne/Eule: Eule/Vector3.h Source File - - - - - - - - - - - - -
-
-
Vector3.h
-
-
-Go to the documentation of this file.
1 #pragma once
-
2 #include <cstdlib>
-
3 #include <iomanip>
-
4 #include <ostream>
-
5 #include <sstream>
-
6 #include "Matrix4x4.h"
-
7 
-
8 namespace Eule
-
9 {
-
10  template <typename T> class Vector2;
-
11  template <typename T> class Vector4;
-
12 
-
16  template <typename T>
-
17  class Vector3
-
18  {
-
19  public:
-
20  Vector3() : x{ 0 }, y{ 0 }, z{ 0 } {}
-
21  Vector3(T _x, T _y, T _z) : x{ _x }, y{ _y }, z{ _z } {}
-
22  Vector3(const Vector3<T>& other) = default;
-
23  Vector3(Vector3<T>&& other) noexcept = default;
-
24 
-
26  double DotProduct(const Vector3<T>& other) const;
-
27 
-
29  Vector3<double> CrossProduct(const Vector3<T>& other) const;
-
30 
-
32  double SqrMagnitude() const;
-
33 
-
35  double Magnitude() const;
-
36 
-
38  [[nodiscard]] Vector3<double> Normalize() const;
-
39 
-
41  void NormalizeSelf();
-
42 
-
44  [[nodiscard]] Vector3<T> VectorScale(const Vector3<T>& scalar) const;
-
45 
-
47  void LerpSelf(const Vector3<T>& other, double t);
-
48 
-
50  [[nodiscard]] Vector3<double> Lerp(const Vector3<T>& other, double t) const;
-
51 
-
53  [[nodiscard]] bool Similar(const Vector3<T>& other, double epsilon = 0.00001) const;
-
54 
-
56  [[nodiscard]] Vector3<int> ToInt() const;
-
57 
-
59  [[nodiscard]] Vector3<double> ToDouble() const;
-
60 
-
61  T& operator[](std::size_t idx);
-
62  const T& operator[](std::size_t idx) const;
-
63 
-
64  Vector3<T> operator+(const Vector3<T>& other) const;
-
65  void operator+=(const Vector3<T>& other);
-
66  Vector3<T> operator-(const Vector3<T>& other) const;
-
67  void operator-=(const Vector3<T>& other);
-
68  Vector3<T> operator*(const T scale) const;
-
69  void operator*=(const T scale);
-
70  Vector3<T> operator/(const T scale) const;
-
71  void operator/=(const T scale);
-
72  Vector3<T> operator*(const Matrix4x4& mat) const;
-
73  void operator*=(const Matrix4x4& mat);
-
74  Vector3<T> operator-() const;
-
75 
-
76  operator Vector2<T>() const;
-
77  operator Vector4<T>() const;
-
78 
-
79  void operator=(const Vector3<T>& other);
-
80  void operator=(Vector3<T>&& other) noexcept;
-
81 
-
82  bool operator==(const Vector3<T>& other) const;
-
83  bool operator!=(const Vector3<T>& other) const;
-
84 
-
85  friend std::ostream& operator << (std::ostream& os, const Vector3<T>& v)
-
86  {
-
87  return os << "[x: " << v.x << " y: " << v.y << " z: " << v.z << "]";
-
88  }
-
89  friend std::wostream& operator << (std::wostream& os, const Vector3<T>& v)
-
90  {
-
91  return os << L"[x: " << v.x << L" y: " << v.y << L" z: " << v.z << L"]";
-
92  }
-
93 
-
94  T x;
-
95  T y;
-
96  T z;
-
97 
-
98  // Some handy predefines
-
99  static const Vector3<double> up;
-
100  static const Vector3<double> down;
-
101  static const Vector3<double> right;
-
102  static const Vector3<double> left;
-
103  static const Vector3<double> forward;
-
104  static const Vector3<double> backward;
-
105  static const Vector3<double> one;
-
106  static const Vector3<double> zero;
-
107  };
-
108 
- -
110  typedef Vector3<double> Vector3d;
-
111 }
-
-
Vector3< T > operator+(const Vector3< T > &other) const
Definition: Vector3.cpp:372
-
static const Vector3< double > right
Definition: Vector3.h:101
-
friend std::ostream & operator<<(std::ostream &os, const Vector3< T > &v)
Definition: Vector3.h:85
-
void LerpSelf(const Vector3< T > &other, double t)
Will lerp itself towards other by t.
Definition: Vector3.cpp:311
-
Vector3< double > CrossProduct(const Vector3< T > &other) const
Will compute the cross product to another Vector3.
Definition: Vector3.cpp:68
-
static const Vector3< double > left
Definition: Vector3.h:102
-
bool Similar(const Vector3< T > &other, double epsilon=0.00001) const
Will compare if two vectors are similar to a certain epsilon value.
Definition: Vector3.cpp:213
-
Representation of a 3d vector.
Definition: Matrix4x4.h:9
-
Vector3(T _x, T _y, T _z)
Definition: Vector3.h:21
-
Vector3< T > operator-() const
Definition: Vector3.cpp:806
-
static const Vector3< double > down
Definition: Vector3.h:100
-
Vector3< double > Lerp(const Vector3< T > &other, double t) const
Will return a lerp result between this and another vector.
Definition: Vector3.cpp:330
-
static const Vector3< double > forward
Definition: Vector3.h:103
-
static const Vector3< double > one
Definition: Vector3.h:105
-
void operator=(const Vector3< T > &other)
Conversion method.
Definition: Vector3.cpp:816
-
Vector3< double > ToDouble() const
Will convert this vector to a Vector3d.
Definition: Vector3.cpp:229
-
Vector3< int > ToInt() const
Will convert this vector to a Vector3i.
Definition: Vector3.cpp:223
-
bool operator==(const Vector3< T > &other) const
Definition: Vector3.cpp:855
-
void operator*=(const T scale)
Definition: Vector3.cpp:583
- -
Vector3< double > Vector3d
Definition: Matrix4x4.h:9
- -
Vector3< int > Vector3i
Definition: Vector3.h:109
-
static const Vector3< double > backward
Definition: Vector3.h:104
-
Vector3< double > Normalize() const
Will return the normalization of this vector.
Definition: Vector3.cpp:147
- -
static const Vector3< double > up
Definition: Vector3.h:99
-
T & operator[](std::size_t idx)
Definition: Vector3.cpp:235
- -
double DotProduct(const Vector3< T > &other) const
Will compute the dot product to another Vector3.
Definition: Vector3.cpp:48
-
Vector3< T > operator/(const T scale) const
Definition: Vector3.cpp:626
-
void operator-=(const Vector3< T > &other)
Definition: Vector3.cpp:498
-
double SqrMagnitude() const
Will compute the square magnitude.
Definition: Vector3.cpp:88
-
void operator/=(const T scale)
Definition: Vector3.cpp:667
-
bool operator!=(const Vector3< T > &other) const
Definition: Vector3.cpp:864
-
void operator+=(const Vector3< T > &other)
Definition: Vector3.cpp:414
-
double Magnitude() const
Will compute the magnitude.
Definition: Vector3.cpp:95
-
void NormalizeSelf()
Will normalize this vector.
Definition: Vector3.cpp:200
-
Vector3< T > operator*(const T scale) const
Definition: Vector3.cpp:541
-
static const Vector3< double > zero
Definition: Vector3.h:106
-
Definition: Collider.h:4
- -
Vector3< T > VectorScale(const Vector3< T > &scalar) const
Will scale self.n by scalar.n.
Definition: Vector3.cpp:135
- - - - diff --git a/Doxygen/build/Vector4_8cpp.html b/Doxygen/build/Vector4_8cpp.html deleted file mode 100644 index 3c0e4aa..0000000 --- a/Doxygen/build/Vector4_8cpp.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Vector4.cpp File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Vector4.cpp File Reference
-
-
-
#include "Vector4.h"
-#include "Math.h"
-#include <iostream>
-#include <immintrin.h>
-#include "Vector2.h"
-#include "Vector3.h"
-
-Include dependency graph for Vector4.cpp:
-
-
- - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

-
- - - - diff --git a/Doxygen/build/Vector4_8cpp__incl.map b/Doxygen/build/Vector4_8cpp__incl.map deleted file mode 100644 index a6df62c..0000000 --- a/Doxygen/build/Vector4_8cpp__incl.map +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/Doxygen/build/Vector4_8cpp__incl.md5 b/Doxygen/build/Vector4_8cpp__incl.md5 deleted file mode 100644 index ff91198..0000000 --- a/Doxygen/build/Vector4_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -6edd4b6a266f3a86f459e12460ef3060 \ No newline at end of file diff --git a/Doxygen/build/Vector4_8cpp__incl.png b/Doxygen/build/Vector4_8cpp__incl.png deleted file mode 100644 index 0007259b697172e30392eb1fea0c094dc0862f15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34490 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 - - - - - - -Leonetienne/Eule: Eule/Vector4.cpp Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Vector4.cpp
-
-
-Go to the documentation of this file.
1 #include "Vector4.h"
-
2 #include "Math.h"
-
3 #include <iostream>
-
4 
-
5 //#define _EULE_NO_INTRINSICS_
-
6 #ifndef _EULE_NO_INTRINSICS_
-
7 #include <immintrin.h>
-
8 #endif
-
9 
-
10 using namespace Eule;
-
11 
-
12 /*
-
13  NOTE:
-
14  Here you will find bad, unoptimized methods for T=int.
-
15  This is because the compiler needs a method for each type in each instantiation of the template!
-
16  I can't generalize the methods when heavily optimizing for doubles.
-
17  These functions will get called VERY rarely, if ever at all, for T=int, so it's ok.
-
18  The T=int instantiation only exists to store a value-pair of two ints. Not so-much as a vector in terms of vector calculus.
-
19 */
-
20 
-
21 // Good, optimized chad version for doubles
-
22 double Vector4<double>::SqrMagnitude() const
-
23 {
-
24  return (x * x) +
-
25  (y * y) +
-
26  (z * z) +
-
27  (w * w);
-
28 }
-
29 
-
30 // Slow, lame version for intcels
- -
32 {
-
33  int iSqrMag = x*x + y*y + z*z + w*w;
-
34  return (double)iSqrMag;
-
35 }
-
36 
-
37 template<typename T>
-
38 double Vector4<T>::Magnitude() const
-
39 {
-
40  return sqrt(SqrMagnitude());
-
41 }
-
42 
-
43 
- -
45 {
-
46  #ifndef _EULE_NO_INTRINSICS_
-
47 
-
48  // Load vectors into registers
-
49  __m256d __vector_self = _mm256_set_pd(w, z, y, x);
-
50  __m256d __vector_scalar = _mm256_set_pd(scalar.w, scalar.z, scalar.y, scalar.x);
-
51 
-
52  // Multiply them
-
53  __m256d __product = _mm256_mul_pd(__vector_self, __vector_scalar);
-
54 
-
55  // Retrieve result
-
56  double result[4];
-
57  _mm256_storeu_pd(result, __product);
-
58 
-
59  // Return value
-
60  return Vector4<double>(
-
61  result[0],
-
62  result[1],
-
63  result[2],
-
64  result[3]
-
65  );
-
66 
-
67  #else
-
68 
-
69  return Vector4<double>(
-
70  x * scalar.x,
-
71  y * scalar.y,
-
72  z * scalar.z,
-
73  w * scalar.w
-
74  );
-
75  #endif
-
76 }
-
77 
-
78 
- -
80 {
-
81  return Vector4<int>(
-
82  x * scalar.x,
-
83  y * scalar.y,
-
84  z * scalar.z,
-
85  w * scalar.w
-
86  );
-
87 }
-
88 
-
89 
-
90 
-
91 template<typename T>
- -
93 {
-
94  Vector4<double> norm(x, y, z, w);
-
95  norm.NormalizeSelf();
-
96 
-
97  return norm;
-
98 }
-
99 
-
100 // Method to normalize a Vector43d
- -
102 {
-
103  double length = Magnitude();
-
104 
-
105  // Prevent division by 0
-
106  if (length == 0)
-
107  {
-
108  x = 0;
-
109  y = 0;
-
110  z = 0;
-
111  w = 0;
-
112  }
-
113  else
-
114  {
-
115  #ifndef _EULE_NO_INTRINSICS_
-
116 
-
117  // Load vector and length into registers
-
118  __m256d __vec = _mm256_set_pd(w, z, y, x);
-
119  __m256d __len = _mm256_set1_pd(length);
-
120 
-
121  // Divide
-
122  __m256d __prod = _mm256_div_pd(__vec, __len);
-
123 
-
124  // Extract and set values
-
125  double prod[4];
-
126  _mm256_storeu_pd(prod, __prod);
-
127 
-
128  x = prod[0];
-
129  y = prod[1];
-
130  z = prod[2];
-
131  w = prod[3];
-
132 
-
133  #else
-
134 
-
135  x /= length;
-
136  y /= length;
-
137  z /= length;
-
138  w /= length;
-
139 
-
140  #endif
-
141  }
-
142 
-
143  return;
-
144 }
-
145 
-
146 // You can't normalize an int vector, ffs!
-
147 // But we need an implementation for T=int
- -
149 {
-
150  std::cerr << "Stop normalizing int-vectors!!" << std::endl;
-
151  x = 0;
-
152  y = 0;
-
153  z = 0;
-
154  w = 0;
-
155 
-
156  return;
-
157 }
-
158 
-
159 
-
160 
-
161 template<typename T>
-
162 bool Vector4<T>::Similar(const Vector4<T>& other, double epsilon) const
-
163 {
-
164  return
-
165  (::Math::Similar(x, other.x, epsilon)) &&
-
166  (::Math::Similar(y, other.y, epsilon)) &&
-
167  (::Math::Similar(z, other.z, epsilon)) &&
-
168  (::Math::Similar(w, other.w, epsilon))
-
169  ;
-
170 }
-
171 
-
172 template<typename T>
- -
174 {
-
175  return Vector4<int>((int)x, (int)y, (int)z, (int)w);
-
176 }
-
177 
-
178 template<typename T>
- -
180 {
-
181  return Vector4<double>((double)x, (double)y, (double)z, (double)w);
-
182 }
-
183 
-
184 template<typename T>
-
185 T& Vector4<T>::operator[](std::size_t idx)
-
186 {
-
187  switch (idx)
-
188  {
-
189  case 0:
-
190  return x;
-
191  case 1:
-
192  return y;
-
193  case 2:
-
194  return z;
-
195  case 3:
-
196  return w;
-
197  default:
-
198  throw std::out_of_range("Array descriptor on Vector4<T> out of range!");
-
199  }
-
200 }
-
201 
-
202 template<typename T>
-
203 const T& Vector4<T>::operator[](std::size_t idx) const
-
204 {
-
205  switch (idx)
-
206  {
-
207  case 0:
-
208  return x;
-
209  case 1:
-
210  return y;
-
211  case 2:
-
212  return z;
-
213  case 3:
-
214  return w;
-
215  default:
-
216  throw std::out_of_range("Array descriptor on Vector4<T> out of range!");
-
217  }
-
218 }
-
219 
-
220 
-
221 
-
222 // Good, optimized chad version for doubles
-
223 void Vector4<double>::LerpSelf(const Vector4<double>& other, double t)
-
224 {
-
225  const double it = 1.0 - t; // Inverse t
-
226 
-
227  #ifndef _EULE_NO_INTRINSICS_
-
228 
-
229  // Move vector components and factors into registers
-
230  __m256d __vector_self = _mm256_set_pd(w, z, y, x);
-
231  __m256d __vector_other = _mm256_set_pd(other.w, other.z, other.y, other.x);
-
232  __m256d __t = _mm256_set1_pd(t);
-
233  __m256d __it = _mm256_set1_pd(it); // Inverse t
-
234 
-
235  // Procedure:
-
236  // (__vector_self * __it) + (__vector_other * __t)
-
237 
-
238  __m256d __sum = _mm256_set1_pd(0); // this will hold the sum of the two multiplications
-
239 
-
240  __sum = _mm256_fmadd_pd(__vector_self, __it, __sum);
-
241  __sum = _mm256_fmadd_pd(__vector_other, __t, __sum);
-
242 
-
243  // Retrieve result, and apply it
-
244  double sum[4];
-
245  _mm256_storeu_pd(sum, __sum);
-
246 
-
247  x = sum[0];
-
248  y = sum[1];
-
249  z = sum[2];
-
250  w = sum[3];
-
251 
-
252  #else
-
253 
-
254  x = it * x + t * other.x;
-
255  y = it * y + t * other.y;
-
256  z = it * z + t * other.z;
-
257  w = it * w + t * other.w;
-
258 
-
259  #endif
-
260 
-
261  return;
-
262 }
-
263 
-
264 
-
265 
-
266 // Slow, lame version for intcels
-
267 void Vector4<int>::LerpSelf(const Vector4<int>& other, double t)
-
268 {
-
269  const double it = 1.0 - t;
-
270 
-
271  x = (int)(it * (double)x + t * (double)other.x);
-
272  y = (int)(it * (double)y + t * (double)other.y);
-
273  z = (int)(it * (double)z + t * (double)other.z);
-
274  w = (int)(it * (double)w + t * (double)other.w);
-
275 
-
276  return;
-
277 }
-
278 
-
279 Vector4<double> Vector4<double>::Lerp(const Vector4<double>& other, double t) const
-
280 {
-
281  Vector4d copy(*this);
-
282  copy.LerpSelf(other, t);
-
283 
-
284  return copy;
-
285 }
-
286 
-
287 Vector4<double> Vector4<int>::Lerp(const Vector4<int>& other, double t) const
-
288 {
-
289  Vector4d copy(this->ToDouble());
-
290  copy.LerpSelf(other.ToDouble(), t);
-
291 
-
292  return copy;
-
293 }
-
294 
-
295 
-
296 
- -
298 {
-
299  #ifndef _EULE_NO_INTRINSICS_
-
300 
-
301  // Move vector components and factors into registers
-
302  __m256d __vector_self = _mm256_set_pd(w, z, y, x);
-
303  __m256d __vector_other = _mm256_set_pd(other.w, other.z, other.y, other.x);
-
304 
-
305  // Add the components
-
306  __m256d __sum = _mm256_add_pd(__vector_self, __vector_other);
-
307 
-
308  // Retrieve and return these values
-
309  double sum[4];
-
310  _mm256_storeu_pd(sum, __sum);
-
311 
-
312  return Vector4<double>(
-
313  sum[0],
-
314  sum[1],
-
315  sum[2],
-
316  sum[3]
-
317  );
-
318 
-
319  #else
-
320 
-
321  return Vector4<double>(
-
322  x + other.x,
-
323  y + other.y,
-
324  z + other.z,
-
325  w + other.w
-
326  );
-
327  #endif
-
328 }
-
329 
-
330 template<typename T>
- -
332 {
-
333  return Vector4<T>(
-
334  x + other.x,
-
335  y + other.y,
-
336  z + other.z,
-
337  w + other.w
-
338  );
-
339 }
-
340 
-
341 
-
342 
- -
344 {
-
345  #ifndef _EULE_NO_INTRINSICS_
-
346 
-
347  // Move vector components and factors into registers
-
348  __m256d __vector_self = _mm256_set_pd(w, z, y, x);
-
349  __m256d __vector_other = _mm256_set_pd(other.w, other.z, other.y, other.x);
-
350 
-
351  // Add the components
-
352  __m256d __sum = _mm256_add_pd(__vector_self, __vector_other);
-
353 
-
354  // Retrieve and apply these values
-
355  double sum[4];
-
356  _mm256_storeu_pd(sum, __sum);
-
357 
-
358  x = sum[0];
-
359  y = sum[1];
-
360  z = sum[2];
-
361  w = sum[3];
-
362 
-
363  #else
-
364 
-
365  x += other.x;
-
366  y += other.y;
-
367  z += other.z;
-
368  w += other.w;
-
369 
-
370  #endif
-
371 
-
372  return;
-
373 }
-
374 
-
375 template<typename T>
- -
377 {
-
378  x += other.x;
-
379  y += other.y;
-
380  z += other.z;
-
381  w += other.w;
-
382  return;
-
383 }
-
384 
-
385 
-
386 
- -
388 {
-
389  #ifndef _EULE_NO_INTRINSICS_
-
390 
-
391  // Move vector components and factors into registers
-
392  __m256d __vector_self = _mm256_set_pd(w, z, y, x);
-
393  __m256d __vector_other = _mm256_set_pd(other.w, other.z, other.y, other.x);
-
394 
-
395  // Subtract the components
-
396  __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other);
-
397 
-
398  // Retrieve and return these values
-
399  double diff[4];
-
400  _mm256_storeu_pd(diff, __diff);
-
401 
-
402  return Vector4<double>(
-
403  diff[0],
-
404  diff[1],
-
405  diff[2],
-
406  diff[3]
-
407  );
-
408 
-
409  #else
-
410 
-
411  return Vector4<double>(
-
412  x - other.x,
-
413  y - other.y,
-
414  z - other.z,
-
415  w - other.w
-
416  );
-
417  #endif
-
418 }
-
419 
-
420 template<typename T>
- -
422 {
-
423  return Vector4<T>(
-
424  x - other.x,
-
425  y - other.y,
-
426  z - other.z,
-
427  w - other.w
-
428  );
-
429 }
-
430 
-
431 
-
432 
- -
434 {
-
435  #ifndef _EULE_NO_INTRINSICS_
-
436 
-
437  // Move vector components and factors into registers
-
438  __m256d __vector_self = _mm256_set_pd(w, z, y, x);
-
439  __m256d __vector_other = _mm256_set_pd(other.w, other.z, other.y, other.x);
-
440 
-
441  // Subtract the components
-
442  __m256d __diff = _mm256_sub_pd(__vector_self, __vector_other);
-
443 
-
444  // Retrieve and apply these values
-
445  double diff[4];
-
446  _mm256_storeu_pd(diff, __diff);
-
447 
-
448  x = diff[0];
-
449  y = diff[1];
-
450  z = diff[2];
-
451  w = diff[3];
-
452 
-
453  #else
-
454 
-
455  x -= other.x;
-
456  y -= other.y;
-
457  z -= other.z;
-
458  w -= other.w;
-
459 
-
460  #endif
-
461 
-
462  return;
-
463 }
-
464 
-
465 template<typename T>
- -
467 {
-
468  x -= other.x;
-
469  y -= other.y;
-
470  z -= other.z;
-
471  w -= other.w;
-
472  return;
-
473 }
-
474 
-
475 
-
476 
-
477 Vector4<double> Vector4<double>::operator*(const double scale) const
-
478 {
-
479  #ifndef _EULE_NO_INTRINSICS_
-
480 
-
481  // Move vector components and factors into registers
-
482  __m256d __vector_self = _mm256_set_pd(w, z, y, x);
-
483  __m256d __scalar = _mm256_set1_pd(scale);
-
484 
-
485  // Multiply the components
-
486  __m256d __prod = _mm256_mul_pd(__vector_self, __scalar);
-
487 
-
488  // Retrieve and return these values
-
489  double prod[4];
-
490  _mm256_storeu_pd(prod, __prod);
-
491 
-
492  return Vector4<double>(
-
493  prod[0],
-
494  prod[1],
-
495  prod[2],
-
496  prod[3]
-
497  );
-
498 
-
499  #else
-
500 
-
501  return Vector4<double>(
-
502  x * scale,
-
503  y * scale,
-
504  z * scale,
-
505  w * scale
-
506  );
-
507 
-
508  #endif
-
509 }
-
510 
-
511 template<typename T>
-
512 Vector4<T> Vector4<T>::operator*(const T scale) const
-
513 {
-
514  return Vector4<T>(
-
515  x * scale,
-
516  y * scale,
-
517  z * scale,
-
518  w * scale
-
519  );
-
520 }
-
521 
-
522 
-
523 
-
524 void Vector4<double>::operator*=(const double scale)
-
525 {
-
526  #ifndef _EULE_NO_INTRINSICS_
-
527 
-
528  // Move vector components and factors into registers
-
529  __m256d __vector_self = _mm256_set_pd(w, z, y, x);
-
530  __m256d __scalar = _mm256_set1_pd(scale);
-
531 
-
532  // Multiply the components
-
533  __m256d __prod = _mm256_mul_pd(__vector_self, __scalar);
-
534 
-
535  // Retrieve and apply these values
-
536  double prod[4];
-
537  _mm256_storeu_pd(prod, __prod);
-
538 
-
539  x = prod[0];
-
540  y = prod[1];
-
541  z = prod[2];
-
542  w = prod[3];
-
543 
-
544  #else
-
545 
-
546  x *= scale;
-
547  y *= scale;
-
548  z *= scale;
-
549  w *= scale;
-
550 
-
551  #endif
-
552 
-
553  return;
-
554 }
-
555 
-
556 template<typename T>
-
557 void Vector4<T>::operator*=(const T scale)
-
558 {
-
559  x *= scale;
-
560  y *= scale;
-
561  z *= scale;
-
562  w *= scale;
-
563  return;
-
564 }
-
565 
-
566 
-
567 
-
568 Vector4<double> Vector4<double>::operator/(const double scale) const
-
569 {
-
570  #ifndef _EULE_NO_INTRINSICS_
-
571 
-
572  // Move vector components and factors into registers
-
573  __m256d __vector_self = _mm256_set_pd(w, z, y, x);
-
574  __m256d __scalar = _mm256_set1_pd(scale);
-
575 
-
576  // Divide the components
-
577  __m256d __prod = _mm256_div_pd(__vector_self, __scalar);
-
578 
-
579  // Retrieve and return these values
-
580  double prod[4];
-
581  _mm256_storeu_pd(prod, __prod);
-
582 
-
583  return Vector4<double>(
-
584  prod[0],
-
585  prod[1],
-
586  prod[2],
-
587  prod[3]
-
588  );
-
589 
-
590  #else
-
591 
-
592  return Vector4<double>(
-
593  x / scale,
-
594  y / scale,
-
595  z / scale,
-
596  w / scale
-
597  );
-
598 
-
599  #endif
-
600 }
-
601 
-
602 template<typename T>
-
603 Vector4<T> Vector4<T>::operator/(const T scale) const
-
604 {
-
605  return Vector4<T>(
-
606  x / scale,
-
607  y / scale,
-
608  z / scale,
-
609  w / scale
-
610  );
-
611 }
-
612 
-
613 
-
614 
-
615 void Vector4<double>::operator/=(const double scale)
-
616 {
-
617  #ifndef _EULE_NO_INTRINSICS_
-
618 
-
619  // Move vector components and factors into registers
-
620  __m256d __vector_self = _mm256_set_pd(w, z, y, x);
-
621  __m256d __scalar = _mm256_set1_pd(scale);
-
622 
-
623  // Divide the components
-
624  __m256d __prod = _mm256_div_pd(__vector_self, __scalar);
-
625 
-
626  // Retrieve and apply these values
-
627  double prod[4];
-
628  _mm256_storeu_pd(prod, __prod);
-
629 
-
630  x = prod[0];
-
631  y = prod[1];
-
632  z = prod[2];
-
633  w = prod[3];
-
634 
-
635  #else
-
636 
-
637  x /= scale;
-
638  y /= scale;
-
639  z /= scale;
-
640  w /= scale;
-
641 
-
642  #endif
-
643  return;
-
644 }
-
645 
-
646 template<typename T>
-
647 void Vector4<T>::operator/=(const T scale)
-
648 {
-
649  x /= scale;
-
650  y /= scale;
-
651  z /= scale;
-
652  w /= scale;
-
653  return;
-
654 }
-
655 
-
656 
-
657 
-
658 template<typename T>
-
659 bool Vector4<T>::operator==(const Vector4<T>& other) const
-
660 {
-
661  return
-
662  (x == other.x) &&
-
663  (y == other.y) &&
-
664  (z == other.z) &&
-
665  (w == other.w);
-
666 }
-
667 
-
668 
-
669 
-
670 // Good, optimized chad version for doubles
- -
672 {
-
673  Vector4<double> newVec;
-
674 
-
675  newVec.x = (mat[0][0] * x) + (mat[0][1] * y) + (mat[0][2] * z) + (mat[0][3] * w);
-
676  newVec.y = (mat[1][0] * x) + (mat[1][1] * y) + (mat[1][2] * z) + (mat[1][3] * w);
-
677  newVec.z = (mat[2][0] * x) + (mat[2][1] * y) + (mat[2][2] * z) + (mat[2][3] * w);
-
678  newVec.w = (mat[3][0] * x) + (mat[3][1] * y) + (mat[3][2] * z) + (mat[3][3] * w);
-
679 
-
680  return newVec;
-
681 }
-
682 
-
683 // Slow, lame version for intcels
- -
685 {
-
686  Vector4<double> newVec;
-
687 
-
688  newVec.x = (mat[0][0] * x) + (mat[0][1] * y) + (mat[0][2] * z) + (mat[0][3] * w);
-
689  newVec.y = (mat[1][0] * x) + (mat[1][1] * y) + (mat[1][2] * z) + (mat[1][3] * w);
-
690  newVec.z = (mat[2][0] * x) + (mat[2][1] * y) + (mat[2][2] * z) + (mat[2][3] * w);
-
691  newVec.w = (mat[3][0] * x) + (mat[3][1] * y) + (mat[3][2] * z) + (mat[3][3] * w);
-
692 
-
693  return Vector4<int>(
-
694  (int)newVec.x,
-
695  (int)newVec.y,
-
696  (int)newVec.z,
-
697  (int)newVec.w
-
698  );
-
699 }
-
700 
-
701 
-
702 
-
703 // Good, optimized chad version for doubles
-
704 void Vector4<double>::operator*=(const Matrix4x4& mat)
-
705 {
-
706  Vector4<double> buffer = *this;
-
707 
-
708  // Should this still be reversed...? like, instead of mat[x][y], use mat[y][m]
-
709  // idk right now. check that if something doesn't work
-
710  x = (mat[0][0] * buffer.x) + (mat[0][1] * buffer.y) + (mat[0][2] * buffer.z) + (mat[0][3] * buffer.w);
-
711  y = (mat[1][0] * buffer.x) + (mat[1][1] * buffer.y) + (mat[1][2] * buffer.z) + (mat[1][3] * buffer.w);
-
712  z = (mat[2][0] * buffer.x) + (mat[2][1] * buffer.y) + (mat[2][2] * buffer.z) + (mat[2][3] * buffer.w);
-
713  w = (mat[3][0] * buffer.x) + (mat[3][1] * buffer.y) + (mat[3][2] * buffer.z) + (mat[3][3] * buffer.w);
-
714 
-
715  return;
-
716 }
-
717 
-
718 template<typename T>
- -
720 {
-
721  return Vector4<T>(
-
722  -x,
-
723  -y,
-
724  -z,
-
725  -w
-
726  );
-
727 }
-
728 
-
729 template<typename T>
- -
731 {
-
732  x = other.x;
-
733  y = other.y;
-
734  z = other.z;
-
735  w = other.w;
-
736 
-
737  return;
-
738 }
-
739 
-
740 template<typename T>
-
741 void Vector4<T>::operator=(Vector4<T>&& other) noexcept
-
742 {
-
743  x = std::move(other.x);
-
744  y = std::move(other.y);
-
745  z = std::move(other.z);
-
746  w = std::move(other.w);
-
747 
-
748  return;
-
749 }
-
750 
-
751 // Slow, lame version for intcels
- -
753 {
-
754  Vector4<double> buffer(x, y, z, w);
-
755 
-
756  // Should this still be reversed...? like, instead of mat[x][y], use mat[y][m]
-
757  // idk right now. check that if something doesn't work
-
758  x = (int)((mat[0][0] * buffer.x) + (mat[0][1] * buffer.y) + (mat[0][2] * buffer.z) + (mat[0][3] * buffer.w));
-
759  y = (int)((mat[1][0] * buffer.x) + (mat[1][1] * buffer.y) + (mat[1][2] * buffer.z) + (mat[1][3] * buffer.w));
-
760  z = (int)((mat[2][0] * buffer.x) + (mat[2][1] * buffer.y) + (mat[2][2] * buffer.z) + (mat[2][3] * buffer.w));
-
761  w = (int)((mat[3][0] * buffer.x) + (mat[3][1] * buffer.y) + (mat[3][2] * buffer.z) + (mat[3][3] * buffer.w));
-
762 
-
763  return;
-
764 }
-
765 
-
766 template<typename T>
-
767 bool Vector4<T>::operator!=(const Vector4<T>& other) const
-
768 {
-
769  return !operator==(other);
-
770 }
-
771 
-
772 #include "Vector2.h"
-
773 #include "Vector3.h"
-
774 template<typename T>
- -
776 {
-
777  return Vector2<T>(x, y);
-
778 }
-
779 
-
780 template<typename T>
- -
782 {
-
783  return Vector3<T>(x, y, z);
-
784 }
-
785 
-
786 template class Vector4<int>;
-
787 template class Vector4<double>;
-
788 
-
789 // Some handy predefines
-
790 template <typename T>
-
791 const Vector4<double> Vector4<T>::up(0, 1, 0, 0);
-
792 template <typename T>
-
793 const Vector4<double> Vector4<T>::down(0, -1, 0, 0);
-
794 template <typename T>
-
795 const Vector4<double> Vector4<T>::right(1, 0, 0, 0);
-
796 template <typename T>
-
797 const Vector4<double> Vector4<T>::left(-1, 0, 0, 0);
-
798 template <typename T>
-
799 const Vector4<double> Vector4<T>::forward(1, 0, 0, 0);
-
800 template <typename T>
-
801 const Vector4<double> Vector4<T>::backward(-1, 0, 0, 0);
-
802 template <typename T>
-
803 const Vector4<double> Vector4<T>::future(0, 0, 0, 1);
-
804 template <typename T>
-
805 const Vector4<double> Vector4<T>::past(0, 0, 0, -1);
-
806 template <typename T>
-
807 const Vector4<double> Vector4<T>::one(1, 1, 1, 1);
-
808 template <typename T>
-
809 const Vector4<double> Vector4<T>::zero(0, 0, 0, 0);
-
-
void NormalizeSelf()
Will normalize this vector.
Definition: Vector4.cpp:148
-
Representation of a 3d vector.
Definition: Matrix4x4.h:9
- - - -
void LerpSelf(const Vector4< T > &other, double t)
Will lerp itself towards other by t.
Definition: Vector4.cpp:267
- - -
A matrix 4x4 class representing a 3d transformation.
Definition: Matrix4x4.h:36
-
Vector4< double > ToDouble() const
Will convert this vector to a Vector4d.
Definition: Vector4.cpp:179
- -
Representation of a 2d vector.
Definition: Vector2.h:14
-
double SqrMagnitude() const
Will compute the square magnitude.
Definition: Vector4.cpp:31
- - -
Definition: Collider.h:4
-
Representation of a 4d vector.
Definition: Vector2.h:8
- - - - diff --git a/Doxygen/build/Vector4_8h.html b/Doxygen/build/Vector4_8h.html deleted file mode 100644 index ea2127f..0000000 --- a/Doxygen/build/Vector4_8h.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Vector4.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Vector4.h File Reference
-
-
-
#include <cstdlib>
-#include <iomanip>
-#include <ostream>
-#include <sstream>
-#include "Matrix4x4.h"
-
-Include dependency graph for Vector4.h:
-
-
- - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - -

-Classes

class  Eule::Vector2< T >
 Representation of a 2d vector. More...
 
class  Eule::Vector3< T >
 Representation of a 3d vector. More...
 
class  Eule::Vector4< T >
 Representation of a 4d vector. More...
 
- - - -

-Namespaces

 Eule
 
- - - - - -

-Typedefs

typedef Vector4< int > Eule::Vector4i
 
typedef Vector4< double > Eule::Vector4d
 
-
- - - - diff --git a/Doxygen/build/Vector4_8h__dep__incl.map b/Doxygen/build/Vector4_8h__dep__incl.map deleted file mode 100644 index 2095a62..0000000 --- a/Doxygen/build/Vector4_8h__dep__incl.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/Doxygen/build/Vector4_8h__dep__incl.md5 b/Doxygen/build/Vector4_8h__dep__incl.md5 deleted file mode 100644 index 6c0771d..0000000 --- a/Doxygen/build/Vector4_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -519ab42af69ca3826341022de9cbd030 \ No newline at end of file diff --git a/Doxygen/build/Vector4_8h__dep__incl.png b/Doxygen/build/Vector4_8h__dep__incl.png deleted file mode 100644 index a5df998b175cf2be509888d8704dceb6e0fa9958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11897 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 u!q5Yr{69(DRIG?0FA~h3^vXY+ - - - - - - - - - diff --git a/Doxygen/build/Vector4_8h__incl.md5 b/Doxygen/build/Vector4_8h__incl.md5 deleted file mode 100644 index 3382afb..0000000 --- a/Doxygen/build/Vector4_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ad580b6dad739ccc43a8731390726116 \ No newline at end of file diff --git a/Doxygen/build/Vector4_8h__incl.png b/Doxygen/build/Vector4_8h__incl.png deleted file mode 100644 index 8d771f75b8edd1c7394c90bf02d13f6e4c2a0fc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17346 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�F?YUoxt!^+iStX>T#4`cp~fk#A4EkZ_(p$;#S= zaV2jr1Se?MUp0K}Zdx6DvNxvtDk(b~Pj#eZr-@6gM4q@&fdP5B)lkUjZ)rLrXqgph z!Y9!=kgBA#7mr12>X`|4=hka(Ep+?~a@e}F0Q5G@Dc}G*X+xSz?|gO1S5mUy8=sld zBDK)rf{7jH12G}e?rq6XrUEkQV#vphvO5kZZ*IEXW2}$1dm9Z3`-nS89gL;rv}g^Z zwj0~GxFKPfQ84VZ^wD_Wt)YF+nhG^EsIoyi3?{w6-AlNGfs79#anWr@}ltG8^-HY!5sgK5aohR$G7a{xn&os$S?CmT7jM@QSQ`&T->@^7HOiq{^!TvsSu&pCHSkoyDZ1@94%fw(pkFw`yTiea^^Aam+x1GOF(txk5OUU_CD}cAQR{f19 z9ea5A?X|G#*GZi}E6;!m)vA~hOO=e>-Bk=x5AFHm0b@;pAzf@rZZfqF831#FBB!J_ zx{Dly$|J5<%saI7faV})`j#|Jp5MADKUnKH$)j5t$?t6L_%0Cx72{Y6q}GRPLodyY z)Kr}(!;vPa0n;m{)0!1OIJy{6hM9sRxQHpjJ71kzNI;L9J;${!2hN$H&N+rVaE1<=B`-0U|11ky8>_`;OL>; z#(m@f`RP_#04o$wT+9tz2plEtRGl*sVs?8w41mrMN&!58jA8r~fq3}vAriLKZ3MVu z5avlPB7Xe9wX(7*19%!35xDw2S3OkZ~gTpTzGnIHHgEie`Acy;OgH8xgrZt3E9s~1*!4GX$nT|R=T zH~r(|;}Gr+m;-H6QB{5I@=h+StUTlaP>5LsAkw?x6|Z#_x1&pl;GfNwEAjfpW-$u|;#BqtbhLd3X$z zl$0K@v3&}q6bM5STR}w3B`_&kdV1=FT-V#jhpo1nwZ1+FYKO1w9UW?BKLGwN`CIP_ zlXu(2l~yw)`C64orcB0S=5Te;=j`GlMzdpJAVR0nfIuYxEOGJwf&Pg0V{IE*QlsAs5(xS2%iA06)Ka* z*dv54I^|#_f1&*dQkV&Z7P!OxgM-&T=(rlDrl#o&Y&!>oQ2h$RfHNiu2?;p`#fyyc zcSDjq{a|@;pzV$`?ieun8$v5e19a+{d9}a4|7TB8=lz?A0T`A=+P9N1kYsO-jRCXD zM0iC+5P;r=jyHNZ+aVdUCt=!8a+bcu~}JJO~445CBj%b9o7566g05F1W`|p@5ify4Bf&nAEPiM5U9Gy&jmoh zgt!DGS$YPBK^UFZ(9&WM5FkS|t;D$BX`ES522LG<`ri5oThaVu)z8;d)YLG?hJ}xh z|KN4WO%M?fd};?dw~r!A)JUh=9Z5+^poE+*Pi?**whOshpV@PgM&e}77-J}{O;ax+6$t#wl+7OTX$gie03lh zNps9EEJVh|eWDbwZ0hd51=;8GKG-!#l>C8tZSL<^coX+Dnc~i!mgZ)Zh0gF!AOT@` z8pYGo6VOgM){Bf1I9*g20Pc%_gq%?Q-;7qenuvOuJ&sygJkU1!KV$i-T#j;vb?qV7 z2j0NM!t#d6YEW?KTUv%0|BTg#2#oN85Q!X|M(zT{8?!4b0U!kgqzKxbpK$>&%A5ql z{GY#O{{Is;`fuO*^1UBzYHdXYH4id^`s34b#Pk>7fYJrVo|wn~{7HeM3k(Z`DgV&n zV|gRk@!WK+Ba(6Q$Dz1EMn;AJiXwJ+Jwo6ewGRnJ&~0oLbgevl_6!9^$Ack8wMgG_lz>C8IuRk!WehnoX$Go-x{f#L=JEh;)r z6WlYm&AbE%SoFcGHOkFM#`N#w%FD|S=WCI{oOp~`YC0h@^GS3g$LAq1F9_kJGj6E2 zWbG0De}DSJf1fw;Khwtf-nSwnK^)N5-flyUejm_wAr9>-$dBb>7Q*;hD~w`qfwc|Y zAczWs&s0ECV{a6UjhP@u7`+KEiCA(d#9evz`oAQN{HO^e7w~_bUN&HaDdse3w5OP3 i&yb&k!PkC`^0(M6u3WbM8a|W*@#6VQi2^Y_@BagMaI1R& diff --git a/Doxygen/build/Vector4_8h_source.html b/Doxygen/build/Vector4_8h_source.html deleted file mode 100644 index 9f2680b..0000000 --- a/Doxygen/build/Vector4_8h_source.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Vector4.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Vector4.h
-
-
-Go to the documentation of this file.
1 #pragma once
-
2 #include <cstdlib>
-
3 #include <iomanip>
-
4 #include <ostream>
-
5 #include <sstream>
-
6 #include "Matrix4x4.h"
-
7 
-
8 namespace Eule
-
9 {
-
10  template <typename T> class Vector2;
-
11  template <typename T> class Vector3;
-
12 
-
16  template <typename T>
-
17  class Vector4
-
18  {
-
19  public:
-
20  Vector4() : x{ 0 }, y{ 0 }, z{ 0 }, w{ 0 } {}
-
21  Vector4(T _x, T _y, T _z, T _w) : x{ _x }, y{ _y }, z{ _z }, w{ _w } {}
-
22  Vector4(const Vector4<T>& other) = default;
-
23  Vector4(Vector4<T>&& other) noexcept = default;
-
24 
-
26  double SqrMagnitude() const;
-
27 
-
29  double Magnitude() const;
-
30 
-
32  [[nodiscard]] Vector4<double> Normalize() const;
-
33 
-
35  void NormalizeSelf();
-
36 
-
38  [[nodiscard]] Vector4<T> VectorScale(const Vector4<T>& scalar) const;
-
39 
-
41  void LerpSelf(const Vector4<T>& other, double t);
-
42 
-
44  [[nodiscard]] Vector4<double> Lerp(const Vector4<T>& other, double t) const;
-
45 
-
47  [[nodiscard]] bool Similar(const Vector4<T>& other, double epsilon = 0.00001) const;
-
48 
-
50  [[nodiscard]] Vector4<int> ToInt() const;
-
51 
-
53  [[nodiscard]] Vector4<double> ToDouble() const;
-
54 
-
55  T& operator[](std::size_t idx);
-
56  const T& operator[](std::size_t idx) const;
-
57 
-
58  Vector4<T> operator+(const Vector4<T>& other) const;
-
59  void operator+=(const Vector4<T>& other);
-
60  Vector4<T> operator-(const Vector4<T>& other) const;
-
61  void operator-=(const Vector4<T>& other);
-
62  Vector4<T> operator*(const T scale) const;
-
63  void operator*=(const T scale);
-
64  Vector4<T> operator/(const T scale) const;
-
65  void operator/=(const T scale);
-
66  Vector4<T> operator*(const Matrix4x4& mat) const;
-
67  void operator*=(const Matrix4x4& mat);
-
68  Vector4<T> operator-() const;
-
69 
-
70  operator Vector2<T>() const;
-
71  operator Vector3<T>() const;
-
72 
-
73  void operator=(const Vector4<T>& other);
-
74  void operator=(Vector4<T>&& other) noexcept;
-
75 
-
76  bool operator==(const Vector4<T>& other) const;
-
77  bool operator!=(const Vector4<T>& other) const;
-
78 
-
79  friend std::ostream& operator << (std::ostream& os, const Vector4<T>& v)
-
80  {
-
81  return os << "[x: " << v.x << " y: " << v.y << " z: " << v.z << " w: " << v.w << "]";
-
82  }
-
83  friend std::wostream& operator << (std::wostream& os, const Vector4<T>& v)
-
84  {
-
85  return os << L"[x: " << v.x << L" y: " << v.y << L" z: " << v.z << L" w: " << v.w << L"]";
-
86  }
-
87 
-
88  T x;
-
89  T y;
-
90  T z;
-
91  T w;
-
92 
-
93  // Some handy predefines
-
94  static const Vector4<double> up;
-
95  static const Vector4<double> down;
-
96  static const Vector4<double> right;
-
97  static const Vector4<double> left;
-
98  static const Vector4<double> forward;
-
99  static const Vector4<double> backward;
-
100  static const Vector4<double> future;
-
101  static const Vector4<double> past;
-
102  static const Vector4<double> one;
-
103  static const Vector4<double> zero;
-
104  };
-
105 
- - -
108 }
-
-
Vector4< int > ToInt() const
Will convert this vector to a Vector4i.
Definition: Vector4.cpp:173
-
Vector4(T _x, T _y, T _z, T _w)
Definition: Vector4.h:21
-
void operator+=(const Vector4< T > &other)
Definition: Vector4.cpp:376
-
Vector4< T > operator/(const T scale) const
Definition: Vector4.cpp:603
-
Vector4< T > operator*(const T scale) const
Definition: Vector4.cpp:512
-
void NormalizeSelf()
Will normalize this vector.
Definition: Vector4.cpp:148
- -
static const Vector4< double > backward
Definition: Vector4.h:99
- -
void operator=(const Vector4< T > &other)
Conversion method.
Definition: Vector4.cpp:730
-
void operator-=(const Vector4< T > &other)
Definition: Vector4.cpp:466
-
Vector4< double > Normalize() const
Will return the normalization of this vector.
Definition: Vector4.cpp:92
- -
void operator*=(const T scale)
Definition: Vector4.cpp:557
-
Vector4< double > Vector4d
Definition: Vector4.h:107
-
Vector4< T > VectorScale(const Vector4< T > &scalar) const
Will scale self.n by scalar.n.
Definition: Vector4.cpp:79
-
Vector4< T > operator-() const
Definition: Vector4.cpp:719
-
Vector4< double > Lerp(const Vector4< T > &other, double t) const
Will return a lerp result between this and another vector.
Definition: Vector4.cpp:287
-
static const Vector4< double > one
Definition: Vector4.h:102
-
void LerpSelf(const Vector4< T > &other, double t)
Will lerp itself towards other by t.
Definition: Vector4.cpp:267
- -
static const Vector4< double > forward
Definition: Vector4.h:98
-
void operator/=(const T scale)
Definition: Vector4.cpp:647
- -
static const Vector4< double > down
Definition: Vector4.h:95
-
Vector4< T > operator+(const Vector4< T > &other) const
Definition: Vector4.cpp:331
-
T & operator[](std::size_t idx)
Definition: Vector4.cpp:185
-
Vector4< double > ToDouble() const
Will convert this vector to a Vector4d.
Definition: Vector4.cpp:179
-
Vector4< int > Vector4i
Definition: Vector4.h:106
-
bool operator!=(const Vector4< T > &other) const
Definition: Vector4.cpp:767
-
bool Similar(const Vector4< T > &other, double epsilon=0.00001) const
Will compare if two vectors are similar to a certain epsilon value.
Definition: Vector4.cpp:162
-
double Magnitude() const
Will compute the magnitude.
Definition: Vector4.cpp:38
-
static const Vector4< double > future
Definition: Vector4.h:100
-
bool operator==(const Vector4< T > &other) const
Definition: Vector4.cpp:659
-
static const Vector4< double > zero
Definition: Vector4.h:103
-
double SqrMagnitude() const
Will compute the square magnitude.
Definition: Vector4.cpp:31
-
static const Vector4< double > up
Definition: Vector4.h:94
-
static const Vector4< double > past
Definition: Vector4.h:101
-
friend std::ostream & operator<<(std::ostream &os, const Vector4< T > &v)
Definition: Vector4.h:79
- -
static const Vector4< double > left
Definition: Vector4.h:97
-
Definition: Collider.h:4
-
static const Vector4< double > right
Definition: Vector4.h:96
-
Representation of a 4d vector.
Definition: Vector2.h:8
- - - - diff --git a/Doxygen/build/annotated.html b/Doxygen/build/annotated.html deleted file mode 100644 index 801b6e4..0000000 --- a/Doxygen/build/annotated.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class List - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class List
-
-
-
Here are the classes, structs, unions and interfaces with brief descriptions:
-
[detail level 12]
- - - - - - - - - - -
 NEule
 CColliderAbstract class of a collider domain
 CMathMath utility class containing basic functions
 CMatrix4x4A matrix 4x4 class representing a 3d transformation
 CQuaternion3D rotation representation
 CRectTrivial data structure representing a rectangle
 CTrapazoidalPrismColliderA collider describing a trapazoidal prism
 CVector2Representation of a 2d vector
 CVector3Representation of a 3d vector
 CVector4Representation of a 4d vector
-
-
- - - - diff --git a/Doxygen/build/bc_s.png b/Doxygen/build/bc_s.png deleted file mode 100644 index 224b29aa9847d5a4b3902efd602b7ddf7d33e6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT diff --git a/Doxygen/build/bdwn.png b/Doxygen/build/bdwn.png deleted file mode 100644 index 940a0b950443a0bb1b216ac03c45b8a16c955452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T - - - - - - -Leonetienne/Eule: Member List - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Eule::Collider Member List
-
-
- -

This is the complete list of members for Eule::Collider, including all inherited members.

- - -
Contains(const Vector3d &point) const =0Eule::Colliderpure virtual
- - - - diff --git a/Doxygen/build/classEule_1_1Collider.html b/Doxygen/build/classEule_1_1Collider.html deleted file mode 100644 index b33fce5..0000000 --- a/Doxygen/build/classEule_1_1Collider.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule::Collider Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Eule::Collider Class Referenceabstract
-
-
- -

Abstract class of a collider domain. - More...

- -

#include <Collider.h>

-
-Inheritance diagram for Eule::Collider:
-
-
Inheritance graph
- - - - -
[legend]
- - - - - -

-Public Member Functions

virtual bool Contains (const Vector3d &point) const =0
 Tests, if this Collider contains a point. More...
 
-

Detailed Description

-

Abstract class of a collider domain.

-

Specializations describe a shape in 3d space, and provide implementations of the methods below, for their specific shape. Examples could be a SphereCollider, a BoxCollider, etc...

- -

Definition at line 10 of file Collider.h.

-

Member Function Documentation

- -

◆ Contains()

- -
-
- - - - - -
- - - - - - - - -
virtual bool Eule::Collider::Contains (const Vector3dpoint) const
-
-pure virtual
-
- -

Tests, if this Collider contains a point.

- -

Implemented in Eule::TrapazoidalPrismCollider.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/Doxygen/build/classEule_1_1Collider__inherit__graph.map b/Doxygen/build/classEule_1_1Collider__inherit__graph.map deleted file mode 100644 index 84537af..0000000 --- a/Doxygen/build/classEule_1_1Collider__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doxygen/build/classEule_1_1Collider__inherit__graph.md5 b/Doxygen/build/classEule_1_1Collider__inherit__graph.md5 deleted file mode 100644 index 58581a3..0000000 --- a/Doxygen/build/classEule_1_1Collider__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0f12e27dac5bc597f7fa2ef2f62c1652 \ No newline at end of file diff --git a/Doxygen/build/classEule_1_1Collider__inherit__graph.png b/Doxygen/build/classEule_1_1Collider__inherit__graph.png deleted file mode 100644 index 0e2e73528aab73d08b12a45d13783ee7ebce8cfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3690 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 diff --git a/Doxygen/build/classEule_1_1Math-members.html b/Doxygen/build/classEule_1_1Math-members.html deleted file mode 100644 index e78a44b..0000000 --- a/Doxygen/build/classEule_1_1Math-members.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -Leonetienne/Eule: Member List - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Eule::Math Member List
-
-
- -

This is the complete list of members for Eule::Math, including all inherited members.

- - - - - - - - - - - - - - - -
Abs(const double a)Eule::Mathinlinestatic
Clamp(const double v, const double min, const double max)Eule::Mathinlinestatic
Lerp(double a, double b, double t)Eule::Mathinlinestatic
Max(const double a, const double b)Eule::Mathinlinestatic
Min(const double a, const double b)Eule::Mathinlinestatic
Mod(const int numerator, const int denominator)Eule::Mathstatic
Oscillate(const double a, const double b, const double counter, const double speed)Eule::Mathstatic
Random()Eule::Mathstatic
RandomChance(const double chance)Eule::Mathstatic
RandomInt()Eule::Mathstatic
RandomIntRange(const int max, const int min)Eule::Mathstatic
RandomRange(const double min, const double max)Eule::Mathstatic
RandomUint()Eule::Mathstatic
Similar(const double a, const double b, const double epsilon=0.00001)Eule::Mathinlinestatic
- - - - diff --git a/Doxygen/build/classEule_1_1Math.html b/Doxygen/build/classEule_1_1Math.html deleted file mode 100644 index 05619a9..0000000 --- a/Doxygen/build/classEule_1_1Math.html +++ /dev/null @@ -1,769 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule::Math Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Eule::Math Class Reference
-
-
- -

Math utility class containing basic functions. - More...

- -

#include <Math.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static constexpr double Max (const double a, const double b)
 Will return the bigger of two values. More...
 
static constexpr double Min (const double a, const double b)
 Will return the smaller of two values. More...
 
static constexpr double Clamp (const double v, const double min, const double max)
 Will return v, but at least min, and at most max More...
 
static constexpr double Lerp (double a, double b, double t)
 Will return the linear interpolation between a and b by t More...
 
static constexpr double Abs (const double a)
 Will return the absolute value of a More...
 
static constexpr bool Similar (const double a, const double b, const double epsilon=0.00001)
 Compares two double values with a given accuracy. More...
 
static int Mod (const int numerator, const int denominator)
 Will compute the actual modulo of a fraction. More...
 
static double Random ()
 Will return a random double between 0 and 1 More...
 
static unsigned int RandomUint ()
 Will return a random unsigned integer. More...
 
static unsigned int RandomInt ()
 Will return a random integer. More...
 
static double RandomRange (const double min, const double max)
 Will return a random double within a range
- These bounds are INCLUSIVE! More...
 
static int RandomIntRange (const int max, const int min)
 Will return a random integer within a range. More...
 
static bool RandomChance (const double chance)
 Will 'roll' a dice, returning true \(100 * chance\) percent of the time. More...
 
static double Oscillate (const double a, const double b, const double counter, const double speed)
 Kind of like \(sin(counter)\), but it oscillates over \([a,b]\) instead of \([-1,1]\), by a given speed. More...
 
-

Detailed Description

-

Math utility class containing basic functions.

- -

Definition at line 9 of file Math.h.

-

Member Function Documentation

- -

◆ Abs()

- -
-
- - - - - -
- - - - - - - - -
constexpr double Eule::Math::Abs (const double a)
-
-inlinestaticconstexpr
-
- -

Will return the absolute value of a

- -

Definition at line 97 of file Math.h.

-
98  {
-
99  return (a > 0.0) ? a : -a;
-
100  }
-
-
-
- -

◆ Clamp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
constexpr double Eule::Math::Clamp (const double v,
const double min,
const double max 
)
-
-inlinestaticconstexpr
-
- -

Will return v, but at least min, and at most max

- -

Definition at line 86 of file Math.h.

-
87  {
-
88  return Max(Min(v, max), min);
-
89  }
-
-
-
- -

◆ Lerp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
constexpr double Eule::Math::Lerp (double a,
double b,
double t 
)
-
-inlinestaticconstexpr
-
- -

Will return the linear interpolation between a and b by t

- -

Definition at line 91 of file Math.h.

-
92  {
-
93  const double it = 1.0 - t;
-
94  return (a * it) + (b * t);
-
95  }
-
-
-
- -

◆ Max()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
constexpr double Eule::Math::Max (const double a,
const double b 
)
-
-inlinestaticconstexpr
-
- -

Will return the bigger of two values.

- -

Definition at line 76 of file Math.h.

-
77  {
-
78  return (a > b) ? a : b;
-
79  }
-
-
-
- -

◆ Min()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
constexpr double Eule::Math::Min (const double a,
const double b 
)
-
-inlinestaticconstexpr
-
- -

Will return the smaller of two values.

- -

Definition at line 81 of file Math.h.

-
82  {
-
83  return (a < b) ? a : b;
-
84  }
-
-
-
- -

◆ Mod()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int Math::Mod (const int numerator,
const int denominator 
)
-
-static
-
- -

Will compute the actual modulo of a fraction.

-

The % operator returns bs for n<0. May throw divide-by-zero std::logic_error

- -

Definition at line 78 of file Math.cpp.

-
79 {
-
80  if (denominator == 0)
-
81  throw std::logic_error("Divide by zero");
-
82 
-
83  // Quick optimizations:
-
84 
-
85  // -> 0/n is always 0
-
86  if (numerator == 0)
-
87  return 0;
-
88 
-
89  // -> operator% works for a > 0 && b > 0
-
90  if (denominator > 0 && numerator > 0)
-
91  return numerator % denominator;
-
92 
-
93  // Else: generalized formula
-
94  return (denominator + (numerator % denominator)) % denominator;
-
95 }
-
-
-
- -

◆ Oscillate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
double Math::Oscillate (const double a,
const double b,
const double counter,
const double speed 
)
-
-static
-
- -

Kind of like \(sin(counter)\), but it oscillates over \([a,b]\) instead of \([-1,1]\), by a given speed.

-


- Given that \(speed = 1\), the result will always be a if counter is even, and b if counter is uneven.
- If counter is a rational, the result will oscillate between a and b, like sin() does.
- If you increase speed, the oscillation frequency will increase. Meaning \(speed = 2\) would result in \(counter=0.5\) returning b.

- -

Definition at line 68 of file Math.cpp.

-
69 {
-
70  return (sin(counter * speed * PI - HALF_PI) * 0.5 + 0.5) * (b-a) + a;
-
71 }
-
-
-
- -

◆ Random()

- -
-
- - - - - -
- - - - - - - -
double Math::Random ()
-
-static
-
- -

Will return a random double between 0 and 1

- -

Definition at line 29 of file Math.cpp.

-
30 {
- -
32 
-
33  return (rng() % 694206942069ll) / 694206942069.0;
-
34 }
-
-
-
- -

◆ RandomChance()

- -
-
- - - - - -
- - - - - - - - -
bool Math::RandomChance (const double chance)
-
-static
-
- -

Will 'roll' a dice, returning true \(100 * chance\) percent of the time.

- -

Definition at line 73 of file Math.cpp.

-
74 {
-
75  return Random() <= chance;
-
76 }
-
-
-
- -

◆ RandomInt()

- -
-
- - - - - -
- - - - - - - -
unsigned int Math::RandomInt ()
-
-static
-
- -

Will return a random integer.

- -

Definition at line 45 of file Math.cpp.

-
46 {
- -
48 
-
49  // Since this is supposed to return a random value anyways,
-
50  // we can let the random uint overflow without any problems.
-
51  return (int)rng();
-
52 }
-
-
-
- -

◆ RandomIntRange()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int Math::RandomIntRange (const int max,
const int min 
)
-
-static
-
- -

Will return a random integer within a range.

-

This is faster than (int)RandomRange(x,y)
- These bounds are INCLUSIVE!

- -

Definition at line 63 of file Math.cpp.

-
64 {
-
65  return (rng() % (max + 1 - min)) + min;
-
66 }
-
-
-
- -

◆ RandomRange()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
double Math::RandomRange (const double min,
const double max 
)
-
-static
-
- -

Will return a random double within a range
- These bounds are INCLUSIVE!

- -

Definition at line 56 of file Math.cpp.

-
57 {
-
58  return (Random() * (max - min)) + min;
-
59 }
-
-
-
- -

◆ RandomUint()

- -
-
- - - - - -
- - - - - - - -
unsigned int Math::RandomUint ()
-
-static
-
- -

Will return a random unsigned integer.

- -

Definition at line 37 of file Math.cpp.

-
38 {
- -
40 
-
41  return rng();
-
42 }
-
-
-
- -

◆ Similar()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
constexpr bool Eule::Math::Similar (const double a,
const double b,
const double epsilon = 0.00001 
)
-
-inlinestaticconstexpr
-
- -

Compares two double values with a given accuracy.

- -

Definition at line 102 of file Math.h.

-
103  {
-
104  return Abs(a - b) <= epsilon;
-
105  }
-
-
-
-
The documentation for this class was generated from the following files: -
-
#define MAKE_SURE_RNG_IS_INITIALIZED
Definition: Math.cpp:8
-
static constexpr double PI
Pi up to 50 decimal places.
Definition: Constants.h:6
-
static constexpr double Abs(const double a)
Will return the absolute value of a
Definition: Math.h:97
-
static constexpr double Max(const double a, const double b)
Will return the bigger of two values.
Definition: Math.h:76
-
static constexpr double Min(const double a, const double b)
Will return the smaller of two values.
Definition: Math.h:81
-
static double Random()
Will return a random double between 0 and 1
Definition: Math.cpp:29
-
static constexpr double HALF_PI
Pi divided by two.
Definition: Constants.h:9
- - - - diff --git a/Doxygen/build/classEule_1_1Matrix4x4-members.html b/Doxygen/build/classEule_1_1Matrix4x4-members.html deleted file mode 100644 index cbab5a7..0000000 --- a/Doxygen/build/classEule_1_1Matrix4x4-members.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -Leonetienne/Eule: Member List - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Eule::Matrix4x4 Member List
-
-
- -

This is the complete list of members for Eule::Matrix4x4, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
aEule::Matrix4x4
Adjoint(std::size_t n) constEule::Matrix4x4
bEule::Matrix4x4
cEule::Matrix4x4
dEule::Matrix4x4
Determinant(std::size_t n) constEule::Matrix4x4
DropTranslationComponents() constEule::Matrix4x4
eEule::Matrix4x4
fEule::Matrix4x4
gEule::Matrix4x4
GetCofactors(std::size_t p, std::size_t q, std::size_t n) constEule::Matrix4x4
GetTranslationComponent() constEule::Matrix4x4
hEule::Matrix4x4
iEule::Matrix4x4
Inverse3x3() constEule::Matrix4x4
Inverse4x4() constEule::Matrix4x4
IsInversible3x3() constEule::Matrix4x4
IsInversible4x4() constEule::Matrix4x4
jEule::Matrix4x4
kEule::Matrix4x4
lEule::Matrix4x4
mEule::Matrix4x4
Matrix4x4()Eule::Matrix4x4
Matrix4x4(const Matrix4x4 &other)Eule::Matrix4x4
Matrix4x4(Matrix4x4 &&other) noexceptEule::Matrix4x4
Multiply4x4(const Matrix4x4 &o) constEule::Matrix4x4
nEule::Matrix4x4
oEule::Matrix4x4
operator!=(const Matrix4x4 &other)Eule::Matrix4x4
operator*(const Matrix4x4 &other) constEule::Matrix4x4
operator*(const double scalar) constEule::Matrix4x4
operator*=(const Matrix4x4 &other)Eule::Matrix4x4
operator*=(const double scalar)Eule::Matrix4x4
operator+(const Matrix4x4 &other) constEule::Matrix4x4
operator+=(const Matrix4x4 &other)Eule::Matrix4x4
operator-(const Matrix4x4 &other) constEule::Matrix4x4
operator-=(const Matrix4x4 &other)Eule::Matrix4x4
operator/(const Matrix4x4 &other) constEule::Matrix4x4
operator/(const double denominator) constEule::Matrix4x4
operator/=(const Matrix4x4 &other)Eule::Matrix4x4
operator/=(const double denominator)Eule::Matrix4x4
operator<<(std::ostream &os, const Matrix4x4 &m)Eule::Matrix4x4friend
operator<<(std::wostream &os, const Matrix4x4 &m)Eule::Matrix4x4friend
operator=(const Matrix4x4 &other)Eule::Matrix4x4
operator=(Matrix4x4 &&other) noexceptEule::Matrix4x4
operator==(const Matrix4x4 &other)Eule::Matrix4x4
operator[](std::size_t y)Eule::Matrix4x4
operator[](std::size_t y) constEule::Matrix4x4
pEule::Matrix4x4
SetTranslationComponent(const Vector3d &trans)Eule::Matrix4x4
Similar(const Matrix4x4 &other, double epsilon=0.00001) constEule::Matrix4x4
Transpose3x3() constEule::Matrix4x4
Transpose4x4() constEule::Matrix4x4
vEule::Matrix4x4
- - - - diff --git a/Doxygen/build/classEule_1_1Matrix4x4.html b/Doxygen/build/classEule_1_1Matrix4x4.html deleted file mode 100644 index 7879bb6..0000000 --- a/Doxygen/build/classEule_1_1Matrix4x4.html +++ /dev/null @@ -1,1979 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule::Matrix4x4 Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Eule::Matrix4x4 Class Reference
-
-
- -

A matrix 4x4 class representing a 3d transformation. - More...

- -

#include <Matrix4x4.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Matrix4x4 ()
 
 Matrix4x4 (const Matrix4x4 &other)
 
 Matrix4x4 (Matrix4x4 &&other) noexcept
 
Matrix4x4 operator* (const Matrix4x4 &other) const
 
void operator*= (const Matrix4x4 &other)
 
Matrix4x4 operator/ (const Matrix4x4 &other) const
 
void operator/= (const Matrix4x4 &other)
 
Matrix4x4 operator* (const double scalar) const
 Cellwise scaling. More...
 
void operator*= (const double scalar)
 Cellwise scaling. More...
 
Matrix4x4 operator/ (const double denominator) const
 Cellwise division. More...
 
void operator/= (const double denominator)
 Cellwise division. More...
 
Matrix4x4 operator+ (const Matrix4x4 &other) const
 Cellwise addition. More...
 
void operator+= (const Matrix4x4 &other)
 Cellwise addition. More...
 
Matrix4x4 operator- (const Matrix4x4 &other) const
 Cellwise subtraction. More...
 
void operator-= (const Matrix4x4 &other)
 Cellwise subtraction. More...
 
std::array< double, 4 > & operator[] (std::size_t y)
 
const std::array< double, 4 > & operator[] (std::size_t y) const
 
void operator= (const Matrix4x4 &other)
 
void operator= (Matrix4x4 &&other) noexcept
 
bool operator== (const Matrix4x4 &other)
 
bool operator!= (const Matrix4x4 &other)
 
const Vector3d GetTranslationComponent () const
 Will return d,h,l as a Vector3d(x,y,z) More...
 
void SetTranslationComponent (const Vector3d &trans)
 Will set d,h,l from a Vector3d(x,y,z) More...
 
Matrix4x4 DropTranslationComponents () const
 Will return this Matrix4x4 with d,h,l being set to 0. More...
 
Matrix4x4 Transpose3x3 () const
 Will return the 3x3 transpose of this matrix. More...
 
Matrix4x4 Transpose4x4 () const
 Will return the 4x4 transpose of this matrix. More...
 
Matrix4x4 Multiply4x4 (const Matrix4x4 &o) const
 Will return the Matrix4x4 of an actual 4x4 multiplication. operator* only does a 3x3. More...
 
Matrix4x4 GetCofactors (std::size_t p, std::size_t q, std::size_t n) const
 Will return the cofactors of this matrix, by dimension n. More...
 
double Determinant (std::size_t n) const
 Will return the determinant, by dimension n. More...
 
Matrix4x4 Adjoint (std::size_t n) const
 Will return the adjoint of this matrix, by dimension n. More...
 
Matrix4x4 Inverse3x3 () const
 Will return the 3x3-inverse of this matrix. More...
 
Matrix4x4 Inverse4x4 () const
 Will return the full 4x4-inverse of this matrix. More...
 
bool IsInversible3x3 () const
 Will check if the 3x3-component is inversible. More...
 
bool IsInversible4x4 () const
 Will check if the entire matrix is inversible. More...
 
bool Similar (const Matrix4x4 &other, double epsilon=0.00001) const
 Will compare if two matrices are similar to a certain epsilon value. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

std::array< std::array< double, 4 >, 4 > v
 Array holding the matrices values. More...
 
double & a = v[0][0]
 
double & b = v[0][1]
 
double & c = v[0][2]
 
double & d = v[0][3]
 
double & e = v[1][0]
 
double & f = v[1][1]
 
double & g = v[1][2]
 
double & h = v[1][3]
 
double & i = v[2][0]
 
double & j = v[2][1]
 
double & k = v[2][2]
 
double & l = v[2][3]
 
double & m = v[3][0]
 
double & n = v[3][1]
 
double & o = v[3][2]
 
double & p = v[3][3]
 
- - - - - -

-Friends

std::ostream & operator<< (std::ostream &os, const Matrix4x4 &m)
 
std::wostream & operator<< (std::wostream &os, const Matrix4x4 &m)
 
-

Detailed Description

-

A matrix 4x4 class representing a 3d transformation.

-

This matrix consists of a 3x3 matrix containing scaling and rotation information, and a vector (d,h,l) representing the translation.

-
myMatrix[y][x] = 3
-
-
X ==============>
-
Y
-
| # # # # # # # # # # #
-
| # a b c d #
-
| # #
-
| # e f g h #
-
| # #
-
V # i j k l #
-
# #
-
# m n o p #
-
# # # # # # # # # # #
-

Note: This class can also be used to compute regular 4x4 multiplications. Use Multiply4x4() for that.

- -

Definition at line 36 of file Matrix4x4.h.

-

Constructor & Destructor Documentation

- -

◆ Matrix4x4() [1/3]

- -
-
- - - - - - - -
Matrix4x4::Matrix4x4 ()
-
- -

Definition at line 12 of file Matrix4x4.cpp.

-
13 {
-
14  // Create identity matrix
-
15  for (std::size_t i = 0; i < 4; i++)
-
16  for (std::size_t j = 0; j < 4; j++)
-
17  v[i][j] = double(i == j);
-
18 
-
19  return;
-
20 }
-
-
-
- -

◆ Matrix4x4() [2/3]

- -
-
- - - - - - - - -
Matrix4x4::Matrix4x4 (const Matrix4x4other)
-
- -

Definition at line 22 of file Matrix4x4.cpp.

-
23 {
-
24  v = other.v;
-
25  return;
-
26 }
-
-
-
- -

◆ Matrix4x4() [3/3]

- -
-
- - - - - -
- - - - - - - - -
Matrix4x4::Matrix4x4 (Matrix4x4 && other)
-
-noexcept
-
- -

Definition at line 28 of file Matrix4x4.cpp.

-
29 {
-
30  v = std::move(other.v);
-
31  return;
-
32 }
-
-
-
-

Member Function Documentation

- -

◆ Adjoint()

- -
-
- - - - - - - - -
Matrix4x4 Matrix4x4::Adjoint (std::size_t n) const
-
- -

Will return the adjoint of this matrix, by dimension n.

- -

Definition at line 533 of file Matrix4x4.cpp.

-
534 {
-
535  if (n > 4)
-
536  throw std::runtime_error("Dimension out of range! 0 <= n <= 4");
-
537 
-
538  Matrix4x4 adj;
-
539  double sign = 1;
-
540 
-
541  for (std::size_t i = 0; i < n; i++)
-
542  for (std::size_t j = 0; j < n; j++)
-
543  {
-
544  Matrix4x4 cofs = GetCofactors(i, j, n);
-
545 
-
546  // sign of adj[j][i] positive if sum of row
-
547  // and column indexes is even.
-
548  sign = ((i + j) % 2 == 0) ? 1 : -1;
-
549 
-
550  // Interchanging rows and columns to get the
-
551  // transpose of the cofactor matrix
-
552  adj[j][i] = sign * (cofs.Determinant(n - 1));
-
553  }
-
554 
-
555  return adj;
-
556 }
-
-
-
- -

◆ Determinant()

- -
-
- - - - - - - - -
double Matrix4x4::Determinant (std::size_t n) const
-
- -

Will return the determinant, by dimension n.

- -

Definition at line 511 of file Matrix4x4.cpp.

-
512 {
-
513  if (n > 4)
-
514  throw std::runtime_error("Dimension out of range! 0 <= n <= 4");
-
515 
-
516  double d = 0;
-
517  double sign = 1;
-
518 
-
519  if (n == 1)
-
520  return v[0][0];
-
521 
-
522  for (std::size_t x = 0; x < n; x++)
-
523  {
-
524  Matrix4x4 cofs = GetCofactors(0, x, n);
-
525 
-
526  d += sign * v[0][x] * cofs.Determinant(n - 1);
-
527  sign = -sign;
-
528  }
-
529 
-
530  return d;
-
531 }
-
-
-
- -

◆ DropTranslationComponents()

- -
-
- - - - - - - -
Matrix4x4 Matrix4x4::DropTranslationComponents () const
-
- -

Will return this Matrix4x4 with d,h,l being set to 0.

- -

Definition at line 420 of file Matrix4x4.cpp.

-
421 {
-
422  Matrix4x4 m(*this);
-
423  m.d = 0;
-
424  m.h = 0;
-
425  m.l = 0;
-
426  return m;
-
427 }
-
-
-
- -

◆ GetCofactors()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
Matrix4x4 Matrix4x4::GetCofactors (std::size_t p,
std::size_t q,
std::size_t n 
) const
-
- -

Will return the cofactors of this matrix, by dimension n.

- -

Definition at line 478 of file Matrix4x4.cpp.

-
479 {
-
480  if (n > 4)
-
481  throw std::runtime_error("Dimension out of range! 0 <= n <= 4");
-
482 
-
483  Matrix4x4 cofs;
-
484 
-
485  std::size_t i = 0;
-
486  std::size_t j = 0;
-
487 
-
488  for (std::size_t y = 0; y < n; y++)
-
489  for (std::size_t x = 0; x < n; x++)
-
490  {
-
491  if ((y != p) && (x != q))
-
492  {
-
493  cofs[i][j] = v[y][x];
-
494  j++;
-
495  }
-
496 
-
497  if (j == n - 1)
-
498  {
-
499  j = 0;
-
500  i++;
-
501  }
-
502  }
-
503 
-
504  return cofs;
-
505 }
-
-
-
- -

◆ GetTranslationComponent()

- -
-
- - - - - - - -
const Vector3d Matrix4x4::GetTranslationComponent () const
-
- -

Will return d,h,l as a Vector3d(x,y,z)

- -

Definition at line 407 of file Matrix4x4.cpp.

-
408 {
-
409  return Vector3d(d, h, l);
-
410 }
-
-
-
- -

◆ Inverse3x3()

- -
-
- - - - - - - -
Matrix4x4 Matrix4x4::Inverse3x3 () const
-
- -

Will return the 3x3-inverse of this matrix.

-


- Meaning, the 3x3 component will be inverted, and the translation component will be negated

- -

Definition at line 558 of file Matrix4x4.cpp.

-
559 {
-
560  Matrix4x4 inv;
-
561 
-
562  double det = Determinant(3);
-
563  if (det == 0.0)
-
564  throw std::runtime_error("Matrix3x3 not inversible!");
-
565 
-
566  Matrix4x4 adj = Adjoint(3);
-
567 
-
568  for (std::size_t i = 0; i < 3; i++)
-
569  for (std::size_t j = 0; j < 3; j++)
-
570  inv[i][j] = adj[i][j] / det;
-
571 
- -
573 
-
574  return inv;
-
575 }
-
-
-
- -

◆ Inverse4x4()

- -
-
- - - - - - - -
Matrix4x4 Matrix4x4::Inverse4x4 () const
-
- -

Will return the full 4x4-inverse of this matrix.

- -

Definition at line 577 of file Matrix4x4.cpp.

-
578 {
-
579  Matrix4x4 inv;
-
580 
-
581  double det = Determinant(4);
-
582  if (det == 0.0)
-
583  throw std::runtime_error("Matrix4x4 not inversible!");
-
584 
-
585  Matrix4x4 adj = Adjoint(4);
-
586 
-
587  for (std::size_t i = 0; i < 4; i++)
-
588  for (std::size_t j = 0; j < 4; j++)
-
589  inv[i][j] = adj[i][j] / det;
-
590 
-
591  return inv;
-
592 }
-
-
-
- -

◆ IsInversible3x3()

- -
-
- - - - - - - -
bool Matrix4x4::IsInversible3x3 () const
-
- -

Will check if the 3x3-component is inversible.

- -

Definition at line 598 of file Matrix4x4.cpp.

-
599 {
-
600  return (Determinant(3) != 0);
-
601 }
-
-
-
- -

◆ IsInversible4x4()

- -
-
- - - - - - - -
bool Matrix4x4::IsInversible4x4 () const
-
- -

Will check if the entire matrix is inversible.

- -

Definition at line 603 of file Matrix4x4.cpp.

-
604 {
-
605  return (Determinant(4) != 0);
-
606 }
-
-
-
- -

◆ Multiply4x4()

- -
-
- - - - - - - - -
Matrix4x4 Matrix4x4::Multiply4x4 (const Matrix4x4o) const
-
- -

Will return the Matrix4x4 of an actual 4x4 multiplication. operator* only does a 3x3.

- -

Definition at line 451 of file Matrix4x4.cpp.

-
452 {
-
453  Matrix4x4 m;
-
454 
-
455  m[0][0] = (v[0][0]*o[0][0]) + (v[0][1]*o[1][0]) + (v[0][2]*o[2][0]) + (v[0][3]*o[3][0]);
-
456  m[0][1] = (v[0][0]*o[0][1]) + (v[0][1]*o[1][1]) + (v[0][2]*o[2][1]) + (v[0][3]*o[3][1]);
-
457  m[0][2] = (v[0][0]*o[0][2]) + (v[0][1]*o[1][2]) + (v[0][2]*o[2][2]) + (v[0][3]*o[3][2]);
-
458  m[0][3] = (v[0][0]*o[0][3]) + (v[0][1]*o[1][3]) + (v[0][2]*o[2][3]) + (v[0][3]*o[3][3]);
-
459 
-
460  m[1][0] = (v[1][0]*o[0][0]) + (v[1][1]*o[1][0]) + (v[1][2]*o[2][0]) + (v[1][3]*o[3][0]);
-
461  m[1][1] = (v[1][0]*o[0][1]) + (v[1][1]*o[1][1]) + (v[1][2]*o[2][1]) + (v[1][3]*o[3][1]);
-
462  m[1][2] = (v[1][0]*o[0][2]) + (v[1][1]*o[1][2]) + (v[1][2]*o[2][2]) + (v[1][3]*o[3][2]);
-
463  m[1][3] = (v[1][0]*o[0][3]) + (v[1][1]*o[1][3]) + (v[1][2]*o[2][3]) + (v[1][3]*o[3][3]);
-
464 
-
465  m[2][0] = (v[2][0]*o[0][0]) + (v[2][1]*o[1][0]) + (v[2][2]*o[2][0]) + (v[2][3]*o[3][0]);
-
466  m[2][1] = (v[2][0]*o[0][1]) + (v[2][1]*o[1][1]) + (v[2][2]*o[2][1]) + (v[2][3]*o[3][1]);
-
467  m[2][2] = (v[2][0]*o[0][2]) + (v[2][1]*o[1][2]) + (v[2][2]*o[2][2]) + (v[2][3]*o[3][2]);
-
468  m[2][3] = (v[2][0]*o[0][3]) + (v[2][1]*o[1][3]) + (v[2][2]*o[2][3]) + (v[2][3]*o[3][3]);
-
469 
-
470  m[3][0] = (v[3][0]*o[0][0]) + (v[3][1]*o[1][0]) + (v[3][2]*o[2][0]) + (v[3][3]*o[3][0]);
-
471  m[3][1] = (v[3][0]*o[0][1]) + (v[3][1]*o[1][1]) + (v[3][2]*o[2][1]) + (v[3][3]*o[3][1]);
-
472  m[3][2] = (v[3][0]*o[0][2]) + (v[3][1]*o[1][2]) + (v[3][2]*o[2][2]) + (v[3][3]*o[3][2]);
-
473  m[3][3] = (v[3][0]*o[0][3]) + (v[3][1]*o[1][3]) + (v[3][2]*o[2][3]) + (v[3][3]*o[3][3]);
-
474 
-
475  return m;
-
476 }
-
-
-
- -

◆ operator!=()

- -
-
- - - - - - - - -
bool Matrix4x4::operator!= (const Matrix4x4other)
-
- -

Definition at line 402 of file Matrix4x4.cpp.

-
403 {
-
404  return !operator==(other);
-
405 }
-
-
-
- -

◆ operator*() [1/2]

- -
-
- - - - - - - - -
Matrix4x4 Matrix4x4::operator* (const double scalar) const
-
- -

Cellwise scaling.

- -

Definition at line 164 of file Matrix4x4.cpp.

-
165 {
-
166  Matrix4x4 m;
-
167 
-
168  #ifndef _EULE_NO_INTRINSICS_
-
169 
-
170  // Load matrix rows
-
171  __m256d __row0 = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]);
-
172  __m256d __row1 = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]);
-
173  __m256d __row2 = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]);
-
174  __m256d __row3 = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]);
-
175 
-
176  // Load scalar
-
177  __m256d __scalar = _mm256_set1_pd(scalar);
-
178 
-
179  // Scale values
-
180  __m256d __sr0 = _mm256_mul_pd(__row0, __scalar);
-
181  __m256d __sr1 = _mm256_mul_pd(__row1, __scalar);
-
182  __m256d __sr2 = _mm256_mul_pd(__row2, __scalar);
-
183  __m256d __sr3 = _mm256_mul_pd(__row3, __scalar);
-
184 
-
185  // Extract results
-
186  _mm256_storeu_pd(m.v[0].data(), __sr0);
-
187  _mm256_storeu_pd(m.v[1].data(), __sr1);
-
188  _mm256_storeu_pd(m.v[2].data(), __sr2);
-
189  _mm256_storeu_pd(m.v[3].data(), __sr3);
-
190 
-
191  #else
-
192 
-
193  for (std::size_t x = 0; x < 4; x++)
-
194  for (std::size_t y = 0; y < 4; y++)
-
195  m[x][y] = v[x][y] * scalar;
-
196 
-
197  #endif
-
198 
-
199  return m;
-
200 }
-
-
-
- -

◆ operator*() [2/2]

- -
-
- - - - - - - - -
Matrix4x4 Matrix4x4::operator* (const Matrix4x4other) const
-
- -

Definition at line 34 of file Matrix4x4.cpp.

-
35 {
-
36  Matrix4x4 newMatrix;
-
37  newMatrix.p = 1;
-
38 
-
39  #ifndef _EULE_NO_INTRINSICS_
-
40 
-
41 
-
42  /* <= Matrix3x3 multiplication => */
-
43 
-
44  // Load matrix components
-
45  __m256d __va1 = _mm256_set_pd(v[0][0], v[0][0], v[0][0], v[1][0]);
-
46  __m256d __va2 = _mm256_set_pd(v[1][0], v[1][0], v[2][0], v[2][0]);
-
47 
-
48  __m256d __oa1 = _mm256_set_pd(other[0][0], other[0][1], other[0][2], other[0][0]);
-
49  __m256d __oa2 = _mm256_set_pd(other[0][1], other[0][2], other[0][0], other[0][1]);
-
50 
-
51  __m256d __vb1 = _mm256_set_pd(v[0][1], v[0][1], v[0][1], v[1][1]);
-
52  __m256d __vb2 = _mm256_set_pd(v[1][1], v[1][1], v[2][1], v[2][1]);
-
53 
-
54  __m256d __ob1 = _mm256_set_pd(other[1][0], other[1][1], other[1][2], other[1][0]);
-
55  __m256d __ob2 = _mm256_set_pd(other[1][1], other[1][2], other[1][0], other[1][1]);
-
56 
-
57  __m256d __vc1 = _mm256_set_pd(v[0][2], v[0][2], v[0][2], v[1][2]);
-
58  __m256d __vc2 = _mm256_set_pd(v[1][2], v[1][2], v[2][2], v[2][2]);
-
59 
-
60  __m256d __oc1 = _mm256_set_pd(other[2][0], other[2][1], other[2][2], other[2][0]);
-
61  __m256d __oc2 = _mm256_set_pd(other[2][1], other[2][2], other[2][0], other[2][1]);
-
62 
-
63  // Initialize sums
-
64  __m256d __sum1 = _mm256_set1_pd(0);
-
65  __m256d __sum2 = _mm256_set1_pd(0);
-
66 
-
67  // Let's multiply-add them together
-
68  // First, the first block
-
69  __sum1 = _mm256_fmadd_pd(__va1, __oa1, __sum1);
-
70  __sum1 = _mm256_fmadd_pd(__vb1, __ob1, __sum1);
-
71  __sum1 = _mm256_fmadd_pd(__vc1, __oc1, __sum1);
-
72 
-
73  // Then the second block
-
74  __sum2 = _mm256_fmadd_pd(__va2, __oa2, __sum2);
-
75  __sum2 = _mm256_fmadd_pd(__vb2, __ob2, __sum2);
-
76  __sum2 = _mm256_fmadd_pd(__vc2, __oc2, __sum2);
-
77 
-
78  // Retrieve results
-
79  double sum1[4];
-
80  double sum2[4];
-
81 
-
82  _mm256_storeu_pd(sum1, __sum1);
-
83  _mm256_storeu_pd(sum2, __sum2);
-
84 
-
85  // Apply results
-
86  // Block 1
-
87  newMatrix[0][0] = sum1[3];
-
88  newMatrix[0][1] = sum1[2];
-
89  newMatrix[0][2] = sum1[1];
-
90  newMatrix[1][0] = sum1[0];
-
91 
-
92  // Block 2
-
93  newMatrix[1][1] = sum2[3];
-
94  newMatrix[1][2] = sum2[2];
-
95  newMatrix[2][0] = sum2[1];
-
96  newMatrix[2][1] = sum2[0];
-
97 
-
98  // Does not fit in the intrinsic calculation. Might just calculate 'by hand'.
-
99  newMatrix[2][2] = (v[2][0] * other[0][2]) + (v[2][1] * other[1][2]) + (v[2][2] * other[2][2]);
-
100 
-
101 
-
102  /* <= Translation component => */
-
103 
-
104  // Load translation components into registers
-
105  __m256d __transSelf = _mm256_set_pd(0, l, h, d);
-
106  __m256d __transOther = _mm256_set_pd(0, other.l, other.h, other.d);
-
107 
-
108  // Let's add them
-
109  __m256d __sum = _mm256_add_pd(__transSelf, __transOther);
-
110 
-
111  // Retrieve results
-
112  double sum[4];
-
113  _mm256_storeu_pd(sum, __sum);
-
114 
-
115  // Apply them
-
116  newMatrix.d = sum[0];
-
117  newMatrix.h = sum[1];
-
118  newMatrix.l = sum[2];
-
119 
-
120  #else
-
121 
-
122 
-
123  // Rotation, Scaling
-
124  newMatrix[0][0] = (v[0][0] * other[0][0]) + (v[0][1] * other[1][0]) + (v[0][2] * other[2][0]);
-
125  newMatrix[0][1] = (v[0][0] * other[0][1]) + (v[0][1] * other[1][1]) + (v[0][2] * other[2][1]);
-
126  newMatrix[0][2] = (v[0][0] * other[0][2]) + (v[0][1] * other[1][2]) + (v[0][2] * other[2][2]);
-
127 
-
128  newMatrix[1][0] = (v[1][0] * other[0][0]) + (v[1][1] * other[1][0]) + (v[1][2] * other[2][0]);
-
129  newMatrix[1][1] = (v[1][0] * other[0][1]) + (v[1][1] * other[1][1]) + (v[1][2] * other[2][1]);
-
130  newMatrix[1][2] = (v[1][0] * other[0][2]) + (v[1][1] * other[1][2]) + (v[1][2] * other[2][2]);
-
131 
-
132  newMatrix[2][0] = (v[2][0] * other[0][0]) + (v[2][1] * other[1][0]) + (v[2][2] * other[2][0]);
-
133  newMatrix[2][1] = (v[2][0] * other[0][1]) + (v[2][1] * other[1][1]) + (v[2][2] * other[2][1]);
-
134  newMatrix[2][2] = (v[2][0] * other[0][2]) + (v[2][1] * other[1][2]) + (v[2][2] * other[2][2]);
-
135 
-
136 
-
137  // Translation
-
138  newMatrix[0][3] = v[0][3] + other[0][3];
-
139  newMatrix[1][3] = v[1][3] + other[1][3];
-
140  newMatrix[2][3] = v[2][3] + other[2][3];
-
141 
-
142  #endif
-
143 
-
144  return newMatrix;
-
145 }
-
-
-
- -

◆ operator*=() [1/2]

- -
-
- - - - - - - - -
void Matrix4x4::operator*= (const double scalar)
-
- -

Cellwise scaling.

- -

Definition at line 202 of file Matrix4x4.cpp.

-
203 {
-
204  *this = *this * scalar;
-
205  return;
-
206 }
-
-
-
- -

◆ operator*=() [2/2]

- -
-
- - - - - - - - -
void Matrix4x4::operator*= (const Matrix4x4other)
-
- -

Definition at line 147 of file Matrix4x4.cpp.

-
148 {
-
149  *this = *this * other;
-
150  return;
-
151 }
-
-
-
- -

◆ operator+()

- -
-
- - - - - - - - -
Matrix4x4 Matrix4x4::operator+ (const Matrix4x4other) const
-
- -

Cellwise addition.

- -

Definition at line 221 of file Matrix4x4.cpp.

-
222 {
-
223  Matrix4x4 m;
-
224 
-
225  #ifndef _EULE_NO_INTRINSICS_
-
226 
-
227  // Load matrix rows
-
228  __m256d __row0a = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]);
-
229  __m256d __row1a = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]);
-
230  __m256d __row2a = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]);
-
231  __m256d __row3a = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]);
-
232 
-
233  __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
-
234  __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
-
235  __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
-
236  __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
-
237 
-
238  // Add rows
-
239  __m256d __sr0 = _mm256_add_pd(__row0a, __row0b);
-
240  __m256d __sr1 = _mm256_add_pd(__row1a, __row1b);
-
241  __m256d __sr2 = _mm256_add_pd(__row2a, __row2b);
-
242  __m256d __sr3 = _mm256_add_pd(__row3a, __row3b);
-
243 
-
244  // Extract results
-
245  _mm256_storeu_pd(m.v[0].data(), __sr0);
-
246  _mm256_storeu_pd(m.v[1].data(), __sr1);
-
247  _mm256_storeu_pd(m.v[2].data(), __sr2);
-
248  _mm256_storeu_pd(m.v[3].data(), __sr3);
-
249 
-
250  #else
-
251 
-
252  for (std::size_t x = 0; x < 4; x++)
-
253  for (std::size_t y = 0; y < 4; y++)
-
254  m[x][y] = v[x][y] + other[x][y];
-
255 
-
256  #endif
-
257 
-
258  return m;
-
259 }
-
-
-
- -

◆ operator+=()

- -
-
- - - - - - - - -
void Matrix4x4::operator+= (const Matrix4x4other)
-
- -

Cellwise addition.

- -

Definition at line 261 of file Matrix4x4.cpp.

-
262 {
-
263  #ifndef _EULE_NO_INTRINSICS_
-
264  // Doing it again is a tad directer, and thus faster. We avoid an intermittent Matrix4x4 instance
-
265 
-
266  // Load matrix rows
-
267  __m256d __row0a = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]);
-
268  __m256d __row1a = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]);
-
269  __m256d __row2a = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]);
-
270  __m256d __row3a = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]);
-
271 
-
272  __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
-
273  __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
-
274  __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
-
275  __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
-
276 
-
277  // Add rows
-
278  __m256d __sr0 = _mm256_add_pd(__row0a, __row0b);
-
279  __m256d __sr1 = _mm256_add_pd(__row1a, __row1b);
-
280  __m256d __sr2 = _mm256_add_pd(__row2a, __row2b);
-
281  __m256d __sr3 = _mm256_add_pd(__row3a, __row3b);
-
282 
-
283  // Extract results
-
284  _mm256_storeu_pd(v[0].data(), __sr0);
-
285  _mm256_storeu_pd(v[1].data(), __sr1);
-
286  _mm256_storeu_pd(v[2].data(), __sr2);
-
287  _mm256_storeu_pd(v[3].data(), __sr3);
-
288 
-
289  #else
-
290 
-
291  *this = *this + other;
-
292 
-
293  #endif
-
294 
-
295  return;
-
296 }
-
-
-
- -

◆ operator-()

- -
-
- - - - - - - - -
Matrix4x4 Matrix4x4::operator- (const Matrix4x4other) const
-
- -

Cellwise subtraction.

- -

Definition at line 298 of file Matrix4x4.cpp.

-
299 {
-
300  Matrix4x4 m;
-
301 
-
302  #ifndef _EULE_NO_INTRINSICS_
-
303 
-
304  // Load matrix rows
-
305  __m256d __row0a = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]);
-
306  __m256d __row1a = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]);
-
307  __m256d __row2a = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]);
-
308  __m256d __row3a = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]);
-
309 
-
310  __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
-
311  __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
-
312  __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
-
313  __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
-
314 
-
315  // Subtract rows
-
316  __m256d __sr0 = _mm256_sub_pd(__row0a, __row0b);
-
317  __m256d __sr1 = _mm256_sub_pd(__row1a, __row1b);
-
318  __m256d __sr2 = _mm256_sub_pd(__row2a, __row2b);
-
319  __m256d __sr3 = _mm256_sub_pd(__row3a, __row3b);
-
320 
-
321  // Extract results
-
322  _mm256_storeu_pd(m.v[0].data(), __sr0);
-
323  _mm256_storeu_pd(m.v[1].data(), __sr1);
-
324  _mm256_storeu_pd(m.v[2].data(), __sr2);
-
325  _mm256_storeu_pd(m.v[3].data(), __sr3);
-
326 
-
327  #else
-
328 
-
329  for (std::size_t x = 0; x < 4; x++)
-
330  for (std::size_t y = 0; y < 4; y++)
-
331  m[x][y] = v[x][y] - other[x][y];
-
332 
-
333  #endif
-
334 
-
335  return m;
-
336 }
-
-
-
- -

◆ operator-=()

- -
-
- - - - - - - - -
void Matrix4x4::operator-= (const Matrix4x4other)
-
- -

Cellwise subtraction.

- -

Definition at line 338 of file Matrix4x4.cpp.

-
339 {
-
340  #ifndef _EULE_NO_INTRINSICS_
-
341  // Doing it again is a tad directer, and thus faster. We avoid an intermittent Matrix4x4 instance
-
342 
-
343  // Load matrix rows
-
344  __m256d __row0a = _mm256_set_pd(v[0][3], v[0][2], v[0][1], v[0][0]);
-
345  __m256d __row1a = _mm256_set_pd(v[1][3], v[1][2], v[1][1], v[1][0]);
-
346  __m256d __row2a = _mm256_set_pd(v[2][3], v[2][2], v[2][1], v[2][0]);
-
347  __m256d __row3a = _mm256_set_pd(v[3][3], v[3][2], v[3][1], v[3][0]);
-
348 
-
349  __m256d __row0b = _mm256_set_pd(other[0][3], other[0][2], other[0][1], other[0][0]);
-
350  __m256d __row1b = _mm256_set_pd(other[1][3], other[1][2], other[1][1], other[1][0]);
-
351  __m256d __row2b = _mm256_set_pd(other[2][3], other[2][2], other[2][1], other[2][0]);
-
352  __m256d __row3b = _mm256_set_pd(other[3][3], other[3][2], other[3][1], other[3][0]);
-
353 
-
354  // Subtract rows
-
355  __m256d __sr0 = _mm256_sub_pd(__row0a, __row0b);
-
356  __m256d __sr1 = _mm256_sub_pd(__row1a, __row1b);
-
357  __m256d __sr2 = _mm256_sub_pd(__row2a, __row2b);
-
358  __m256d __sr3 = _mm256_sub_pd(__row3a, __row3b);
-
359 
-
360  // Extract results
-
361  _mm256_storeu_pd(v[0].data(), __sr0);
-
362  _mm256_storeu_pd(v[1].data(), __sr1);
-
363  _mm256_storeu_pd(v[2].data(), __sr2);
-
364  _mm256_storeu_pd(v[3].data(), __sr3);
-
365 
-
366  #else
-
367 
-
368  * this = *this - other;
-
369 
-
370  #endif
-
371 
-
372  return;
-
373 }
-
-
-
- -

◆ operator/() [1/2]

- -
-
- - - - - - - - -
Matrix4x4 Matrix4x4::operator/ (const double denominator) const
-
- -

Cellwise division.

- -

Definition at line 208 of file Matrix4x4.cpp.

-
209 {
-
210  const double precomputeDivision = 1.0 / denominator;
-
211 
-
212  return *this * precomputeDivision;
-
213 }
-
-
-
- -

◆ operator/() [2/2]

- -
-
- - - - - - - - -
Matrix4x4 Matrix4x4::operator/ (const Matrix4x4other) const
-
- -

Definition at line 153 of file Matrix4x4.cpp.

-
154 {
-
155  return *this * other.Inverse3x3();
-
156 }
-
-
-
- -

◆ operator/=() [1/2]

- -
-
- - - - - - - - -
void Matrix4x4::operator/= (const double denominator)
-
- -

Cellwise division.

- -

Definition at line 215 of file Matrix4x4.cpp.

-
216 {
-
217  *this = *this / denominator;
-
218  return;
-
219 }
-
-
-
- -

◆ operator/=() [2/2]

- -
-
- - - - - - - - -
void Matrix4x4::operator/= (const Matrix4x4other)
-
- -

Definition at line 158 of file Matrix4x4.cpp.

-
159 {
-
160  *this = *this * other.Inverse3x3();
-
161  return;
-
162 }
-
-
-
- -

◆ operator=() [1/2]

- -
-
- - - - - - - - -
void Matrix4x4::operator= (const Matrix4x4other)
-
- -

Definition at line 385 of file Matrix4x4.cpp.

-
386 {
-
387  v = other.v;
-
388  return;
-
389 }
-
-
-
- -

◆ operator=() [2/2]

- -
-
- - - - - -
- - - - - - - - -
void Matrix4x4::operator= (Matrix4x4 && other)
-
-noexcept
-
- -

Definition at line 391 of file Matrix4x4.cpp.

-
392 {
-
393  v = std::move(other.v);
-
394  return;
-
395 }
-
-
-
- -

◆ operator==()

- -
-
- - - - - - - - -
bool Matrix4x4::operator== (const Matrix4x4other)
-
- -

Definition at line 397 of file Matrix4x4.cpp.

-
398 {
-
399  return v == other.v;
-
400 }
-
-
-
- -

◆ operator[]() [1/2]

- -
-
- - - - - - - - -
std::array< double, 4 > & Matrix4x4::operator[] (std::size_t y)
-
- -

Definition at line 375 of file Matrix4x4.cpp.

-
376 {
-
377  return v[y];
-
378 }
-
-
-
- -

◆ operator[]() [2/2]

- -
-
- - - - - - - - -
const std::array< double, 4 > & Matrix4x4::operator[] (std::size_t y) const
-
- -

Definition at line 380 of file Matrix4x4.cpp.

-
381 {
-
382  return v[y];
-
383 }
-
-
-
- -

◆ SetTranslationComponent()

- -
-
- - - - - - - - -
void Matrix4x4::SetTranslationComponent (const Vector3dtrans)
-
- -

Will set d,h,l from a Vector3d(x,y,z)

- -

Definition at line 412 of file Matrix4x4.cpp.

-
413 {
-
414  d = trans.x;
-
415  h = trans.y;
-
416  l = trans.z;
-
417  return;
-
418 }
-
-
-
- -

◆ Similar()

- -
-
- - - - - - - - - - - - - - - - - - -
bool Matrix4x4::Similar (const Matrix4x4other,
double epsilon = 0.00001 
) const
-
- -

Will compare if two matrices are similar to a certain epsilon value.

- -

Definition at line 608 of file Matrix4x4.cpp.

-
609 {
-
610  for (std::size_t i = 0; i < 4; i++)
-
611  for (std::size_t j = 0; j < 4; j++)
-
612  if (!Math::Similar(v[i][j], other[i][j], epsilon))
-
613  return false;
-
614 
-
615  return true;
-
616 }
-
-
-
- -

◆ Transpose3x3()

- -
-
- - - - - - - -
Matrix4x4 Matrix4x4::Transpose3x3 () const
-
- -

Will return the 3x3 transpose of this matrix.

- -

Definition at line 429 of file Matrix4x4.cpp.

-
430 {
-
431  Matrix4x4 trans(*this); // Keep other cells
-
432 
-
433  for (std::size_t i = 0; i < 3; i++)
-
434  for (std::size_t j = 0; j < 3; j++)
-
435  trans[j][i] = v[i][j];
-
436 
-
437  return trans;
-
438 }
-
-
-
- -

◆ Transpose4x4()

- -
-
- - - - - - - -
Matrix4x4 Matrix4x4::Transpose4x4 () const
-
- -

Will return the 4x4 transpose of this matrix.

- -

Definition at line 440 of file Matrix4x4.cpp.

-
441 {
-
442  Matrix4x4 trans;
-
443 
-
444  for (std::size_t i = 0; i < 4; i++)
-
445  for (std::size_t j = 0; j < 4; j++)
-
446  trans[j][i] = v[i][j];
-
447 
-
448  return trans;
-
449 }
-
-
-
-

Friends And Related Function Documentation

- -

◆ operator<< [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::ostream& operator<< (std::ostream & os,
const Matrix4x4m 
)
-
-friend
-
- -

Definition at line 620 of file Matrix4x4.cpp.

-
621  {
-
622  os << std::endl;
-
623 
-
624  for (std::size_t y = 0; y < 4; y++)
-
625  {
-
626  for (std::size_t x = 0; x < 4; x++)
-
627  os << " | " << m[y][x];
-
628 
-
629  os << " |" << std::endl;
-
630  }
-
631 
-
632  return os;
-
633  }
-
-
-
- -

◆ operator<< [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::wostream& operator<< (std::wostream & os,
const Matrix4x4m 
)
-
-friend
-
- -

Definition at line 635 of file Matrix4x4.cpp.

-
636  {
-
637  os << std::endl;
-
638 
-
639  for (std::size_t y = 0; y < 4; y++)
-
640  {
-
641  for (std::size_t x = 0; x < 4; x++)
-
642  os << L" | " << m[y][x];
-
643 
-
644  os << L" |" << std::endl;
-
645  }
-
646 
-
647  return os;
-
648  }
-
-
-
-

Member Data Documentation

- -

◆ a

- -
-
- - - - -
double& Eule::Matrix4x4::a = v[0][0]
-
- -

Definition at line 128 of file Matrix4x4.h.

- -
-
- -

◆ b

- -
-
- - - - -
double& Eule::Matrix4x4::b = v[0][1]
-
- -

Definition at line 129 of file Matrix4x4.h.

- -
-
- -

◆ c

- -
-
- - - - -
double& Eule::Matrix4x4::c = v[0][2]
-
- -

Definition at line 130 of file Matrix4x4.h.

- -
-
- -

◆ d

- -
-
- - - - -
double& Eule::Matrix4x4::d = v[0][3]
-
- -

Definition at line 131 of file Matrix4x4.h.

- -
-
- -

◆ e

- -
-
- - - - -
double& Eule::Matrix4x4::e = v[1][0]
-
- -

Definition at line 132 of file Matrix4x4.h.

- -
-
- -

◆ f

- -
-
- - - - -
double& Eule::Matrix4x4::f = v[1][1]
-
- -

Definition at line 133 of file Matrix4x4.h.

- -
-
- -

◆ g

- -
-
- - - - -
double& Eule::Matrix4x4::g = v[1][2]
-
- -

Definition at line 134 of file Matrix4x4.h.

- -
-
- -

◆ h

- -
-
- - - - -
double& Eule::Matrix4x4::h = v[1][3]
-
- -

Definition at line 135 of file Matrix4x4.h.

- -
-
- -

◆ i

- -
-
- - - - -
double& Eule::Matrix4x4::i = v[2][0]
-
- -

Definition at line 136 of file Matrix4x4.h.

- -
-
- -

◆ j

- -
-
- - - - -
double& Eule::Matrix4x4::j = v[2][1]
-
- -

Definition at line 137 of file Matrix4x4.h.

- -
-
- -

◆ k

- -
-
- - - - -
double& Eule::Matrix4x4::k = v[2][2]
-
- -

Definition at line 138 of file Matrix4x4.h.

- -
-
- -

◆ l

- -
-
- - - - -
double& Eule::Matrix4x4::l = v[2][3]
-
- -

Definition at line 139 of file Matrix4x4.h.

- -
-
- -

◆ m

- -
-
- - - - -
double& Eule::Matrix4x4::m = v[3][0]
-
- -

Definition at line 140 of file Matrix4x4.h.

- -
-
- -

◆ n

- -
-
- - - - -
double& Eule::Matrix4x4::n = v[3][1]
-
- -

Definition at line 141 of file Matrix4x4.h.

- -
-
- -

◆ o

- -
-
- - - - -
double& Eule::Matrix4x4::o = v[3][2]
-
- -

Definition at line 142 of file Matrix4x4.h.

- -
-
- -

◆ p

- -
-
- - - - -
double& Eule::Matrix4x4::p = v[3][3]
-
- -

Definition at line 143 of file Matrix4x4.h.

- -
-
- -

◆ v

- -
-
- - - - -
std::array<std::array<double, 4>, 4> Eule::Matrix4x4::v
-
- -

Array holding the matrices values.

- -

Definition at line 44 of file Matrix4x4.h.

- -
-
-
The documentation for this class was generated from the following files: -
-
double & j
Definition: Matrix4x4.h:137
-
Matrix4x4 Adjoint(std::size_t n) const
Will return the adjoint of this matrix, by dimension n.
Definition: Matrix4x4.cpp:533
-
bool operator==(const Matrix4x4 &other)
Definition: Matrix4x4.cpp:397
-
double & i
Definition: Matrix4x4.h:136
-
double & e
Definition: Matrix4x4.h:132
-
double & f
Definition: Matrix4x4.h:133
-
Matrix4x4 Inverse3x3() const
Will return the 3x3-inverse of this matrix.
Definition: Matrix4x4.cpp:558
-
double & k
Definition: Matrix4x4.h:138
-
std::array< std::array< double, 4 >, 4 > v
Array holding the matrices values.
Definition: Matrix4x4.h:44
-
Vector3< double > Vector3d
Definition: Matrix4x4.h:9
- -
A matrix 4x4 class representing a 3d transformation.
Definition: Matrix4x4.h:36
-
double & b
Definition: Matrix4x4.h:129
-
double & g
Definition: Matrix4x4.h:134
- -
double & p
Definition: Matrix4x4.h:143
-
static constexpr bool Similar(const double a, const double b, const double epsilon=0.00001)
Compares two double values with a given accuracy.
Definition: Math.h:102
-
double & l
Definition: Matrix4x4.h:139
-
double Determinant(std::size_t n) const
Will return the determinant, by dimension n.
Definition: Matrix4x4.cpp:511
-
void SetTranslationComponent(const Vector3d &trans)
Will set d,h,l from a Vector3d(x,y,z)
Definition: Matrix4x4.cpp:412
-
double & c
Definition: Matrix4x4.h:130
-
double & o
Definition: Matrix4x4.h:142
-
double & a
Definition: Matrix4x4.h:128
-
double & m
Definition: Matrix4x4.h:140
-
Matrix4x4 GetCofactors(std::size_t p, std::size_t q, std::size_t n) const
Will return the cofactors of this matrix, by dimension n.
Definition: Matrix4x4.cpp:478
-
const Vector3d GetTranslationComponent() const
Will return d,h,l as a Vector3d(x,y,z)
Definition: Matrix4x4.cpp:407
-
double & n
Definition: Matrix4x4.h:141
-
double & h
Definition: Matrix4x4.h:135
-
double & d
Definition: Matrix4x4.h:131
- - - - - diff --git a/Doxygen/build/classEule_1_1Quaternion-members.html b/Doxygen/build/classEule_1_1Quaternion-members.html deleted file mode 100644 index 6fed225..0000000 --- a/Doxygen/build/classEule_1_1Quaternion-members.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - -Leonetienne/Eule: Member List - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Eule::Quaternion Member List
-
-
- -

This is the complete list of members for Eule::Quaternion, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
AngleBetween(const Quaternion &other) constEule::Quaternion
Conjugate() constEule::Quaternion
GetRawValues() constEule::Quaternion
Inverse() constEule::Quaternion
Lerp(const Quaternion &other, double t) constEule::Quaternion
operator!=(const Quaternion &q) constEule::Quaternion
operator*(const Quaternion &q) constEule::Quaternion
operator*(const Vector3d &p) constEule::Quaternion
operator*=(const Quaternion &q)Eule::Quaternion
operator/(Quaternion &q) constEule::Quaternion
operator/=(const Quaternion &q)Eule::Quaternion
operator<<(std::ostream &os, const Quaternion &q)Eule::Quaternionfriend
operator<<(std::wostream &os, const Quaternion &q)Eule::Quaternionfriend
operator=(const Quaternion &q)Eule::Quaternion
operator==(const Quaternion &q) constEule::Quaternion
Quaternion()Eule::Quaternion
Quaternion(const Vector4d values)Eule::Quaternionexplicit
Quaternion(const Quaternion &q)Eule::Quaternion
Quaternion(const Vector3d eulerAngles)Eule::Quaternion
RotateVector(const Vector3d &vec) constEule::Quaternion
SetRawValues(const Vector4d values)Eule::Quaternion
ToEulerAngles() constEule::Quaternion
ToRotationMatrix() constEule::Quaternion
UnitQuaternion() constEule::Quaternion
~Quaternion()Eule::Quaternion
- - - - diff --git a/Doxygen/build/classEule_1_1Quaternion.html b/Doxygen/build/classEule_1_1Quaternion.html deleted file mode 100644 index b402e34..0000000 --- a/Doxygen/build/classEule_1_1Quaternion.html +++ /dev/null @@ -1,1044 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule::Quaternion Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Eule::Quaternion Class Reference
-
-
- -

3D rotation representation - More...

- -

#include <Quaternion.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Quaternion ()
 
 Quaternion (const Vector4d values)
 Constructs by these raw values. More...
 
 Quaternion (const Quaternion &q)
 Copies this existing Quaternion. More...
 
 Quaternion (const Vector3d eulerAngles)
 Creates an quaternion from euler angles. More...
 
 ~Quaternion ()
 
Quaternion operator= (const Quaternion &q)
 Copies. More...
 
Quaternion operator* (const Quaternion &q) const
 Multiplies (applies) More...
 
Quaternion operator/ (Quaternion &q) const
 Divides (applies) More...
 
Quaternionoperator*= (const Quaternion &q)
 Also multiplies. More...
 
Quaternionoperator/= (const Quaternion &q)
 Also divides. More...
 
Vector3d operator* (const Vector3d &p) const
 Will transform a 3d point around its origin. More...
 
bool operator== (const Quaternion &q) const
 
bool operator!= (const Quaternion &q) const
 
Quaternion Inverse () const
 
Quaternion Conjugate () const
 
Quaternion UnitQuaternion () const
 
Vector3d RotateVector (const Vector3d &vec) const
 Will rotate a vector by this quaternion. More...
 
Vector3d ToEulerAngles () const
 Will return euler angles representing this Quaternion's rotation. More...
 
Matrix4x4 ToRotationMatrix () const
 Will return a rotation matrix representing this Quaternions rotation. More...
 
Vector4d GetRawValues () const
 Will return the raw four-dimensional values. More...
 
Quaternion AngleBetween (const Quaternion &other) const
 Will return the value between two Quaternion's as another Quaternion. More...
 
void SetRawValues (const Vector4d values)
 Will set the raw four-dimensional values. More...
 
Quaternion Lerp (const Quaternion &other, double t) const
 Will return the lerp result between two quaternions. More...
 
- - - - - -

-Friends

std::ostream & operator<< (std::ostream &os, const Quaternion &q)
 
std::wostream & operator<< (std::wostream &os, const Quaternion &q)
 
-

Detailed Description

-

3D rotation representation

- -

Definition at line 10 of file Quaternion.h.

-

Constructor & Destructor Documentation

- -

◆ Quaternion() [1/4]

- -
-
- - - - - - - -
Quaternion::Quaternion ()
-
- -

Definition at line 11 of file Quaternion.cpp.

-
12 {
-
13  v = Vector4d(0, 0, 0, 1);
-
14  return;
-
15 }
-
-
-
- -

◆ Quaternion() [2/4]

- -
-
- - - - - -
- - - - - - - - -
Quaternion::Quaternion (const Vector4d values)
-
-explicit
-
- -

Constructs by these raw values.

- -

Definition at line 17 of file Quaternion.cpp.

-
18 {
-
19  v = values;
-
20  return;
-
21 }
-
-
-
- -

◆ Quaternion() [3/4]

- -
-
- - - - - - - - -
Quaternion::Quaternion (const Quaternionq)
-
- -

Copies this existing Quaternion.

- -

Definition at line 23 of file Quaternion.cpp.

-
24 {
-
25  v = q.v;
-
26  return;
-
27 }
-
-
-
- -

◆ Quaternion() [4/4]

- -
-
- - - - - - - - -
Quaternion::Quaternion (const Vector3d eulerAngles)
-
- -

Creates an quaternion from euler angles.

- -

Definition at line 29 of file Quaternion.cpp.

-
30 {
-
31  Vector3d eulerRad = eulerAngles * Deg2Rad;
-
32 
-
33  #ifndef _EULE_NO_INTRINSICS_
-
34 
-
35  // Calculate sine and cos values
-
36  __m256d __vec = _mm256_set_pd(0, eulerRad.z, eulerRad.y, eulerRad.x);
-
37  __vec = _mm256_mul_pd(__vec, _mm256_set1_pd(0.5));
-
38  __m256d __cos;
-
39  __m256d __sin = _mm256_sincos_pd(&__cos, __vec);
-
40 
-
41  // Create multiplication vectors
-
42  double sin[4];
-
43  double cos[4];
-
44 
-
45  _mm256_storeu_pd(sin, __sin);
-
46  _mm256_storeu_pd(cos, __cos);
-
47 
-
48  __m256d __a = _mm256_set_pd(cos[0], cos[0], sin[0], cos[0]);
-
49  __m256d __b = _mm256_set_pd(cos[1], sin[1], cos[1], cos[1]);
-
50  __m256d __c = _mm256_set_pd(sin[2], cos[2], cos[2], cos[2]);
-
51 
-
52  __m256d __d = _mm256_set_pd(sin[0], sin[0], cos[0], sin[0]);
-
53  __m256d __e = _mm256_set_pd(sin[1], cos[1], sin[1], sin[1]);
-
54  __m256d __f = _mm256_set_pd(cos[2], sin[2], sin[2], sin[2]);
-
55 
-
56  // Multiply them
-
57  __m256d __abc;
-
58  __abc = _mm256_mul_pd(__a, __b);
-
59  __abc = _mm256_mul_pd(__abc, __c);
-
60 
-
61  __m256d __def;
-
62  __def = _mm256_mul_pd(__d, __e);
-
63  __def = _mm256_mul_pd(__def, __f);
-
64 
-
65  // Extract results
-
66  double abc[4];
-
67  double def[4];
-
68 
-
69  _mm256_storeu_pd(abc, __abc);
-
70  _mm256_storeu_pd(def, __def);
-
71 
-
72  // Sum them up
-
73  v.w = abc[0] + def[0];
-
74  v.x = abc[1] - def[1];
-
75  v.y = abc[2] + def[2];
-
76  v.z = abc[3] - def[3];
-
77 
-
78  #else
-
79 
-
80  const double cy = cos(eulerRad.z * 0.5);
-
81  const double sy = sin(eulerRad.z * 0.5);
-
82  const double cp = cos(eulerRad.y * 0.5);
-
83  const double sp = sin(eulerRad.y * 0.5);
-
84  const double cr = cos(eulerRad.x * 0.5);
-
85  const double sr = sin(eulerRad.x * 0.5);
-
86 
-
87  v.w = cr * cp * cy + sr * sp * sy;
-
88  v.x = sr * cp * cy - cr * sp * sy;
-
89  v.y = cr * sp * cy + sr * cp * sy;
-
90  v.z = cr * cp * sy - sr * sp * cy;
-
91 
-
92  #endif
-
93 
-
94  return;
-
95 }
-
-
-
- -

◆ ~Quaternion()

- -
-
- - - - - - - -
Quaternion::~Quaternion ()
-
- -

Definition at line 97 of file Quaternion.cpp.

-
98 {
-
99  return;
-
100 }
-
-
-
-

Member Function Documentation

- -

◆ AngleBetween()

- -
-
- - - - - - - - -
Quaternion Quaternion::AngleBetween (const Quaternionother) const
-
- -

Will return the value between two Quaternion's as another Quaternion.

- -

Definition at line 295 of file Quaternion.cpp.

-
296 {
-
297  return other * Conjugate();
-
298 }
-
-
-
- -

◆ Conjugate()

- -
-
- - - - - - - -
Quaternion Quaternion::Conjugate () const
-
- -

Definition at line 187 of file Quaternion.cpp.

-
188 {
-
189  return Quaternion(Vector4d(-v.x, -v.y, -v.z, v.w));
-
190 }
-
-
-
- -

◆ GetRawValues()

- -
-
- - - - - - - -
Vector4d Quaternion::GetRawValues () const
-
- -

Will return the raw four-dimensional values.

- -

Definition at line 290 of file Quaternion.cpp.

-
291 {
-
292  return v;
-
293 }
-
-
-
- -

◆ Inverse()

- -
-
- - - - - - - -
Quaternion Quaternion::Inverse () const
-
- -

Definition at line 175 of file Quaternion.cpp.

-
176 {
-
177  if (!isCacheUpToDate_inverse)
-
178  {
-
179  cache_inverse = (Conjugate() * (1.0 / v.SqrMagnitude())).v;
-
180 
-
181  isCacheUpToDate_inverse = true;
-
182  }
-
183 
-
184  return Quaternion(cache_inverse);
-
185 }
-
-
-
- -

◆ Lerp()

- -
-
- - - - - - - - - - - - - - - - - - -
Quaternion Quaternion::Lerp (const Quaternionother,
double t 
) const
-
- -

Will return the lerp result between two quaternions.

- -

Definition at line 309 of file Quaternion.cpp.

-
310 {
-
311  return Quaternion(v.Lerp(other.v, t)).UnitQuaternion();
-
312 }
-
-
-
- -

◆ operator!=()

- -
-
- - - - - - - - -
bool Quaternion::operator!= (const Quaternionq) const
-
- -

Definition at line 170 of file Quaternion.cpp.

-
171 {
-
172  return (!v.Similar(q.v)) && (!v.Similar(q.v * -1));
-
173 }
-
-
-
- -

◆ operator*() [1/2]

- -
-
- - - - - - - - -
Quaternion Quaternion::operator* (const Quaternionq) const
-
- -

Multiplies (applies)

- -

Definition at line 111 of file Quaternion.cpp.

-
112 {
-
113  return Quaternion(Vector4d(
-
114  v.w * q.v.x + v.x * q.v.w + v.y * q.v.z - v.z * q.v.y,
-
115  v.w * q.v.y + v.y * q.v.w + v.z * q.v.x - v.x * q.v.z,
-
116  v.w * q.v.z + v.z * q.v.w + v.x * q.v.y - v.y * q.v.x,
-
117  v.w * q.v.w - v.x * q.v.x - v.y * q.v.y - v.z * q.v.z
-
118  ));
-
119 }
-
-
-
- -

◆ operator*() [2/2]

- -
-
- - - - - - - - -
Vector3d Quaternion::operator* (const Vector3dp) const
-
- -

Will transform a 3d point around its origin.

- -

Definition at line 160 of file Quaternion.cpp.

-
161 {
-
162  return RotateVector(p);
-
163 }
-
-
-
- -

◆ operator*=()

- -
-
- - - - - - - - -
Quaternion & Quaternion::operator*= (const Quaternionq)
-
- -

Also multiplies.

- -

Definition at line 131 of file Quaternion.cpp.

-
132 {
-
133  InvalidateCache();
-
134 
-
135  Vector4d bufr = v;
-
136  v.x = bufr.w * q.v.x + bufr.x * q.v.w + bufr.y * q.v.z - bufr.z * q.v.y; // x
-
137  v.y = bufr.w * q.v.y + bufr.y * q.v.w + bufr.z * q.v.x - bufr.x * q.v.z; // y
-
138  v.z = bufr.w * q.v.z + bufr.z * q.v.w + bufr.x * q.v.y - bufr.y * q.v.x; // z
-
139  v.w = bufr.w * q.v.w - bufr.x * q.v.x - bufr.y * q.v.y - bufr.z * q.v.z; // w
-
140 
-
141  return (*this);
-
142 }
-
-
-
- -

◆ operator/()

- -
-
- - - - - - - - -
Quaternion Quaternion::operator/ (Quaternionq) const
-
- -

Divides (applies)

- -

Definition at line 126 of file Quaternion.cpp.

-
127 {
-
128  return ((*this) * (q.Inverse()));
-
129 }
-
-
-
- -

◆ operator/=()

- -
-
- - - - - - - - -
Quaternion & Quaternion::operator/= (const Quaternionq)
-
- -

Also divides.

- -

Definition at line 152 of file Quaternion.cpp.

-
153 {
-
154  InvalidateCache();
-
155 
-
156  (*this) = (*this) * q.Inverse();
-
157  return (*this);
-
158 }
-
-
-
- -

◆ operator=()

- -
-
- - - - - - - - -
Quaternion Quaternion::operator= (const Quaternionq)
-
- -

Copies.

- -

Definition at line 102 of file Quaternion.cpp.

-
103 {
-
104  InvalidateCache();
-
105 
-
106  v = q.v;
-
107 
-
108  return (*this);
-
109 }
-
-
-
- -

◆ operator==()

- -
-
- - - - - - - - -
bool Quaternion::operator== (const Quaternionq) const
-
- -

Definition at line 165 of file Quaternion.cpp.

-
166 {
-
167  return (v.Similar(q.v)) || (v.Similar(q.v * -1));
-
168 }
-
-
-
- -

◆ RotateVector()

- -
-
- - - - - - - - -
Vector3d Quaternion::RotateVector (const Vector3dvec) const
-
- -

Will rotate a vector by this quaternion.

- -

Definition at line 197 of file Quaternion.cpp.

-
198 {
-
199  Quaternion pure(Vector4d(vec.x, vec.y, vec.z, 0));
-
200 
-
201  //Quaternion f = Conjugate() * pure * (*this);
-
202  //Quaternion f = Inverse().Conjugate() * pure * (this->Inverse());
-
203 
-
204 
-
205  Quaternion f = Inverse() * pure * (*this);
-
206 
-
207  Vector3d toRet;
-
208  toRet.x = f.v.x;
-
209  toRet.y = f.v.y;
-
210  toRet.z = f.v.z;
-
211 
-
212  return toRet;
-
213 }
-
-
-
- -

◆ SetRawValues()

- -
-
- - - - - - - - -
void Quaternion::SetRawValues (const Vector4d values)
-
- -

Will set the raw four-dimensional values.

- -

Definition at line 300 of file Quaternion.cpp.

-
301 {
-
302  InvalidateCache();
-
303 
-
304  v = values;
-
305 
-
306  return;
-
307 }
-
-
-
- -

◆ ToEulerAngles()

- -
-
- - - - - - - -
Vector3d Quaternion::ToEulerAngles () const
-
- -

Will return euler angles representing this Quaternion's rotation.

- -

Definition at line 215 of file Quaternion.cpp.

-
216 {
-
217  if (!isCacheUpToDate_euler)
-
218  {
-
219  Vector3d euler;
-
220  // roll (x-axis rotation)
-
221  double sinr_cosp = 2.0 * (v.w * v.x + v.y * v.z);
-
222  double cosr_cosp = 1.0 - 2.0 * (v.x * v.x + v.y * v.y);
-
223  euler.x = std::atan2(sinr_cosp, cosr_cosp);
-
224 
-
225  // pitch (y-axis rotation)
-
226  double sinp = 2.0 * (v.w * v.y - v.z * v.x);
-
227  if (std::abs(sinp) >= 1)
-
228  euler.y = std::copysign(PI / 2, sinp); // use 90 degrees if out of range
-
229  else
-
230  euler.y = std::asin(sinp);
-
231 
-
232  // yaw (z-axis rotation)
-
233  double siny_cosp = 2.0 * (v.w * v.z + v.x * v.y);
-
234  double cosy_cosp = 1.0 - 2.0 * (v.y * v.y + v.z * v.z);
-
235  euler.z = std::atan2(siny_cosp, cosy_cosp);
-
236 
-
237  euler *= Rad2Deg;
-
238 
-
239  cache_euler = euler;
-
240  isCacheUpToDate_matrix = true;
-
241  }
-
242 
-
243  return cache_euler;
-
244 }
-
-
-
- -

◆ ToRotationMatrix()

- -
-
- - - - - - - -
Matrix4x4 Quaternion::ToRotationMatrix () const
-
- -

Will return a rotation matrix representing this Quaternions rotation.

- -

Definition at line 246 of file Quaternion.cpp.

-
247 {
-
248  if (!isCacheUpToDate_matrix)
-
249  {
-
250  Matrix4x4 m;
-
251 
-
252  const double sqx = v.x * v.x;
-
253  const double sqy = v.y * v.y;
-
254  const double sqz = v.z * v.z;
-
255  const double sqw = v.w * v.w;
-
256  const double x = v.x;
-
257  const double y = v.y;
-
258  const double z = v.z;
-
259  const double w = v.w;
-
260 
-
261  // invs (inverse square length) is only required if quaternion is not already normalised
-
262  double invs = 1.0 / (sqx + sqy + sqz + sqw);
-
263 
-
264  // since sqw + sqx + sqy + sqz =1/invs*invs
-
265 
-
266  // yaw (y)
-
267  m.c = ((2 * x * z) - (2 * w * y)) * invs;
-
268  m.f = (1 - (2 * sqx) - (2 * sqz)) * invs;
-
269  m.i = ((2 * x * z) + (2 * w * y)) * invs;
-
270 
-
271  // pitch (x)
-
272  m.a = (1 - (2 * sqy) - (2 * sqz)) * invs;
-
273  m.g = ((2 * y * z) + (2 * w * x)) * invs;
-
274  m.j = ((2 * y * z) - (2 * w * x)) * invs;
-
275 
-
276  // roll (z)
-
277  m.b = ((2 * x * v.y) + (2 * w * z)) * invs;
-
278  m.e = ((2 * x * v.y) - (2 * w * z)) * invs;
-
279  m.k = (1 - (2 * sqx) - (2 * sqy)) * invs;
-
280 
-
281  m.p = 1;
-
282 
-
283  cache_matrix = m;
-
284  isCacheUpToDate_matrix = true;
-
285  }
-
286 
-
287  return cache_matrix;
-
288 }
-
-
-
- -

◆ UnitQuaternion()

- -
-
- - - - - - - -
Quaternion Quaternion::UnitQuaternion () const
-
- -

Definition at line 192 of file Quaternion.cpp.

-
193 {
-
194  return (*this) * (1.0 / v.Magnitude());
-
195 }
-
-
-
-

Friends And Related Function Documentation

- -

◆ operator<< [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::ostream& operator<< (std::ostream & os,
const Quaternionq 
)
-
-friend
-
- -

Definition at line 325 of file Quaternion.cpp.

-
326  {
-
327  os << "[" << q.v << "]";
-
328  return os;
-
329  }
-
-
-
- -

◆ operator<< [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::wostream& operator<< (std::wostream & os,
const Quaternionq 
)
-
-friend
-
- -

Definition at line 331 of file Quaternion.cpp.

-
332  {
-
333  os << L"[" << q.v << L"]";
-
334  return os;
-
335  }
-
-
-
-
The documentation for this class was generated from the following files: -
-
double & j
Definition: Matrix4x4.h:137
-
static constexpr double PI
Pi up to 50 decimal places.
Definition: Constants.h:6
-
double & i
Definition: Matrix4x4.h:136
- - -
double & e
Definition: Matrix4x4.h:132
- -
Vector4< double > Vector4d
Definition: Vector4.h:107
-
double & f
Definition: Matrix4x4.h:133
-
static constexpr double Deg2Rad
Factor to convert degrees to radians.
Definition: Constants.h:12
-
double & k
Definition: Matrix4x4.h:138
-
Vector4< double > Lerp(const Vector4< T > &other, double t) const
Will return a lerp result between this and another vector.
Definition: Vector4.cpp:287
- - -
A matrix 4x4 class representing a 3d transformation.
Definition: Matrix4x4.h:36
-
bool Similar(const Vector4< T > &other, double epsilon=0.00001) const
Will compare if two vectors are similar to a certain epsilon value.
Definition: Vector4.cpp:162
-
double & b
Definition: Matrix4x4.h:129
-
double Magnitude() const
Will compute the magnitude.
Definition: Vector4.cpp:38
-
double & g
Definition: Matrix4x4.h:134
- -
double & p
Definition: Matrix4x4.h:143
-
Vector3d RotateVector(const Vector3d &vec) const
Will rotate a vector by this quaternion.
Definition: Quaternion.cpp:197
-
double SqrMagnitude() const
Will compute the square magnitude.
Definition: Vector4.cpp:31
- -
static constexpr double Rad2Deg
Factor to convert radians to degrees.
Definition: Constants.h:15
-
Quaternion Conjugate() const
Definition: Quaternion.cpp:187
-
Quaternion Inverse() const
Definition: Quaternion.cpp:175
-
double & c
Definition: Matrix4x4.h:130
-
3D rotation representation
Definition: Quaternion.h:10
-
double & a
Definition: Matrix4x4.h:128
- - -
Representation of a 4d vector.
Definition: Vector2.h:8
- - - - diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider-members.html b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider-members.html deleted file mode 100644 index 6237471..0000000 --- a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider-members.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -Leonetienne/Eule: Member List - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Eule::TrapazoidalPrismCollider Member List
-
-
- -

This is the complete list of members for Eule::TrapazoidalPrismCollider, including all inherited members.

- - - - - - - - - - - - - - - -
BACKEule::TrapazoidalPrismColliderstatic
BOTTOMEule::TrapazoidalPrismColliderstatic
Contains(const Vector3d &point) const overrideEule::TrapazoidalPrismCollidervirtual
FRONTEule::TrapazoidalPrismColliderstatic
GetVertex(std::size_t index) constEule::TrapazoidalPrismCollider
LEFTEule::TrapazoidalPrismColliderstatic
operator=(const TrapazoidalPrismCollider &other)Eule::TrapazoidalPrismCollider
operator=(TrapazoidalPrismCollider &&other) noexceptEule::TrapazoidalPrismCollider
RIGHTEule::TrapazoidalPrismColliderstatic
SetVertex(std::size_t index, const Vector3d value)Eule::TrapazoidalPrismCollider
TOPEule::TrapazoidalPrismColliderstatic
TrapazoidalPrismCollider()Eule::TrapazoidalPrismCollider
TrapazoidalPrismCollider(const TrapazoidalPrismCollider &other)=defaultEule::TrapazoidalPrismCollider
TrapazoidalPrismCollider(TrapazoidalPrismCollider &&other) noexcept=defaultEule::TrapazoidalPrismCollider
- - - - diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider.html b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider.html deleted file mode 100644 index 914cf12..0000000 --- a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider.html +++ /dev/null @@ -1,544 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule::TrapazoidalPrismCollider Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Eule::TrapazoidalPrismCollider Class Reference
-
-
- -

A collider describing a trapazoidal prism. - More...

- -

#include <TrapazoidalPrismCollider.h>

-
-Inheritance diagram for Eule::TrapazoidalPrismCollider:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for Eule::TrapazoidalPrismCollider:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 TrapazoidalPrismCollider ()
 
 TrapazoidalPrismCollider (const TrapazoidalPrismCollider &other)=default
 
 TrapazoidalPrismCollider (TrapazoidalPrismCollider &&other) noexcept=default
 
void operator= (const TrapazoidalPrismCollider &other)
 
void operator= (TrapazoidalPrismCollider &&other) noexcept
 
const Vector3dGetVertex (std::size_t index) const
 Will return a specific vertex. More...
 
void SetVertex (std::size_t index, const Vector3d value)
 Will set the value of a specific vertex. More...
 
bool Contains (const Vector3d &point) const override
 Tests, if this Collider contains a point. More...
 
- - - - - - - - - - - - - -

-Static Public Attributes

static constexpr std::size_t BACK = 0
 
static constexpr std::size_t FRONT = 4
 
static constexpr std::size_t LEFT = 0
 
static constexpr std::size_t RIGHT = 2
 
static constexpr std::size_t BOTTOM = 0
 
static constexpr std::size_t TOP = 1
 
-

Detailed Description

-

A collider describing a trapazoidal prism.

-

A trapazoidal prism is basically a box, but each vertex can be manipulated individually, altering the angles between faces. Distorting a 2d face into 3d space will result in undefined behaviour. Each face should stay flat, relative to itself. This shape is based on QUADS!

- -

Definition at line 13 of file TrapazoidalPrismCollider.h.

-

Constructor & Destructor Documentation

- -

◆ TrapazoidalPrismCollider() [1/3]

- -
-
- - - - - - - -
TrapazoidalPrismCollider::TrapazoidalPrismCollider ()
-
- -

Definition at line 5 of file TrapazoidalPrismCollider.cpp.

-
6 {
-
7  return;
-
8 }
-
-
-
- -

◆ TrapazoidalPrismCollider() [2/3]

- -
-
- - - - - -
- - - - - - - - -
Eule::TrapazoidalPrismCollider::TrapazoidalPrismCollider (const TrapazoidalPrismColliderother)
-
-default
-
- -
-
- -

◆ TrapazoidalPrismCollider() [3/3]

- -
-
- - - - - -
- - - - - - - - -
Eule::TrapazoidalPrismCollider::TrapazoidalPrismCollider (TrapazoidalPrismCollider && other)
-
-defaultnoexcept
-
- -
-
-

Member Function Documentation

- -

◆ Contains()

- -
-
- - - - - -
- - - - - - - - -
bool TrapazoidalPrismCollider::Contains (const Vector3dpoint) const
-
-overridevirtual
-
- -

Tests, if this Collider contains a point.

- -

Implements Eule::Collider.

- -

Definition at line 103 of file TrapazoidalPrismCollider.cpp.

-
104 {
-
105  for (std::size_t i = 0; i < 6; i++)
-
106  if (FaceDot((FACE_NORMALS)i, point) < 0)
-
107  return false;
-
108 
-
109  return true;
-
110 }
-
-
-
- -

◆ GetVertex()

- -
-
- - - - - - - - -
const Vector3d & TrapazoidalPrismCollider::GetVertex (std::size_t index) const
-
- -

Will return a specific vertex.

- -

Definition at line 26 of file TrapazoidalPrismCollider.cpp.

-
27 {
-
28  return vertices[index];
-
29 }
-
-
-
- -

◆ operator=() [1/2]

- -
-
- - - - - - - - -
void TrapazoidalPrismCollider::operator= (const TrapazoidalPrismColliderother)
-
- -

Definition at line 10 of file TrapazoidalPrismCollider.cpp.

-
11 {
-
12  vertices = other.vertices;
-
13  faceNormals = other.faceNormals;
-
14 
-
15  return;
-
16 }
-
-
-
- -

◆ operator=() [2/2]

- -
-
- - - - - -
- - - - - - - - -
void TrapazoidalPrismCollider::operator= (TrapazoidalPrismCollider && other)
-
-noexcept
-
- -

Definition at line 18 of file TrapazoidalPrismCollider.cpp.

-
19 {
-
20  vertices = std::move(other.vertices);
-
21  faceNormals = std::move(other.faceNormals);
-
22 
-
23  return;
-
24 }
-
-
-
- -

◆ SetVertex()

- -
-
- - - - - - - - - - - - - - - - - - -
void TrapazoidalPrismCollider::SetVertex (std::size_t index,
const Vector3d value 
)
-
- -

Will set the value of a specific vertex.

- -

Definition at line 31 of file TrapazoidalPrismCollider.cpp.

-
32 {
-
33  vertices[index] = value;
-
34  GenerateNormalsFromVertices();
-
35  return;
-
36 }
-
-
-
-

Member Data Documentation

- -

◆ BACK

- -
-
- - - - - -
- - - - -
constexpr std::size_t Eule::TrapazoidalPrismCollider::BACK = 0
-
-staticconstexpr
-
- -

Definition at line 32 of file TrapazoidalPrismCollider.h.

- -
-
- -

◆ BOTTOM

- -
-
- - - - - -
- - - - -
constexpr std::size_t Eule::TrapazoidalPrismCollider::BOTTOM = 0
-
-staticconstexpr
-
- -

Definition at line 36 of file TrapazoidalPrismCollider.h.

- -
-
- -

◆ FRONT

- -
-
- - - - - -
- - - - -
constexpr std::size_t Eule::TrapazoidalPrismCollider::FRONT = 4
-
-staticconstexpr
-
- -

Definition at line 33 of file TrapazoidalPrismCollider.h.

- -
-
- -

◆ LEFT

- -
-
- - - - - -
- - - - -
constexpr std::size_t Eule::TrapazoidalPrismCollider::LEFT = 0
-
-staticconstexpr
-
- -

Definition at line 34 of file TrapazoidalPrismCollider.h.

- -
-
- -

◆ RIGHT

- -
-
- - - - - -
- - - - -
constexpr std::size_t Eule::TrapazoidalPrismCollider::RIGHT = 2
-
-staticconstexpr
-
- -

Definition at line 35 of file TrapazoidalPrismCollider.h.

- -
-
- -

◆ TOP

- -
-
- - - - - -
- - - - -
constexpr std::size_t Eule::TrapazoidalPrismCollider::TOP = 1
-
-staticconstexpr
-
- -

Definition at line 37 of file TrapazoidalPrismCollider.h.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.map b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.map deleted file mode 100644 index 399a8f0..0000000 --- a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.md5 b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.md5 deleted file mode 100644 index c621060..0000000 --- a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -deee938530b892f287194fe0561c7d94 \ No newline at end of file diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.png b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__coll__graph.png deleted file mode 100644 index 3620945e60c0b419814724b0291ccee156ba5402..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3783 zcmcJSc{o&k|Hs`C^H@Szvc*u@3Q0ni46-K6AbYk^VK8Wn8Qet**|%hvWXn3a(KL36 zOd^uCVJw3TGxmMtIrs1RUC;0OJ^w%FT<3hxb)9p4Ki}_Xd41j|-pbOLhf|c3g@uL3 z)WpyR80Ud22y_Ct!&#(ifq~uA+}M!i`0w*|OIZdB%PEYhp*}PmOP} zvEfZ8lMifGH&xB#RaJ~KPuVP=6l{=!WQ}NDzKjqq6D{}o5DxBFk$Djy_-aCk%Qp6H z*5G%21)&O|^+-id1REPMgUwWdJth^)+axQ?W6FK@xng9LB-Y#a!m^`cwEa&1lqD$F zB95g!Hm#M5BWm5NWrr*APD7x1xNO>;@;?!<`dYPZhu%x z;iI`gpy?ouh$YLs8V+`L&=Woo+g0}obDoU@MDDzv*veUdHvPnh|_d9bH_=&m^N>=H>NztCmA6a&kt~WQ=?8&rsS^JM^DR zp^f?ZlN^$mwO@lWee?1R-mTr;XK`^(j*h5^2n3P5n7ueR7c$-cczXJtxp}W-G;`eu zwp6l>@2ymSv@$k0G2vuuJ2X7paDVX4yLT#pg_`vi^sd&88_1Qh!i~Y69+Nbatwmh4 zx|&)j64`eA`*0$MUr^8o4xbtsvA4EfpF~m~*iMz(mL-d8N(*pOB6nTsH$KL58-NPG zf4Aui7^!isRI|~=DQA$*a^JGE6C97z25V|-U&-`Uwo54d>oVpUa@ zsF>Jr7}VA_hL1+0y<%FS(KjG(i;7~J(Tn{Ou~zQxI8P)EPH1QV$Fg&9kmyw36S!}q zR#WL0%uh*Z6{DP}^|_rnsbD=6I{{rd^+%Az7x@TYq!Jw<9>UUO}~4=U^GY+cc! zNpXBYO!JvmNF*UXp7i7-S5Fi5cTBb~9UT#|(4TK!HbiP-Fc=e=i?g$D`V!~3MwdBC zlOTmXDP+L=RQAoqZ`V~-XV=5k)zv4Or)Rqog)iM*>*UpAV`G!kp{}fG>*`Jo4;ytq zcTvsH&u>6E%F33>-YHlM*H-S zrfb!mWRP8CoWjX=f<1;`R8;ibxtfi5BO{|kq03GLxJ16?9W%2DVn|tTZf;yM1OlmX zYndRE#rgQ|`S~>k{CtnvTnHe4;0HsUoF003%+Trd#l_F}RDk5K$G6qjhkAQ|nw->8 zQ-iLD!z<=RPDA2mj#Dmx-qhC%)W~A^U-lOQo@ihDSEc?N1OK23PP1)j$pkU8`M5q5 zq_jjGHMW`$P-(-zUrTWq=xJ8)9uU7Sbp1m27bLzO^0K%svF+L&G94Z%l)XrBLyXom z7#U)SA->aTGW-WMT?6gED;fDWb|p6`>%k2UsFh0V!to$d zGmd?u!potCjAq__!l!!WiWZWQ-P(IaE!9C{4iT99@+>&E`?IW)>qBt~i6NvB`^k+8 zbI!fwe49Pj*$ELnZ$tqOHS8M|K)IoDI!4}~(z5okw|mD9ht zsdm0!dc}%u<};q!ly7w>?R4m;xtXbIr#eiY6&JXs7FwZA4Dh#rLdgY3>D;HOcGvs! z5Als$SGqr!`1oA+C5Xp7UEYpW&T}ScNr+cbkzKP_u3kL@R7VbL+WpX=HRT&O6t8__ zpLnud2a7H8qLDHr{U@kJs}OFU6<(JAh3S8Uh%@K}>ZHcwf3x<#^SY`>ATv9g)+EmA z0cUvl`??22Pke1p{Bt`@3#J*O z?D1*a?t5rdN(iMj@_OL!IS%WPkdPxLGZgxr(%sz+AnpdLDJ{)9EUW>3_^JZmdSE7t zm%*8GKAl}y*jfK9sqFZd_d=rqsG+_ds~dU1m~1*7AKP)S%Bev?Tbum#tA7Q)s58CP z`&FA{6VT>9eKMTPe)H+akF76Rid6cG7u;N2i2#=S@25oQ_ZQ#2v=F3$i`;Px4z6uz z*yi50b9X=9U&K9o`n0R7Yw&)3Yilb&&*f3P*A`EyQuJ#0@<{dJ?y9V?lP*qDM8whB z8bC?m7%Vh2vvcOh@URYQg9?C{(t;-B=Sx7|78g?ingMf}5o8nNDk{XT!}-`ee0>Q~M+du8=oBdsst)kO&dwwDm^3VQWq$rCpP9LN9vN6jL6@ie z4kXGG^z@^0>)z~0wKE7D9eoUJ(cIiT)(V4R#_@=$`;Yy}2O#H5UtfT~fAQe`)#lA) zrXciDF`V`m`q1BhWq)%q@71dltgKnxcir5SRv9bfbwHFmJ3B2dUX_<8b#}&xSK;x2 zz@&bDmB20%yBb3lEgcl=eijzoDCbF& z;XxStkCsuhB4;9^BrZAg>&|M(B9;0gDQSLwzAx|k>fvhJojZ4w<>Us|ZdGh;e$(^y z^;LFj9_#6OE?x~)2nY=P_T>vAH1uzXlVHM1EqhdEb~vt8_LVe zM@2<-bac47y0Wse`i)dskLRn)*co?nzeVE(jmwU(uOCPT1{28yf%_=!p2bZ+KfhhZ zu%GV()I_UmYAi$0u>;C&OdCf>60A;MzzhgD{U-srIu+pMWl%Phk)Hm0 zZ!V><5ZtvB85xyd7Ei5c-0DLfx|wn?6=Adg{v;nvquesvb8lucUUkilSog=x7e4Fo;NYk3O=SdVy8lr?l27Zw&qaOGR#UcQ`O52sRrsib4?tG)8Ppe9NOHV-LG#dK129x7R+HMU{G z4o!MFELFr@np%l|58TM@1#I54O9tWpX|}J3D)8YYUL};8-&=vo}RWBv=CB zT87Da)m(oDnHaM0^#L4i--uoO_>_wfND)fxDk&+!=pOf7r$9%ef`U{oU%q_pn%x5w zu=@VqUNKQoK#hG)k#uhiE&rZA_v_cM`S~myPFa8xh&PZ;4f6gI0A)19Edv8r_x3(O z6(q#OGR#VxbaSMh|M>C4JV!}TNGN@iGCoe42?8>$UZh-$2D{mbK9Vjawx;7eH<~U9 zDV{%nUR^!A4`ys=sG+3=pK8w49)kj#v4=wI11YUDGae2OqkwVEkOhmnN3kn(I*`18 z;M&_;_qv!NA|L>mIv*W6*PSGO>KQXiN>=un3k&o;zPefv#FijzlTP9F_V&i?&*w-+ zZt?5$1vanWf - - - diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.md5 b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.md5 deleted file mode 100644 index c621060..0000000 --- a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -deee938530b892f287194fe0561c7d94 \ No newline at end of file diff --git a/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.png b/Doxygen/build/classEule_1_1TrapazoidalPrismCollider__inherit__graph.png deleted file mode 100644 index 3620945e60c0b419814724b0291ccee156ba5402..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3783 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 - - - - - - -Leonetienne/Eule: Member List - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Eule::Vector2< T > Member List
-
-
- -

This is the complete list of members for Eule::Vector2< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CrossProduct(const Vector2< T > &other) constEule::Vector2< T >
DotProduct(const Vector2< T > &other) constEule::Vector2< T >
downEule::Vector2< T >static
leftEule::Vector2< T >static
Lerp(const Vector2< T > &other, double t) constEule::Vector2< T >
LerpSelf(const Vector2< T > &other, double t)Eule::Vector2< T >
Magnitude() constEule::Vector2< T >
Normalize() constEule::Vector2< T >
NormalizeSelf()Eule::Vector2< T >
oneEule::Vector2< T >static
operator Vector3< T >() constEule::Vector2< T >
operator Vector4< T >() constEule::Vector2< T >
operator!=(const Vector2< T > &other) constEule::Vector2< T >
operator*(const T scale) constEule::Vector2< T >
operator*=(const T scale)Eule::Vector2< T >
operator+(const Vector2< T > &other) constEule::Vector2< T >
operator+=(const Vector2< T > &other)Eule::Vector2< T >
operator-(const Vector2< T > &other) constEule::Vector2< T >
operator-() constEule::Vector2< T >
operator-=(const Vector2< T > &other)Eule::Vector2< T >
operator/(const T scale) constEule::Vector2< T >
operator/=(const T scale)Eule::Vector2< T >
operator<<(std::ostream &os, const Vector2< T > &v)Eule::Vector2< T >friend
operator<<(std::wostream &os, const Vector2< T > &v)Eule::Vector2< T >friend
operator=(const Vector2< T > &other)Eule::Vector2< T >
operator=(Vector2< T > &&other) noexceptEule::Vector2< T >
operator==(const Vector2< T > &other) constEule::Vector2< T >
operator[](std::size_t idx)Eule::Vector2< T >
operator[](std::size_t idx) constEule::Vector2< T >
rightEule::Vector2< T >static
Similar(const Vector2< T > &other, double epsilon=0.00001) constEule::Vector2< T >
SqrMagnitude() constEule::Vector2< T >
ToDouble() constEule::Vector2< T >
ToInt() constEule::Vector2< T >
upEule::Vector2< T >static
Vector2()Eule::Vector2< T >inline
Vector2(T _x, T _y)Eule::Vector2< T >inline
Vector2(const Vector2< T > &other)=defaultEule::Vector2< T >
Vector2(Vector2< T > &&other) noexcept=defaultEule::Vector2< T >
VectorScale(const Vector2< T > &scalar) constEule::Vector2< T >
xEule::Vector2< T >
yEule::Vector2< T >
zeroEule::Vector2< T >static
- - - - diff --git a/Doxygen/build/classEule_1_1Vector2.html b/Doxygen/build/classEule_1_1Vector2.html deleted file mode 100644 index 8073805..0000000 --- a/Doxygen/build/classEule_1_1Vector2.html +++ /dev/null @@ -1,1478 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule::Vector2< T > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Eule::Vector2< T > Class Template Reference
-
-
- -

Representation of a 2d vector. - More...

- -

#include <Vector2.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Vector2 ()
 
 Vector2 (T _x, T _y)
 
 Vector2 (const Vector2< T > &other)=default
 
 Vector2 (Vector2< T > &&other) noexcept=default
 
double DotProduct (const Vector2< T > &other) const
 Will compute the dot product to another Vector2. More...
 
double CrossProduct (const Vector2< T > &other) const
 Will compute the cross product to another Vector2. More...
 
double SqrMagnitude () const
 Will compute the square magnitude. More...
 
double Magnitude () const
 Will compute the magnitude. More...
 
Vector2< double > Normalize () const
 Will return the normalization of this vector. More...
 
void NormalizeSelf ()
 Will normalize this vector. More...
 
Vector2< T > VectorScale (const Vector2< T > &scalar) const
 Will scale self.n by scalar.n. More...
 
void LerpSelf (const Vector2< T > &other, double t)
 Will lerp itself towards other by t. More...
 
Vector2< double > Lerp (const Vector2< T > &other, double t) const
 Will return a lerp result between this and another vector. More...
 
bool Similar (const Vector2< T > &other, double epsilon=0.00001) const
 Will compare if two vectors are similar to a certain epsilon value. More...
 
Vector2< int > ToInt () const
 Will convert this vector to a Vector2i. More...
 
Vector2< double > ToDouble () const
 Will convert this vector to a Vector2d. More...
 
T & operator[] (std::size_t idx)
 
const T & operator[] (std::size_t idx) const
 
Vector2< T > operator+ (const Vector2< T > &other) const
 
void operator+= (const Vector2< T > &other)
 
Vector2< T > operator- (const Vector2< T > &other) const
 
void operator-= (const Vector2< T > &other)
 
Vector2< T > operator* (const T scale) const
 
void operator*= (const T scale)
 
Vector2< T > operator/ (const T scale) const
 
void operator/= (const T scale)
 
Vector2< T > operator- () const
 
 operator Vector3< T > () const
 
 operator Vector4< T > () const
 Conversion method. More...
 
void operator= (const Vector2< T > &other)
 Conversion method. More...
 
void operator= (Vector2< T > &&other) noexcept
 
bool operator== (const Vector2< T > &other) const
 
bool operator!= (const Vector2< T > &other) const
 
- - - - - -

-Public Attributes

x
 
y
 
- - - - - - - - - - - - - -

-Static Public Attributes

static const Vector2< double > up
 
static const Vector2< double > down
 
static const Vector2< double > right
 
static const Vector2< double > left
 
static const Vector2< double > one
 
static const Vector2< double > zero
 
- - - - - -

-Friends

std::ostream & operator<< (std::ostream &os, const Vector2< T > &v)
 
std::wostream & operator<< (std::wostream &os, const Vector2< T > &v)
 
-

Detailed Description

-

template<typename T>
-class Eule::Vector2< T >

- -

Representation of a 2d vector.

-

Contains a lot of utility methods.

- -

Definition at line 14 of file Vector2.h.

-

Constructor & Destructor Documentation

- -

◆ Vector2() [1/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
Eule::Vector2< T >::Vector2 ()
-
-inline
-
- -

Definition at line 17 of file Vector2.h.

-
17 : x{ 0 }, y{ 0 } {}
-
-
-
- -

◆ Vector2() [2/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
Eule::Vector2< T >::Vector2 (_x,
_y 
)
-
-inline
-
- -

Definition at line 18 of file Vector2.h.

-
18 : x{ _x }, y{ _y } {}
-
-
-
- -

◆ Vector2() [3/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
Eule::Vector2< T >::Vector2 (const Vector2< T > & other)
-
-default
-
- -
-
- -

◆ Vector2() [4/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
Eule::Vector2< T >::Vector2 (Vector2< T > && other)
-
-defaultnoexcept
-
- -
-
-

Member Function Documentation

- -

◆ CrossProduct()

- -
-
-
-template<typename T >
- - - - - - - - -
double Vector2::CrossProduct (const Vector2< T > & other) const
-
- -

Will compute the cross product to another Vector2.

- -

Definition at line 65 of file Vector2.cpp.

-
66 {
-
67  int iCross = (x * other.y) -
-
68  (y * other.x);
-
69 
-
70  return (double)iCross;
-
71 }
-
-
-
- -

◆ DotProduct()

- -
-
-
-template<typename T >
- - - - - - - - -
double Vector2::DotProduct (const Vector2< T > & other) const
-
- -

Will compute the dot product to another Vector2.

- -

Definition at line 47 of file Vector2.cpp.

-
48 {
-
49  int iDot = (x * other.x) +
-
50  (y * other.y);
-
51 
-
52  return (double)iDot;
-
53 }
-
-
-
- -

◆ Lerp()

- -
-
-
-template<typename T >
- - - - - - - - - - - - - - - - - - -
Vector2< double > Vector2::Lerp (const Vector2< T > & other,
double t 
) const
-
- -

Will return a lerp result between this and another vector.

- -

Definition at line 256 of file Vector2.cpp.

-
257 {
-
258  Vector2d copy(this->ToDouble());
-
259  copy.LerpSelf(other.ToDouble(), t);
-
260 
-
261  return copy;
-
262 }
-
-
-
- -

◆ LerpSelf()

- -
-
-
-template<typename T >
- - - - - - - - - - - - - - - - - - -
void Vector2::LerpSelf (const Vector2< T > & other,
double t 
)
-
- -

Will lerp itself towards other by t.

- -

Definition at line 238 of file Vector2.cpp.

-
239 {
-
240  const double it = 1.0 - t; // Inverse t
-
241 
-
242  x = (int)(it * (double)x + t * (double)other.x);
-
243  y = (int)(it * (double)y + t * (double)other.y);
-
244 
-
245  return;
-
246 }
-
-
-
- -

◆ Magnitude()

- -
-
-
-template<typename T >
- - - - -
double Vector2::Magnitude
-
- -

Will compute the magnitude.

- -

Definition at line 90 of file Vector2.cpp.

-
91 {
-
92  return sqrt(SqrMagnitude());
-
93 }
-
-
-
- -

◆ Normalize()

- -
-
-
-template<typename T >
- - - - -
Vector2< double > Vector2::Normalize
-
- -

Will return the normalization of this vector.

- -

Definition at line 137 of file Vector2.cpp.

-
138 {
-
139  Vector2<double> norm(x, y);
-
140  norm.NormalizeSelf();
-
141 
-
142  return norm;
-
143 }
-
-
-
- -

◆ NormalizeSelf()

- -
-
-
-template<typename T >
- - - - - - - -
void Vector2::NormalizeSelf ()
-
- -

Will normalize this vector.

- -

Definition at line 187 of file Vector2.cpp.

-
188 {
-
189  std::cerr << "Stop normalizing int-vectors!!" << std::endl;
-
190  x = 0;
-
191  y = 0;
-
192 
-
193  return;
-
194 }
-
-
-
- -

◆ operator Vector3< T >()

- -
-
-
-template<typename T >
- - - - -
Vector2::operator Vector3< T >
-
- -

Definition at line 674 of file Vector2.cpp.

-
675 {
-
676  return Vector3<T>(x, y, 0);
-
677 }
-
-
-
- -

◆ operator Vector4< T >()

- -
-
-
-template<typename T >
- - - - -
Vector2::operator Vector4< T >
-
- -

Conversion method.

- -

Definition at line 680 of file Vector2.cpp.

-
681 {
-
682  return Vector4<T>(x, y, 0, 0);
-
683 }
-
-
-
- -

◆ operator!=()

- -
-
-
-template<typename T >
- - - - - - - - -
bool Vector2::operator!= (const Vector2< T > & other) const
-
- -

Definition at line 656 of file Vector2.cpp.

-
657 {
-
658  return !operator==(other);
-
659 }
-
-
-
- -

◆ operator*()

- -
-
-
-template<typename T >
- - - - - - - - -
Vector2< T > Vector2::operator* (const T scale) const
-
- -

Definition at line 503 of file Vector2.cpp.

-
504 {
-
505  return Vector2<T>(
-
506  x * scale,
-
507  y * scale
-
508  );
-
509 }
-
-
-
- -

◆ operator*=()

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector2::operator*= (const T scale)
-
- -

Definition at line 542 of file Vector2.cpp.

-
543 {
-
544  x *= scale;
-
545  y *= scale;
-
546  return;
-
547 }
-
-
-
- -

◆ operator+()

- -
-
-
-template<typename T >
- - - - - - - - -
Vector2< T > Vector2::operator+ (const Vector2< T > & other) const
-
- -

Definition at line 346 of file Vector2.cpp.

-
347 {
-
348  return Vector2<T>(
-
349  x + other.x,
-
350  y + other.y
-
351  );
-
352 }
-
-
-
- -

◆ operator+=()

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector2::operator+= (const Vector2< T > & other)
-
- -

Definition at line 385 of file Vector2.cpp.

-
386 {
-
387  x += other.x;
-
388  y += other.y;
-
389  return;
-
390 }
-
-
-
- -

◆ operator-() [1/2]

- -
-
-
-template<typename T >
- - - - -
Vector2< T > Vector2::operator-
-
- -

Definition at line 662 of file Vector2.cpp.

-
663 {
-
664  return Vector2<T>(
-
665  -x,
-
666  -y
-
667  );
-
668 }
-
-
-
- -

◆ operator-() [2/2]

- -
-
-
-template<typename T >
- - - - - - - - -
Vector2< T > Vector2::operator- (const Vector2< T > & other) const
-
- -

Definition at line 424 of file Vector2.cpp.

-
425 {
-
426  return Vector2<T>(
-
427  x - other.x,
-
428  y - other.y
-
429  );
-
430 }
-
-
-
- -

◆ operator-=()

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector2::operator-= (const Vector2< T > & other)
-
- -

Definition at line 463 of file Vector2.cpp.

-
464 {
-
465  x -= other.x;
-
466  y -= other.y;
-
467  return;
-
468 }
-
-
-
- -

◆ operator/()

- -
-
-
-template<typename T >
- - - - - - - - -
Vector2< T > Vector2::operator/ (const T scale) const
-
- -

Definition at line 582 of file Vector2.cpp.

-
583 {
-
584  return Vector2<T>(
-
585  x / scale,
-
586  y / scale
-
587  );
-
588 }
-
-
-
- -

◆ operator/=()

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector2::operator/= (const T scale)
-
- -

Definition at line 620 of file Vector2.cpp.

-
621 {
-
622  x /= scale;
-
623  y /= scale;
-
624  return;
-
625 }
-
-
-
- -

◆ operator=() [1/2]

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector2::operator= (const Vector2< T > & other)
-
- -

Conversion method.

- -

Definition at line 630 of file Vector2.cpp.

-
631 {
-
632  x = other.x;
-
633  y = other.y;
-
634 
-
635  return;
-
636 }
-
-
-
- -

◆ operator=() [2/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
void Vector2::operator= (Vector2< T > && other)
-
-noexcept
-
- -

Definition at line 639 of file Vector2.cpp.

-
640 {
-
641  x = std::move(other.x);
-
642  y = std::move(other.y);
-
643 
-
644  return;
-
645 }
-
-
-
- -

◆ operator==()

- -
-
-
-template<typename T >
- - - - - - - - -
bool Vector2::operator== (const Vector2< T > & other) const
-
- -

Definition at line 648 of file Vector2.cpp.

-
649 {
-
650  return
-
651  (x == other.x) &&
-
652  (y == other.y);
-
653 }
-
-
-
- -

◆ operator[]() [1/2]

- -
-
-
-template<typename T >
- - - - - - - - -
T & Vector2::operator[] (std::size_t idx)
-
- -

Definition at line 267 of file Vector2.cpp.

-
268 {
-
269  switch (idx)
-
270  {
-
271  case 0:
-
272  return x;
-
273  case 1:
-
274  return y;
-
275  default:
-
276  throw std::out_of_range("Array descriptor on Vector2<T> out of range!");
-
277  }
-
278 }
-
-
-
- -

◆ operator[]() [2/2]

- -
-
-
-template<typename T >
- - - - - - - - -
const T & Vector2::operator[] (std::size_t idx) const
-
- -

Definition at line 281 of file Vector2.cpp.

-
282 {
-
283  switch (idx)
-
284  {
-
285  case 0:
-
286  return x;
-
287  case 1:
-
288  return y;
-
289  default:
-
290  throw std::out_of_range("Array descriptor on Vector2<T> out of range!");
-
291  }
-
292 }
-
-
-
- -

◆ Similar()

- -
-
-
-template<typename T >
- - - - - - - - - - - - - - - - - - -
bool Vector2::Similar (const Vector2< T > & other,
double epsilon = 0.00001 
) const
-
- -

Will compare if two vectors are similar to a certain epsilon value.

- -

Definition at line 295 of file Vector2.cpp.

-
296 {
-
297  return
-
298  (::Math::Similar(x, other.x, epsilon)) &&
-
299  (::Math::Similar(y, other.y, epsilon))
-
300  ;
-
301 }
-
-
-
- -

◆ SqrMagnitude()

- -
-
-
-template<typename T >
- - - - - - - -
double Vector2::SqrMagnitude () const
-
- -

Will compute the square magnitude.

- -

Definition at line 83 of file Vector2.cpp.

-
84 {
-
85  int iSqrMag = x*x + y*y;
-
86  return (double)iSqrMag;
-
87 }
-
-
-
- -

◆ ToDouble()

- -
-
-
-template<typename T >
- - - - -
Vector2< double > Vector2::ToDouble
-
- -

Will convert this vector to a Vector2d.

- -

Definition at line 310 of file Vector2.cpp.

-
311 {
-
312  return Vector2<double>((double)x, (double)y);
-
313 }
-
-
-
- -

◆ ToInt()

- -
-
-
-template<typename T >
- - - - -
Vector2< int > Vector2::ToInt
-
- -

Will convert this vector to a Vector2i.

- -

Definition at line 304 of file Vector2.cpp.

-
305 {
-
306  return Vector2<int>((int)x, (int)y);
-
307 }
-
-
-
- -

◆ VectorScale()

- -
-
-
-template<typename T >
- - - - - - - - -
Vector2< int > Vector2::VectorScale (const Vector2< T > & scalar) const
-
- -

Will scale self.n by scalar.n.

- -

Definition at line 127 of file Vector2.cpp.

-
128 {
-
129  return Vector2<int>(
-
130  x * scalar.x,
-
131  y * scalar.y
-
132  );
-
133 }
-
-
-
-

Friends And Related Function Documentation

- -

◆ operator<< [1/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::ostream& operator<< (std::ostream & os,
const Vector2< T > & v 
)
-
-friend
-
- -

Definition at line 80 of file Vector2.h.

-
81  {
-
82  return os << "[x: " << v.x << " y: " << v.y << "]";
-
83  }
-
-
-
- -

◆ operator<< [2/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::wostream& operator<< (std::wostream & os,
const Vector2< T > & v 
)
-
-friend
-
- -

Definition at line 84 of file Vector2.h.

-
85  {
-
86  return os << L"[x: " << v.x << L" y: " << v.y << L"]";
-
87  }
-
-
-
-

Member Data Documentation

- -

◆ down

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector2< double > Vector2::down
-
-static
-
- -

Definition at line 94 of file Vector2.h.

- -
-
- -

◆ left

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector2< double > Vector2::left
-
-static
-
- -

Definition at line 96 of file Vector2.h.

- -
-
- -

◆ one

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector2< double > Vector2::one
-
-static
-
- -

Definition at line 97 of file Vector2.h.

- -
-
- -

◆ right

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector2< double > Vector2::right
-
-static
-
- -

Definition at line 95 of file Vector2.h.

- -
-
- -

◆ up

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector2< double > Vector2::up
-
-static
-
- -

Definition at line 93 of file Vector2.h.

- -
-
- -

◆ x

- -
-
-
-template<typename T >
- - - - -
T Eule::Vector2< T >::x
-
- -

Definition at line 89 of file Vector2.h.

- -
-
- -

◆ y

- -
-
-
-template<typename T >
- - - - -
T Eule::Vector2< T >::y
-
- -

Definition at line 90 of file Vector2.h.

- -
-
- -

◆ zero

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector2< double > Vector2::zero
-
-static
-
- -

Definition at line 98 of file Vector2.h.

- -
-
-
The documentation for this class was generated from the following files: -
-
Representation of a 3d vector.
Definition: Matrix4x4.h:9
-
double SqrMagnitude() const
Will compute the square magnitude.
Definition: Vector2.cpp:83
-
Vector2< double > ToDouble() const
Will convert this vector to a Vector2d.
Definition: Vector2.cpp:310
- -
static constexpr bool Similar(const double a, const double b, const double epsilon=0.00001)
Compares two double values with a given accuracy.
Definition: Math.h:102
- - -
bool operator==(const Vector2< T > &other) const
Definition: Vector2.cpp:648
-
Representation of a 4d vector.
Definition: Vector2.h:8
- - - - diff --git a/Doxygen/build/classEule_1_1Vector3-members.html b/Doxygen/build/classEule_1_1Vector3-members.html deleted file mode 100644 index b727041..0000000 --- a/Doxygen/build/classEule_1_1Vector3-members.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - -Leonetienne/Eule: Member List - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Eule::Vector3< T > Member List
-
-
- -

This is the complete list of members for Eule::Vector3< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
backwardEule::Vector3< T >static
CrossProduct(const Vector3< T > &other) constEule::Vector3< T >
DotProduct(const Vector3< T > &other) constEule::Vector3< T >
downEule::Vector3< T >static
forwardEule::Vector3< T >static
leftEule::Vector3< T >static
Lerp(const Vector3< T > &other, double t) constEule::Vector3< T >
LerpSelf(const Vector3< T > &other, double t)Eule::Vector3< T >
Magnitude() constEule::Vector3< T >
Normalize() constEule::Vector3< T >
NormalizeSelf()Eule::Vector3< T >
oneEule::Vector3< T >static
operator Vector2< T >() constEule::Vector3< T >
operator Vector4< T >() constEule::Vector3< T >
operator!=(const Vector3< T > &other) constEule::Vector3< T >
operator*(const T scale) constEule::Vector3< T >
operator*(const Matrix4x4 &mat) constEule::Vector3< T >
operator*=(const T scale)Eule::Vector3< T >
operator*=(const Matrix4x4 &mat)Eule::Vector3< T >
operator+(const Vector3< T > &other) constEule::Vector3< T >
operator+=(const Vector3< T > &other)Eule::Vector3< T >
operator-(const Vector3< T > &other) constEule::Vector3< T >
operator-() constEule::Vector3< T >
operator-=(const Vector3< T > &other)Eule::Vector3< T >
operator/(const T scale) constEule::Vector3< T >
operator/=(const T scale)Eule::Vector3< T >
operator<<(std::ostream &os, const Vector3< T > &v)Eule::Vector3< T >friend
operator<<(std::wostream &os, const Vector3< T > &v)Eule::Vector3< T >friend
operator=(const Vector3< T > &other)Eule::Vector3< T >
operator=(Vector3< T > &&other) noexceptEule::Vector3< T >
operator==(const Vector3< T > &other) constEule::Vector3< T >
operator[](std::size_t idx)Eule::Vector3< T >
operator[](std::size_t idx) constEule::Vector3< T >
rightEule::Vector3< T >static
Similar(const Vector3< T > &other, double epsilon=0.00001) constEule::Vector3< T >
SqrMagnitude() constEule::Vector3< T >
ToDouble() constEule::Vector3< T >
ToInt() constEule::Vector3< T >
upEule::Vector3< T >static
Vector3()Eule::Vector3< T >inline
Vector3(T _x, T _y, T _z)Eule::Vector3< T >inline
Vector3(const Vector3< T > &other)=defaultEule::Vector3< T >
Vector3(Vector3< T > &&other) noexcept=defaultEule::Vector3< T >
VectorScale(const Vector3< T > &scalar) constEule::Vector3< T >
xEule::Vector3< T >
yEule::Vector3< T >
zEule::Vector3< T >
zeroEule::Vector3< T >static
- - - - diff --git a/Doxygen/build/classEule_1_1Vector3.html b/Doxygen/build/classEule_1_1Vector3.html deleted file mode 100644 index 6174868..0000000 --- a/Doxygen/build/classEule_1_1Vector3.html +++ /dev/null @@ -1,1672 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule::Vector3< T > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Eule::Vector3< T > Class Template Reference
-
-
- -

Representation of a 3d vector. - More...

- -

#include <Matrix4x4.h>

-
-Collaboration diagram for Eule::Vector3< T >:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Vector3 ()
 
 Vector3 (T _x, T _y, T _z)
 
 Vector3 (const Vector3< T > &other)=default
 
 Vector3 (Vector3< T > &&other) noexcept=default
 
double DotProduct (const Vector3< T > &other) const
 Will compute the dot product to another Vector3. More...
 
Vector3< double > CrossProduct (const Vector3< T > &other) const
 Will compute the cross product to another Vector3. More...
 
double SqrMagnitude () const
 Will compute the square magnitude. More...
 
double Magnitude () const
 Will compute the magnitude. More...
 
Vector3< double > Normalize () const
 Will return the normalization of this vector. More...
 
void NormalizeSelf ()
 Will normalize this vector. More...
 
Vector3< T > VectorScale (const Vector3< T > &scalar) const
 Will scale self.n by scalar.n. More...
 
void LerpSelf (const Vector3< T > &other, double t)
 Will lerp itself towards other by t. More...
 
Vector3< double > Lerp (const Vector3< T > &other, double t) const
 Will return a lerp result between this and another vector. More...
 
bool Similar (const Vector3< T > &other, double epsilon=0.00001) const
 Will compare if two vectors are similar to a certain epsilon value. More...
 
Vector3< int > ToInt () const
 Will convert this vector to a Vector3i. More...
 
Vector3< double > ToDouble () const
 Will convert this vector to a Vector3d. More...
 
T & operator[] (std::size_t idx)
 
const T & operator[] (std::size_t idx) const
 
Vector3< T > operator+ (const Vector3< T > &other) const
 
void operator+= (const Vector3< T > &other)
 
Vector3< T > operator- (const Vector3< T > &other) const
 
void operator-= (const Vector3< T > &other)
 
Vector3< T > operator* (const T scale) const
 
void operator*= (const T scale)
 
Vector3< T > operator/ (const T scale) const
 
void operator/= (const T scale)
 
Vector3< T > operator* (const Matrix4x4 &mat) const
 
void operator*= (const Matrix4x4 &mat)
 
Vector3< T > operator- () const
 
 operator Vector2< T > () const
 
 operator Vector4< T > () const
 Conversion method. More...
 
void operator= (const Vector3< T > &other)
 Conversion method. More...
 
void operator= (Vector3< T > &&other) noexcept
 
bool operator== (const Vector3< T > &other) const
 
bool operator!= (const Vector3< T > &other) const
 
- - - - - - - -

-Public Attributes

x
 
y
 
z
 
- - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const Vector3< double > up
 
static const Vector3< double > down
 
static const Vector3< double > right
 
static const Vector3< double > left
 
static const Vector3< double > forward
 
static const Vector3< double > backward
 
static const Vector3< double > one
 
static const Vector3< double > zero
 
- - - - - -

-Friends

std::ostream & operator<< (std::ostream &os, const Vector3< T > &v)
 
std::wostream & operator<< (std::wostream &os, const Vector3< T > &v)
 
-

Detailed Description

-

template<typename T>
-class Eule::Vector3< T >

- -

Representation of a 3d vector.

-

Contains a lot of utility methods.

- -

Definition at line 9 of file Matrix4x4.h.

-

Constructor & Destructor Documentation

- -

◆ Vector3() [1/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
Eule::Vector3< T >::Vector3 ()
-
-inline
-
- -

Definition at line 20 of file Vector3.h.

-
20 : x{ 0 }, y{ 0 }, z{ 0 } {}
-
-
-
- -

◆ Vector3() [2/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
Eule::Vector3< T >::Vector3 (_x,
_y,
_z 
)
-
-inline
-
- -

Definition at line 21 of file Vector3.h.

-
21 : x{ _x }, y{ _y }, z{ _z } {}
-
-
-
- -

◆ Vector3() [3/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
Eule::Vector3< T >::Vector3 (const Vector3< T > & other)
-
-default
-
- -
-
- -

◆ Vector3() [4/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
Eule::Vector3< T >::Vector3 (Vector3< T > && other)
-
-defaultnoexcept
-
- -
-
-

Member Function Documentation

- -

◆ CrossProduct()

- -
-
-
-template<typename T >
- - - - - - - - -
Vector3< double > Vector3::CrossProduct (const Vector3< T > & other) const
-
- -

Will compute the cross product to another Vector3.

- -

Definition at line 68 of file Vector3.cpp.

-
69 {
-
70  Vector3<double> cp;
-
71  cp.x = ((double)y * (double)other.z) - ((double)z * (double)other.y);
-
72  cp.y = ((double)z * (double)other.x) - ((double)x * (double)other.z);
-
73  cp.z = ((double)x * (double)other.y) - ((double)y * (double)other.x);
-
74 
-
75  return cp;
-
76 }
-
-
-
- -

◆ DotProduct()

- -
-
-
-template<typename T >
- - - - - - - - -
double Vector3::DotProduct (const Vector3< T > & other) const
-
- -

Will compute the dot product to another Vector3.

- -

Definition at line 48 of file Vector3.cpp.

-
49 {
-
50  int iDot = (x * other.x) + (y * other.y) + (z * other.z);
-
51  return (double)iDot;
-
52 }
-
-
-
- -

◆ Lerp()

- -
-
-
-template<typename T >
- - - - - - - - - - - - - - - - - - -
Vector3< double > Vector3::Lerp (const Vector3< T > & other,
double t 
) const
-
- -

Will return a lerp result between this and another vector.

- -

Definition at line 330 of file Vector3.cpp.

-
331 {
-
332  Vector3d copy(this->ToDouble());
-
333  copy.LerpSelf(other.ToDouble(), t);
-
334 
-
335  return copy;
-
336 }
-
-
-
- -

◆ LerpSelf()

- -
-
-
-template<typename T >
- - - - - - - - - - - - - - - - - - -
void Vector3::LerpSelf (const Vector3< T > & other,
double t 
)
-
- -

Will lerp itself towards other by t.

- -

Definition at line 311 of file Vector3.cpp.

-
312 {
-
313  const double it = 1.0 - t; // Inverse t
-
314 
-
315  x = (int)(it * (double)x + t * (double)other.x);
-
316  y = (int)(it * (double)y + t * (double)other.y);
-
317  z = (int)(it * (double)z + t * (double)other.z);
-
318 
-
319  return;
-
320 }
-
-
-
- -

◆ Magnitude()

- -
-
-
-template<typename T >
- - - - -
double Vector3::Magnitude
-
- -

Will compute the magnitude.

- -

Definition at line 95 of file Vector3.cpp.

-
96 {
-
97  return sqrt(SqrMagnitude());
-
98 }
-
-
-
- -

◆ Normalize()

- -
-
-
-template<typename T >
- - - - -
Vector3< double > Vector3::Normalize
-
- -

Will return the normalization of this vector.

- -

Definition at line 147 of file Vector3.cpp.

-
148 {
-
149  Vector3<double> norm(x, y, z);
-
150  norm.NormalizeSelf();
-
151 
-
152  return norm;
-
153 }
-
-
-
- -

◆ NormalizeSelf()

- -
-
-
-template<typename T >
- - - - - - - -
void Vector3::NormalizeSelf ()
-
- -

Will normalize this vector.

- -

Definition at line 200 of file Vector3.cpp.

-
201 {
-
202  std::cerr << "Stop normalizing int-vectors!!" << std::endl;
-
203  x = 0;
-
204  y = 0;
-
205  z = 0;
-
206 
-
207  return;
-
208 }
-
-
-
- -

◆ operator Vector2< T >()

- -
-
-
-template<typename T >
- - - - -
Vector3::operator Vector2< T >
-
- -

Definition at line 873 of file Vector3.cpp.

-
874 {
-
875  return Vector2<T>(x, y);
-
876 }
-
-
-
- -

◆ operator Vector4< T >()

- -
-
-
-template<typename T >
- - - - -
Vector3::operator Vector4< T >
-
- -

Conversion method.

- -

Definition at line 879 of file Vector3.cpp.

-
880 {
-
881  return Vector4<T>(x, y, z, 0);
-
882 }
-
-
-
- -

◆ operator!=()

- -
-
-
-template<typename T >
- - - - - - - - -
bool Vector3::operator!= (const Vector3< T > & other) const
-
- -

Definition at line 864 of file Vector3.cpp.

-
865 {
-
866  return !operator==(other);
-
867 }
-
-
-
- -

◆ operator*() [1/2]

- -
-
-
-template<typename T >
- - - - - - - - -
Vector3< int > Vector3::operator* (const Matrix4x4mat) const
-
- -

Definition at line 731 of file Vector3.cpp.

-
732 {
-
733  Vector3<double> newVec;
-
734 
-
735  // Rotation, Scaling
-
736  newVec.x = ((mat[0][0] * x) + (mat[1][0] * y) + (mat[2][0] * z));
-
737  newVec.y = ((mat[0][1] * x) + (mat[1][1] * y) + (mat[2][1] * z));
-
738  newVec.z = ((mat[0][2] * x) + (mat[1][2] * y) + (mat[2][2] * z));
-
739 
-
740  // Translation
-
741  newVec.x += mat[0][3];
-
742  newVec.y += mat[1][3];
-
743  newVec.z += mat[2][3];
-
744 
-
745  return Vector3<int>(
-
746  (int)newVec.x,
-
747  (int)newVec.y,
-
748  (int)newVec.z
-
749  );
-
750 }
-
-
-
- -

◆ operator*() [2/2]

- -
-
-
-template<typename T >
- - - - - - - - -
Vector3< T > Vector3::operator* (const T scale) const
-
- -

Definition at line 541 of file Vector3.cpp.

-
542 {
-
543  return Vector3<T>(
-
544  x * scale,
-
545  y * scale,
-
546  z * scale
-
547  );
-
548 }
-
-
-
- -

◆ operator*=() [1/2]

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector3::operator*= (const Matrix4x4mat)
-
- -

Definition at line 836 of file Vector3.cpp.

-
837 {
-
838  Vector3<double> buffer(x, y, z);
-
839 
-
840  x = (int)((mat[0][0] * buffer.x) + (mat[0][1] * buffer.y) + (mat[0][2] * buffer.z));
-
841  y = (int)((mat[1][0] * buffer.x) + (mat[1][1] * buffer.y) + (mat[1][2] * buffer.z));
-
842  z = (int)((mat[2][0] * buffer.x) + (mat[2][1] * buffer.y) + (mat[2][2] * buffer.z));
-
843 
-
844  // Translation
-
845  x += (int)mat[0][3];
-
846  y += (int)mat[1][3];
-
847  z += (int)mat[2][3];
-
848 
-
849  return;
-
850 }
-
-
-
- -

◆ operator*=() [2/2]

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector3::operator*= (const T scale)
-
- -

Definition at line 583 of file Vector3.cpp.

-
584 {
-
585  x *= scale;
-
586  y *= scale;
-
587  z *= scale;
-
588  return;
-
589 }
-
-
-
- -

◆ operator+()

- -
-
-
-template<typename T >
- - - - - - - - -
Vector3< T > Vector3::operator+ (const Vector3< T > & other) const
-
- -

Definition at line 372 of file Vector3.cpp.

-
373 {
-
374  return Vector3<T>(
-
375  x + other.x,
-
376  y + other.y,
-
377  z + other.z
-
378  );
-
379 }
-
-
-
- -

◆ operator+=()

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector3::operator+= (const Vector3< T > & other)
-
- -

Definition at line 414 of file Vector3.cpp.

-
415 {
-
416  x += other.x;
-
417  y += other.y;
-
418  z += other.z;
-
419  return;
-
420 }
-
-
-
- -

◆ operator-() [1/2]

- -
-
-
-template<typename T >
- - - - -
Vector3< T > Vector3::operator-
-
- -

Definition at line 806 of file Vector3.cpp.

-
807 {
-
808  return Vector3<T>(
-
809  -x,
-
810  -y,
-
811  -z
-
812  );
-
813 }
-
-
-
- -

◆ operator-() [2/2]

- -
-
-
-template<typename T >
- - - - - - - - -
Vector3< T > Vector3::operator- (const Vector3< T > & other) const
-
- -

Definition at line 456 of file Vector3.cpp.

-
457 {
-
458  return Vector3<T>(
-
459  x - other.x,
-
460  y - other.y,
-
461  z - other.z
-
462  );
-
463 }
-
-
-
- -

◆ operator-=()

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector3::operator-= (const Vector3< T > & other)
-
- -

Definition at line 498 of file Vector3.cpp.

-
499 {
-
500  x -= other.x;
-
501  y -= other.y;
-
502  z -= other.z;
-
503  return;
-
504 }
-
-
-
- -

◆ operator/()

- -
-
-
-template<typename T >
- - - - - - - - -
Vector3< T > Vector3::operator/ (const T scale) const
-
- -

Definition at line 626 of file Vector3.cpp.

-
627 {
-
628  return Vector3<T>(
-
629  x / scale,
-
630  y / scale,
-
631  z / scale
-
632  );
-
633 }
-
-
-
- -

◆ operator/=()

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector3::operator/= (const T scale)
-
- -

Definition at line 667 of file Vector3.cpp.

-
668 {
-
669  x /= scale;
-
670  y /= scale;
-
671  z /= scale;
-
672  return;
-
673 }
-
-
-
- -

◆ operator=() [1/2]

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector3::operator= (const Vector3< T > & other)
-
- -

Conversion method.

- -

Definition at line 816 of file Vector3.cpp.

-
817 {
-
818  x = other.x;
-
819  y = other.y;
-
820  z = other.z;
-
821 
-
822  return;
-
823 }
-
-
-
- -

◆ operator=() [2/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
void Vector3::operator= (Vector3< T > && other)
-
-noexcept
-
- -

Definition at line 826 of file Vector3.cpp.

-
827 {
-
828  x = std::move(other.x);
-
829  y = std::move(other.y);
-
830  z = std::move(other.z);
-
831 
-
832  return;
-
833 }
-
-
-
- -

◆ operator==()

- -
-
-
-template<typename T >
- - - - - - - - -
bool Vector3::operator== (const Vector3< T > & other) const
-
- -

Definition at line 855 of file Vector3.cpp.

-
856 {
-
857  return
-
858  (x == other.x) &&
-
859  (y == other.y) &&
-
860  (z == other.z);
-
861 }
-
-
-
- -

◆ operator[]() [1/2]

- -
-
-
-template<typename T >
- - - - - - - - -
T & Vector3::operator[] (std::size_t idx)
-
- -

Definition at line 235 of file Vector3.cpp.

-
236 {
-
237  switch (idx)
-
238  {
-
239  case 0:
-
240  return x;
-
241  case 1:
-
242  return y;
-
243  case 2:
-
244  return z;
-
245  default:
-
246  throw std::out_of_range("Array descriptor on Vector3<T> out of range!");
-
247  }
-
248 }
-
-
-
- -

◆ operator[]() [2/2]

- -
-
-
-template<typename T >
- - - - - - - - -
const T & Vector3::operator[] (std::size_t idx) const
-
- -

Definition at line 251 of file Vector3.cpp.

-
252 {
-
253  switch (idx)
-
254  {
-
255  case 0:
-
256  return x;
-
257  case 1:
-
258  return y;
-
259  case 2:
-
260  return z;
-
261  default:
-
262  throw std::out_of_range("Array descriptor on Vector3<T> out of range!");
-
263  }
-
264 }
-
-
-
- -

◆ Similar()

- -
-
-
-template<typename T >
- - - - - - - - - - - - - - - - - - -
bool Vector3::Similar (const Vector3< T > & other,
double epsilon = 0.00001 
) const
-
- -

Will compare if two vectors are similar to a certain epsilon value.

- -

Definition at line 213 of file Vector3.cpp.

-
214 {
-
215  return
-
216  (::Math::Similar(x, other.x, epsilon)) &&
-
217  (::Math::Similar(y, other.y, epsilon)) &&
-
218  (::Math::Similar(z, other.z, epsilon))
-
219  ;
-
220 }
-
-
-
- -

◆ SqrMagnitude()

- -
-
-
-template<typename T >
- - - - - - - -
double Vector3::SqrMagnitude () const
-
- -

Will compute the square magnitude.

- -

Definition at line 88 of file Vector3.cpp.

-
89 {
-
90  int iSqrMag = x*x + y*y + z*z;
-
91  return (double)iSqrMag;
-
92 }
-
-
-
- -

◆ ToDouble()

- -
-
-
-template<typename T >
- - - - -
Vector3< double > Vector3::ToDouble
-
- -

Will convert this vector to a Vector3d.

- -

Definition at line 229 of file Vector3.cpp.

-
230 {
-
231  return Vector3<double>((double)x, (double)y, (double)z);
-
232 }
-
-
-
- -

◆ ToInt()

- -
-
-
-template<typename T >
- - - - -
Vector3< int > Vector3::ToInt
-
- -

Will convert this vector to a Vector3i.

- -

Definition at line 223 of file Vector3.cpp.

-
224 {
-
225  return Vector3<int>((int)x, (int)y, (int)z);
-
226 }
-
-
-
- -

◆ VectorScale()

- -
-
-
-template<typename T >
- - - - - - - - -
Vector3< int > Vector3::VectorScale (const Vector3< T > & scalar) const
-
- -

Will scale self.n by scalar.n.

- -

Definition at line 135 of file Vector3.cpp.

-
136 {
-
137  return Vector3<int>(
-
138  x * scalar.x,
-
139  y * scalar.y,
-
140  z * scalar.z
-
141  );
-
142 }
-
-
-
-

Friends And Related Function Documentation

- -

◆ operator<< [1/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::ostream& operator<< (std::ostream & os,
const Vector3< T > & v 
)
-
-friend
-
- -

Definition at line 85 of file Vector3.h.

-
86  {
-
87  return os << "[x: " << v.x << " y: " << v.y << " z: " << v.z << "]";
-
88  }
-
-
-
- -

◆ operator<< [2/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::wostream& operator<< (std::wostream & os,
const Vector3< T > & v 
)
-
-friend
-
- -

Definition at line 89 of file Vector3.h.

-
90  {
-
91  return os << L"[x: " << v.x << L" y: " << v.y << L" z: " << v.z << L"]";
-
92  }
-
-
-
-

Member Data Documentation

- -

◆ backward

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector3< double > Vector3::backward
-
-static
-
- -

Definition at line 104 of file Vector3.h.

- -
-
- -

◆ down

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector3< double > Vector3::down
-
-static
-
- -

Definition at line 100 of file Vector3.h.

- -
-
- -

◆ forward

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector3< double > Vector3::forward
-
-static
-
- -

Definition at line 103 of file Vector3.h.

- -
-
- -

◆ left

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector3< double > Vector3::left
-
-static
-
- -

Definition at line 102 of file Vector3.h.

- -
-
- -

◆ one

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector3< double > Vector3::one
-
-static
-
- -

Definition at line 105 of file Vector3.h.

- -
-
- -

◆ right

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector3< double > Vector3::right
-
-static
-
- -

Definition at line 101 of file Vector3.h.

- -
-
- -

◆ up

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector3< double > Vector3::up
-
-static
-
- -

Definition at line 99 of file Vector3.h.

- -
-
- -

◆ x

- -
-
-
-template<typename T >
- - - - -
T Eule::Vector3< T >::x
-
- -

Definition at line 94 of file Vector3.h.

- -
-
- -

◆ y

- -
-
-
-template<typename T >
- - - - -
T Eule::Vector3< T >::y
-
- -

Definition at line 95 of file Vector3.h.

- -
-
- -

◆ z

- -
-
-
-template<typename T >
- - - - -
T Eule::Vector3< T >::z
-
- -

Definition at line 96 of file Vector3.h.

- -
-
- -

◆ zero

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector3< double > Vector3::zero
-
-static
-
- -

Definition at line 106 of file Vector3.h.

- -
-
-
The documentation for this class was generated from the following files: -
- -
Vector3< double > ToDouble() const
Will convert this vector to a Vector3d.
Definition: Vector3.cpp:229
-
bool operator==(const Vector3< T > &other) const
Definition: Vector3.cpp:855
- - -
Representation of a 2d vector.
Definition: Vector2.h:14
-
static constexpr bool Similar(const double a, const double b, const double epsilon=0.00001)
Compares two double values with a given accuracy.
Definition: Math.h:102
-
double SqrMagnitude() const
Will compute the square magnitude.
Definition: Vector3.cpp:88
- -
Representation of a 4d vector.
Definition: Vector2.h:8
- - - - diff --git a/Doxygen/build/classEule_1_1Vector3__coll__graph.map b/Doxygen/build/classEule_1_1Vector3__coll__graph.map deleted file mode 100644 index 1e1b359..0000000 --- a/Doxygen/build/classEule_1_1Vector3__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doxygen/build/classEule_1_1Vector3__coll__graph.md5 b/Doxygen/build/classEule_1_1Vector3__coll__graph.md5 deleted file mode 100644 index 71ea584..0000000 --- a/Doxygen/build/classEule_1_1Vector3__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b3a7a2417e6523c8919c534d316cd3d7 \ No newline at end of file diff --git a/Doxygen/build/classEule_1_1Vector3__coll__graph.png b/Doxygen/build/classEule_1_1Vector3__coll__graph.png deleted file mode 100644 index 2a8937b43d18864c2d96f06ec484e71f3a019585..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12048 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 XMf|GGwHGkrjv)0^PP{-=-}iq2&qHFI diff --git a/Doxygen/build/classEule_1_1Vector4-members.html b/Doxygen/build/classEule_1_1Vector4-members.html deleted file mode 100644 index bf62005..0000000 --- a/Doxygen/build/classEule_1_1Vector4-members.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -Leonetienne/Eule: Member List - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Eule::Vector4< T > Member List
-
-
- -

This is the complete list of members for Eule::Vector4< T >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
backwardEule::Vector4< T >static
downEule::Vector4< T >static
forwardEule::Vector4< T >static
futureEule::Vector4< T >static
leftEule::Vector4< T >static
Lerp(const Vector4< T > &other, double t) constEule::Vector4< T >
LerpSelf(const Vector4< T > &other, double t)Eule::Vector4< T >
Magnitude() constEule::Vector4< T >
Normalize() constEule::Vector4< T >
NormalizeSelf()Eule::Vector4< T >
oneEule::Vector4< T >static
operator Vector2< T >() constEule::Vector4< T >
operator Vector3< T >() constEule::Vector4< T >
operator!=(const Vector4< T > &other) constEule::Vector4< T >
operator*(const T scale) constEule::Vector4< T >
operator*(const Matrix4x4 &mat) constEule::Vector4< T >
operator*=(const T scale)Eule::Vector4< T >
operator*=(const Matrix4x4 &mat)Eule::Vector4< T >
operator+(const Vector4< T > &other) constEule::Vector4< T >
operator+=(const Vector4< T > &other)Eule::Vector4< T >
operator-(const Vector4< T > &other) constEule::Vector4< T >
operator-() constEule::Vector4< T >
operator-=(const Vector4< T > &other)Eule::Vector4< T >
operator/(const T scale) constEule::Vector4< T >
operator/=(const T scale)Eule::Vector4< T >
operator<<(std::ostream &os, const Vector4< T > &v)Eule::Vector4< T >friend
operator<<(std::wostream &os, const Vector4< T > &v)Eule::Vector4< T >friend
operator=(const Vector4< T > &other)Eule::Vector4< T >
operator=(Vector4< T > &&other) noexceptEule::Vector4< T >
operator==(const Vector4< T > &other) constEule::Vector4< T >
operator[](std::size_t idx)Eule::Vector4< T >
operator[](std::size_t idx) constEule::Vector4< T >
pastEule::Vector4< T >static
rightEule::Vector4< T >static
Similar(const Vector4< T > &other, double epsilon=0.00001) constEule::Vector4< T >
SqrMagnitude() constEule::Vector4< T >
ToDouble() constEule::Vector4< T >
ToInt() constEule::Vector4< T >
upEule::Vector4< T >static
Vector4()Eule::Vector4< T >inline
Vector4(T _x, T _y, T _z, T _w)Eule::Vector4< T >inline
Vector4(const Vector4< T > &other)=defaultEule::Vector4< T >
Vector4(Vector4< T > &&other) noexcept=defaultEule::Vector4< T >
VectorScale(const Vector4< T > &scalar) constEule::Vector4< T >
wEule::Vector4< T >
xEule::Vector4< T >
yEule::Vector4< T >
zEule::Vector4< T >
zeroEule::Vector4< T >static
- - - - diff --git a/Doxygen/build/classEule_1_1Vector4.html b/Doxygen/build/classEule_1_1Vector4.html deleted file mode 100644 index 5fd52ea..0000000 --- a/Doxygen/build/classEule_1_1Vector4.html +++ /dev/null @@ -1,1703 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule::Vector4< T > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
Eule::Vector4< T > Class Template Reference
-
-
- -

Representation of a 4d vector. - More...

- -

#include <Vector2.h>

-
-Collaboration diagram for Eule::Vector4< T >:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Vector4 ()
 
 Vector4 (T _x, T _y, T _z, T _w)
 
 Vector4 (const Vector4< T > &other)=default
 
 Vector4 (Vector4< T > &&other) noexcept=default
 
double SqrMagnitude () const
 Will compute the square magnitude. More...
 
double Magnitude () const
 Will compute the magnitude. More...
 
Vector4< double > Normalize () const
 Will return the normalization of this vector. More...
 
void NormalizeSelf ()
 Will normalize this vector. More...
 
Vector4< T > VectorScale (const Vector4< T > &scalar) const
 Will scale self.n by scalar.n. More...
 
void LerpSelf (const Vector4< T > &other, double t)
 Will lerp itself towards other by t. More...
 
Vector4< double > Lerp (const Vector4< T > &other, double t) const
 Will return a lerp result between this and another vector. More...
 
bool Similar (const Vector4< T > &other, double epsilon=0.00001) const
 Will compare if two vectors are similar to a certain epsilon value. More...
 
Vector4< int > ToInt () const
 Will convert this vector to a Vector4i. More...
 
Vector4< double > ToDouble () const
 Will convert this vector to a Vector4d. More...
 
T & operator[] (std::size_t idx)
 
const T & operator[] (std::size_t idx) const
 
Vector4< T > operator+ (const Vector4< T > &other) const
 
void operator+= (const Vector4< T > &other)
 
Vector4< T > operator- (const Vector4< T > &other) const
 
void operator-= (const Vector4< T > &other)
 
Vector4< T > operator* (const T scale) const
 
void operator*= (const T scale)
 
Vector4< T > operator/ (const T scale) const
 
void operator/= (const T scale)
 
Vector4< T > operator* (const Matrix4x4 &mat) const
 
void operator*= (const Matrix4x4 &mat)
 
Vector4< T > operator- () const
 
 operator Vector2< T > () const
 
 operator Vector3< T > () const
 Conversion method. More...
 
void operator= (const Vector4< T > &other)
 Conversion method. More...
 
void operator= (Vector4< T > &&other) noexcept
 
bool operator== (const Vector4< T > &other) const
 
bool operator!= (const Vector4< T > &other) const
 
- - - - - - - - - -

-Public Attributes

x
 
y
 
z
 
w
 
- - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const Vector4< double > up
 
static const Vector4< double > down
 
static const Vector4< double > right
 
static const Vector4< double > left
 
static const Vector4< double > forward
 
static const Vector4< double > backward
 
static const Vector4< double > future
 
static const Vector4< double > past
 
static const Vector4< double > one
 
static const Vector4< double > zero
 
- - - - - -

-Friends

std::ostream & operator<< (std::ostream &os, const Vector4< T > &v)
 
std::wostream & operator<< (std::wostream &os, const Vector4< T > &v)
 
-

Detailed Description

-

template<typename T>
-class Eule::Vector4< T >

- -

Representation of a 4d vector.

-

Contains a lot of utility methods.

- -

Definition at line 8 of file Vector2.h.

-

Constructor & Destructor Documentation

- -

◆ Vector4() [1/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
Eule::Vector4< T >::Vector4 ()
-
-inline
-
- -

Definition at line 20 of file Vector4.h.

-
20 : x{ 0 }, y{ 0 }, z{ 0 }, w{ 0 } {}
-
-
-
- -

◆ Vector4() [2/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Eule::Vector4< T >::Vector4 (_x,
_y,
_z,
_w 
)
-
-inline
-
- -

Definition at line 21 of file Vector4.h.

-
21 : x{ _x }, y{ _y }, z{ _z }, w{ _w } {}
-
-
-
- -

◆ Vector4() [3/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
Eule::Vector4< T >::Vector4 (const Vector4< T > & other)
-
-default
-
- -
-
- -

◆ Vector4() [4/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
Eule::Vector4< T >::Vector4 (Vector4< T > && other)
-
-defaultnoexcept
-
- -
-
-

Member Function Documentation

- -

◆ Lerp()

- -
-
-
-template<typename T >
- - - - - - - - - - - - - - - - - - -
Vector4< double > Vector4::Lerp (const Vector4< T > & other,
double t 
) const
-
- -

Will return a lerp result between this and another vector.

- -

Definition at line 287 of file Vector4.cpp.

-
288 {
-
289  Vector4d copy(this->ToDouble());
-
290  copy.LerpSelf(other.ToDouble(), t);
-
291 
-
292  return copy;
-
293 }
-
-
-
- -

◆ LerpSelf()

- -
-
-
-template<typename T >
- - - - - - - - - - - - - - - - - - -
void Vector4::LerpSelf (const Vector4< T > & other,
double t 
)
-
- -

Will lerp itself towards other by t.

- -

Definition at line 267 of file Vector4.cpp.

-
268 {
-
269  const double it = 1.0 - t;
-
270 
-
271  x = (int)(it * (double)x + t * (double)other.x);
-
272  y = (int)(it * (double)y + t * (double)other.y);
-
273  z = (int)(it * (double)z + t * (double)other.z);
-
274  w = (int)(it * (double)w + t * (double)other.w);
-
275 
-
276  return;
-
277 }
-
-
-
- -

◆ Magnitude()

- -
-
-
-template<typename T >
- - - - -
double Vector4::Magnitude
-
- -

Will compute the magnitude.

- -

Definition at line 38 of file Vector4.cpp.

-
39 {
-
40  return sqrt(SqrMagnitude());
-
41 }
-
-
-
- -

◆ Normalize()

- -
-
-
-template<typename T >
- - - - -
Vector4< double > Vector4::Normalize
-
- -

Will return the normalization of this vector.

- -

Definition at line 92 of file Vector4.cpp.

-
93 {
-
94  Vector4<double> norm(x, y, z, w);
-
95  norm.NormalizeSelf();
-
96 
-
97  return norm;
-
98 }
-
-
-
- -

◆ NormalizeSelf()

- -
-
-
-template<typename T >
- - - - - - - -
void Vector4::NormalizeSelf ()
-
- -

Will normalize this vector.

- -

Definition at line 148 of file Vector4.cpp.

-
149 {
-
150  std::cerr << "Stop normalizing int-vectors!!" << std::endl;
-
151  x = 0;
-
152  y = 0;
-
153  z = 0;
-
154  w = 0;
-
155 
-
156  return;
-
157 }
-
-
-
- -

◆ operator Vector2< T >()

- -
-
-
-template<typename T >
- - - - -
Vector4::operator Vector2< T >
-
- -

Definition at line 775 of file Vector4.cpp.

-
776 {
-
777  return Vector2<T>(x, y);
-
778 }
-
-
-
- -

◆ operator Vector3< T >()

- -
-
-
-template<typename T >
- - - - -
Vector4::operator Vector3< T >
-
- -

Conversion method.

- -

Definition at line 781 of file Vector4.cpp.

-
782 {
-
783  return Vector3<T>(x, y, z);
-
784 }
-
-
-
- -

◆ operator!=()

- -
-
-
-template<typename T >
- - - - - - - - -
bool Vector4::operator!= (const Vector4< T > & other) const
-
- -

Definition at line 767 of file Vector4.cpp.

-
768 {
-
769  return !operator==(other);
-
770 }
-
-
-
- -

◆ operator*() [1/2]

- -
-
-
-template<typename T >
- - - - - - - - -
Vector4< int > Vector4::operator* (const Matrix4x4mat) const
-
- -

Definition at line 684 of file Vector4.cpp.

-
685 {
-
686  Vector4<double> newVec;
-
687 
-
688  newVec.x = (mat[0][0] * x) + (mat[0][1] * y) + (mat[0][2] * z) + (mat[0][3] * w);
-
689  newVec.y = (mat[1][0] * x) + (mat[1][1] * y) + (mat[1][2] * z) + (mat[1][3] * w);
-
690  newVec.z = (mat[2][0] * x) + (mat[2][1] * y) + (mat[2][2] * z) + (mat[2][3] * w);
-
691  newVec.w = (mat[3][0] * x) + (mat[3][1] * y) + (mat[3][2] * z) + (mat[3][3] * w);
-
692 
-
693  return Vector4<int>(
-
694  (int)newVec.x,
-
695  (int)newVec.y,
-
696  (int)newVec.z,
-
697  (int)newVec.w
-
698  );
-
699 }
-
-
-
- -

◆ operator*() [2/2]

- -
-
-
-template<typename T >
- - - - - - - - -
Vector4< T > Vector4::operator* (const T scale) const
-
- -

Definition at line 512 of file Vector4.cpp.

-
513 {
-
514  return Vector4<T>(
-
515  x * scale,
-
516  y * scale,
-
517  z * scale,
-
518  w * scale
-
519  );
-
520 }
-
-
-
- -

◆ operator*=() [1/2]

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector4::operator*= (const Matrix4x4mat)
-
- -

Definition at line 752 of file Vector4.cpp.

-
753 {
-
754  Vector4<double> buffer(x, y, z, w);
-
755 
-
756  // Should this still be reversed...? like, instead of mat[x][y], use mat[y][m]
-
757  // idk right now. check that if something doesn't work
-
758  x = (int)((mat[0][0] * buffer.x) + (mat[0][1] * buffer.y) + (mat[0][2] * buffer.z) + (mat[0][3] * buffer.w));
-
759  y = (int)((mat[1][0] * buffer.x) + (mat[1][1] * buffer.y) + (mat[1][2] * buffer.z) + (mat[1][3] * buffer.w));
-
760  z = (int)((mat[2][0] * buffer.x) + (mat[2][1] * buffer.y) + (mat[2][2] * buffer.z) + (mat[2][3] * buffer.w));
-
761  w = (int)((mat[3][0] * buffer.x) + (mat[3][1] * buffer.y) + (mat[3][2] * buffer.z) + (mat[3][3] * buffer.w));
-
762 
-
763  return;
-
764 }
-
-
-
- -

◆ operator*=() [2/2]

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector4::operator*= (const T scale)
-
- -

Definition at line 557 of file Vector4.cpp.

-
558 {
-
559  x *= scale;
-
560  y *= scale;
-
561  z *= scale;
-
562  w *= scale;
-
563  return;
-
564 }
-
-
-
- -

◆ operator+()

- -
-
-
-template<typename T >
- - - - - - - - -
Vector4< T > Vector4::operator+ (const Vector4< T > & other) const
-
- -

Definition at line 331 of file Vector4.cpp.

-
332 {
-
333  return Vector4<T>(
-
334  x + other.x,
-
335  y + other.y,
-
336  z + other.z,
-
337  w + other.w
-
338  );
-
339 }
-
-
-
- -

◆ operator+=()

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector4::operator+= (const Vector4< T > & other)
-
- -

Definition at line 376 of file Vector4.cpp.

-
377 {
-
378  x += other.x;
-
379  y += other.y;
-
380  z += other.z;
-
381  w += other.w;
-
382  return;
-
383 }
-
-
-
- -

◆ operator-() [1/2]

- -
-
-
-template<typename T >
- - - - -
Vector4< T > Vector4::operator-
-
- -

Definition at line 719 of file Vector4.cpp.

-
720 {
-
721  return Vector4<T>(
-
722  -x,
-
723  -y,
-
724  -z,
-
725  -w
-
726  );
-
727 }
-
-
-
- -

◆ operator-() [2/2]

- -
-
-
-template<typename T >
- - - - - - - - -
Vector4< T > Vector4::operator- (const Vector4< T > & other) const
-
- -

Definition at line 421 of file Vector4.cpp.

-
422 {
-
423  return Vector4<T>(
-
424  x - other.x,
-
425  y - other.y,
-
426  z - other.z,
-
427  w - other.w
-
428  );
-
429 }
-
-
-
- -

◆ operator-=()

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector4::operator-= (const Vector4< T > & other)
-
- -

Definition at line 466 of file Vector4.cpp.

-
467 {
-
468  x -= other.x;
-
469  y -= other.y;
-
470  z -= other.z;
-
471  w -= other.w;
-
472  return;
-
473 }
-
-
-
- -

◆ operator/()

- -
-
-
-template<typename T >
- - - - - - - - -
Vector4< T > Vector4::operator/ (const T scale) const
-
- -

Definition at line 603 of file Vector4.cpp.

-
604 {
-
605  return Vector4<T>(
-
606  x / scale,
-
607  y / scale,
-
608  z / scale,
-
609  w / scale
-
610  );
-
611 }
-
-
-
- -

◆ operator/=()

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector4::operator/= (const T scale)
-
- -

Definition at line 647 of file Vector4.cpp.

-
648 {
-
649  x /= scale;
-
650  y /= scale;
-
651  z /= scale;
-
652  w /= scale;
-
653  return;
-
654 }
-
-
-
- -

◆ operator=() [1/2]

- -
-
-
-template<typename T >
- - - - - - - - -
void Vector4::operator= (const Vector4< T > & other)
-
- -

Conversion method.

- -

Definition at line 730 of file Vector4.cpp.

-
731 {
-
732  x = other.x;
-
733  y = other.y;
-
734  z = other.z;
-
735  w = other.w;
-
736 
-
737  return;
-
738 }
-
-
-
- -

◆ operator=() [2/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
void Vector4::operator= (Vector4< T > && other)
-
-noexcept
-
- -

Definition at line 741 of file Vector4.cpp.

-
742 {
-
743  x = std::move(other.x);
-
744  y = std::move(other.y);
-
745  z = std::move(other.z);
-
746  w = std::move(other.w);
-
747 
-
748  return;
-
749 }
-
-
-
- -

◆ operator==()

- -
-
-
-template<typename T >
- - - - - - - - -
bool Vector4::operator== (const Vector4< T > & other) const
-
- -

Definition at line 659 of file Vector4.cpp.

-
660 {
-
661  return
-
662  (x == other.x) &&
-
663  (y == other.y) &&
-
664  (z == other.z) &&
-
665  (w == other.w);
-
666 }
-
-
-
- -

◆ operator[]() [1/2]

- -
-
-
-template<typename T >
- - - - - - - - -
T & Vector4::operator[] (std::size_t idx)
-
- -

Definition at line 185 of file Vector4.cpp.

-
186 {
-
187  switch (idx)
-
188  {
-
189  case 0:
-
190  return x;
-
191  case 1:
-
192  return y;
-
193  case 2:
-
194  return z;
-
195  case 3:
-
196  return w;
-
197  default:
-
198  throw std::out_of_range("Array descriptor on Vector4<T> out of range!");
-
199  }
-
200 }
-
-
-
- -

◆ operator[]() [2/2]

- -
-
-
-template<typename T >
- - - - - - - - -
const T & Vector4::operator[] (std::size_t idx) const
-
- -

Definition at line 203 of file Vector4.cpp.

-
204 {
-
205  switch (idx)
-
206  {
-
207  case 0:
-
208  return x;
-
209  case 1:
-
210  return y;
-
211  case 2:
-
212  return z;
-
213  case 3:
-
214  return w;
-
215  default:
-
216  throw std::out_of_range("Array descriptor on Vector4<T> out of range!");
-
217  }
-
218 }
-
-
-
- -

◆ Similar()

- -
-
-
-template<typename T >
- - - - - - - - - - - - - - - - - - -
bool Vector4::Similar (const Vector4< T > & other,
double epsilon = 0.00001 
) const
-
- -

Will compare if two vectors are similar to a certain epsilon value.

- -

Definition at line 162 of file Vector4.cpp.

-
163 {
-
164  return
-
165  (::Math::Similar(x, other.x, epsilon)) &&
-
166  (::Math::Similar(y, other.y, epsilon)) &&
-
167  (::Math::Similar(z, other.z, epsilon)) &&
-
168  (::Math::Similar(w, other.w, epsilon))
-
169  ;
-
170 }
-
-
-
- -

◆ SqrMagnitude()

- -
-
-
-template<typename T >
- - - - - - - -
double Vector4::SqrMagnitude () const
-
- -

Will compute the square magnitude.

- -

Definition at line 31 of file Vector4.cpp.

-
32 {
-
33  int iSqrMag = x*x + y*y + z*z + w*w;
-
34  return (double)iSqrMag;
-
35 }
-
-
-
- -

◆ ToDouble()

- -
-
-
-template<typename T >
- - - - -
Vector4< double > Vector4::ToDouble
-
- -

Will convert this vector to a Vector4d.

- -

Definition at line 179 of file Vector4.cpp.

-
180 {
-
181  return Vector4<double>((double)x, (double)y, (double)z, (double)w);
-
182 }
-
-
-
- -

◆ ToInt()

- -
-
-
-template<typename T >
- - - - -
Vector4< int > Vector4::ToInt
-
- -

Will convert this vector to a Vector4i.

- -

Definition at line 173 of file Vector4.cpp.

-
174 {
-
175  return Vector4<int>((int)x, (int)y, (int)z, (int)w);
-
176 }
-
-
-
- -

◆ VectorScale()

- -
-
-
-template<typename T >
- - - - - - - - -
Vector4< int > Vector4::VectorScale (const Vector4< T > & scalar) const
-
- -

Will scale self.n by scalar.n.

- -

Definition at line 79 of file Vector4.cpp.

-
80 {
-
81  return Vector4<int>(
-
82  x * scalar.x,
-
83  y * scalar.y,
-
84  z * scalar.z,
-
85  w * scalar.w
-
86  );
-
87 }
-
-
-
-

Friends And Related Function Documentation

- -

◆ operator<< [1/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::ostream& operator<< (std::ostream & os,
const Vector4< T > & v 
)
-
-friend
-
- -

Definition at line 79 of file Vector4.h.

-
80  {
-
81  return os << "[x: " << v.x << " y: " << v.y << " z: " << v.z << " w: " << v.w << "]";
-
82  }
-
-
-
- -

◆ operator<< [2/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::wostream& operator<< (std::wostream & os,
const Vector4< T > & v 
)
-
-friend
-
- -

Definition at line 83 of file Vector4.h.

-
84  {
-
85  return os << L"[x: " << v.x << L" y: " << v.y << L" z: " << v.z << L" w: " << v.w << L"]";
-
86  }
-
-
-
-

Member Data Documentation

- -

◆ backward

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector4< double > Vector4::backward
-
-static
-
- -

Definition at line 99 of file Vector4.h.

- -
-
- -

◆ down

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector4< double > Vector4::down
-
-static
-
- -

Definition at line 95 of file Vector4.h.

- -
-
- -

◆ forward

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector4< double > Vector4::forward
-
-static
-
- -

Definition at line 98 of file Vector4.h.

- -
-
- -

◆ future

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector4< double > Vector4::future
-
-static
-
- -

Definition at line 100 of file Vector4.h.

- -
-
- -

◆ left

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector4< double > Vector4::left
-
-static
-
- -

Definition at line 97 of file Vector4.h.

- -
-
- -

◆ one

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector4< double > Vector4::one
-
-static
-
- -

Definition at line 102 of file Vector4.h.

- -
-
- -

◆ past

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector4< double > Vector4::past
-
-static
-
- -

Definition at line 101 of file Vector4.h.

- -
-
- -

◆ right

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector4< double > Vector4::right
-
-static
-
- -

Definition at line 96 of file Vector4.h.

- -
-
- -

◆ up

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector4< double > Vector4::up
-
-static
-
- -

Definition at line 94 of file Vector4.h.

- -
-
- -

◆ w

- -
-
-
-template<typename T >
- - - - -
T Eule::Vector4< T >::w
-
- -

Definition at line 91 of file Vector4.h.

- -
-
- -

◆ x

- -
-
-
-template<typename T >
- - - - -
T Eule::Vector4< T >::x
-
- -

Definition at line 88 of file Vector4.h.

- -
-
- -

◆ y

- -
-
-
-template<typename T >
- - - - -
T Eule::Vector4< T >::y
-
- -

Definition at line 89 of file Vector4.h.

- -
-
- -

◆ z

- -
-
-
-template<typename T >
- - - - -
T Eule::Vector4< T >::z
-
- -

Definition at line 90 of file Vector4.h.

- -
-
- -

◆ zero

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const Vector4< double > Vector4::zero
-
-static
-
- -

Definition at line 103 of file Vector4.h.

- -
-
-
The documentation for this class was generated from the following files: -
-
Representation of a 3d vector.
Definition: Matrix4x4.h:9
- - - -
Vector4< double > ToDouble() const
Will convert this vector to a Vector4d.
Definition: Vector4.cpp:179
-
Representation of a 2d vector.
Definition: Vector2.h:14
-
static constexpr bool Similar(const double a, const double b, const double epsilon=0.00001)
Compares two double values with a given accuracy.
Definition: Math.h:102
-
bool operator==(const Vector4< T > &other) const
Definition: Vector4.cpp:659
-
double SqrMagnitude() const
Will compute the square magnitude.
Definition: Vector4.cpp:31
- - - - - - diff --git a/Doxygen/build/classEule_1_1Vector4__coll__graph.map b/Doxygen/build/classEule_1_1Vector4__coll__graph.map deleted file mode 100644 index 4c69d0c..0000000 --- a/Doxygen/build/classEule_1_1Vector4__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doxygen/build/classEule_1_1Vector4__coll__graph.md5 b/Doxygen/build/classEule_1_1Vector4__coll__graph.md5 deleted file mode 100644 index f5ae0ed..0000000 --- a/Doxygen/build/classEule_1_1Vector4__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -09796771b7af89436ab56cfd53f68a29 \ No newline at end of file diff --git a/Doxygen/build/classEule_1_1Vector4__coll__graph.png b/Doxygen/build/classEule_1_1Vector4__coll__graph.png deleted file mode 100644 index fe84ceadb80cf4e946f7923a417122707ec2b9c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14909 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 - - - - - - -Leonetienne/Eule: Class Index - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Index
-
-
-
c | m | q | r | t | v
- - - - - - - - - - - - - - - - - - - - - - - - -
  c  
-
Matrix4x4 (Eule)   
  t  
-
Vector3 (Eule)   
  q  
-
Vector4 (Eule)   
Collider (Eule)   TrapazoidalPrismCollider (Eule)   
  m  
-
Quaternion (Eule)   
  v  
-
  r  
-
Math (Eule)   Vector2 (Eule)   
Rect (Eule)   
-
c | m | q | r | t | v
-
- - - - diff --git a/Doxygen/build/closed.png b/Doxygen/build/closed.png deleted file mode 100644 index 98cc2c909da37a6df914fbf67780eebd99c597f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT diff --git a/Doxygen/build/dir_1fefb9009d41306f82e23dc917083c9e.html b/Doxygen/build/dir_1fefb9009d41306f82e23dc917083c9e.html deleted file mode 100644 index 6df4a37..0000000 --- a/Doxygen/build/dir_1fefb9009d41306f82e23dc917083c9e.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/x64/Release Directory Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Release Directory Reference
-
-
-
- - - - diff --git a/Doxygen/build/dir_29a3c7679fa29c698d8a016dea7d0b26.html b/Doxygen/build/dir_29a3c7679fa29c698d8a016dea7d0b26.html deleted file mode 100644 index 2782838..0000000 --- a/Doxygen/build/dir_29a3c7679fa29c698d8a016dea7d0b26.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule Directory Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Eule Directory Reference
-
-
- - - - - - -

-Directories

directory  Debug
 
directory  x64
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  Collider.cpp [code]
 
file  Collider.h [code]
 
file  Constants.h [code]
 
file  Math.cpp [code]
 
file  Math.h [code]
 
file  Matrix4x4.cpp [code]
 
file  Matrix4x4.h [code]
 
file  Quaternion.cpp [code]
 
file  Quaternion.h [code]
 
file  Rect.h [code]
 
file  TrapazoidalPrismCollider.cpp [code]
 
file  TrapazoidalPrismCollider.h [code]
 
file  Vector2.cpp [code]
 
file  Vector2.h [code]
 
file  Vector3.cpp [code]
 
file  Vector3.h [code]
 
file  Vector4.cpp [code]
 
file  Vector4.h [code]
 
file  version.h [code]
 
-
- - - - diff --git a/Doxygen/build/dir_b9243fac9f130637c8e868960898670e.html b/Doxygen/build/dir_b9243fac9f130637c8e868960898670e.html deleted file mode 100644 index 7609e92..0000000 --- a/Doxygen/build/dir_b9243fac9f130637c8e868960898670e.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/x64 Directory Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
x64 Directory Reference
-
-
- - - - - - -

-Directories

directory  Debug
 
directory  Release
 
-
- - - - diff --git a/Doxygen/build/dir_c806cfdecfdfd6ea1cddf5ffe1bf0281.html b/Doxygen/build/dir_c806cfdecfdfd6ea1cddf5ffe1bf0281.html deleted file mode 100644 index d9f504b..0000000 --- a/Doxygen/build/dir_c806cfdecfdfd6ea1cddf5ffe1bf0281.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/Debug Directory Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Debug Directory Reference
-
-
-
- - - - diff --git a/Doxygen/build/dir_e847076a3068559a2237d545d5d06d37.html b/Doxygen/build/dir_e847076a3068559a2237d545d5d06d37.html deleted file mode 100644 index b42c4d9..0000000 --- a/Doxygen/build/dir_e847076a3068559a2237d545d5d06d37.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/x64/Debug Directory Reference - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Debug Directory Reference
-
-
-
- - - - diff --git a/Doxygen/build/doc.png b/Doxygen/build/doc.png deleted file mode 100644 index 17edabff95f7b8da13c9516a04efe05493c29501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t diff --git a/Doxygen/build/doxygen.css b/Doxygen/build/doxygen.css deleted file mode 100644 index 73ecbb2..0000000 --- a/Doxygen/build/doxygen.css +++ /dev/null @@ -1,1771 +0,0 @@ -/* The standard CSS for doxygen 1.8.17 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -th p.starttd, p.intertd, p.endtd { - font-size: 100%; - font-weight: 700; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -p.interli { -} - -p.interdd { -} - -p.intertd { -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #FFFFFF; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #FFFFFF; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ -} - -#side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ -} - -#main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ -} - -.fragment { - text-align: left; - direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ - overflow-y: hidden; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #FFFFFF; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl, img.inline { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -blockquote.DocNodeRTL { - border-left: 0; - border-right: 2px solid #9CAFD4; - margin: 0 4px 0 24px; - padding: 0 16px 0 12px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight, .memTemplItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: url('nav_f.png'); - background-repeat: repeat-x; - background-color: #E2E8F2; - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -} - -.overload { - font-family: "courier new",courier,monospace; - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir, .tparams .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - -dl { - padding: 0 0 0 0; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ -dl.section { - margin-left: 0px; - padding-left: 0px; -} - -dl.section.DocNodeRTL { - margin-right: 0px; - padding-right: 0px; -} - -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; -} - -dl.note.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; -} - -dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; -} - -dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00D000; -} - -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; -} - -dl.deprecated.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #505050; -} - -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; -} - -dl.todo.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00C0E0; -} - -dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; -} - -dl.test.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #3030E0; -} - -dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; -} - -dl.bug.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -.PageDocRTL-title div.toc { - float: left !important; - text-align: right; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -.PageDocRTL-title div.toc li { - background-position-x: right !important; - padding-left: 0 !important; - padding-right: 10px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.PageDocRTL-title div.toc li.level1 { - margin-left: 0 !important; - margin-right: 0; -} - -.PageDocRTL-title div.toc li.level2 { - margin-left: 0 !important; - margin-right: 15px; -} - -.PageDocRTL-title div.toc li.level3 { - margin-left: 0 !important; - margin-right: 30px; -} - -.PageDocRTL-title div.toc li.level4 { - margin-left: 0 !important; - margin-right: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -/* -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTableHead tr { -} - -table.markdownTableBodyLeft td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft { - text-align: left -} - -th.markdownTableHeadRight { - text-align: right -} - -th.markdownTableHeadCenter { - text-align: center -} -*/ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - -.DocNodeRTL { - text-align: right; - direction: rtl; -} - -.DocNodeLTR { - text-align: left; - direction: ltr; -} - -table.DocNodeRTL { - width: auto; - margin-right: 0; - margin-left: auto; -} - -table.DocNodeLTR { - width: auto; - margin-right: auto; - margin-left: 0; -} - -tt, code, kbd, samp -{ - display: inline-block; - direction:ltr; -} -/* @end */ - -u { - text-decoration: underline; -} - diff --git a/Doxygen/build/doxygen.png b/Doxygen/build/doxygen.png deleted file mode 100644 index 3ff17d807fd8aa003bed8bb2a69e8f0909592fd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3779 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 diff --git a/Doxygen/build/dynsections.js b/Doxygen/build/dynsections.js deleted file mode 100644 index c8e84aa..0000000 --- a/Doxygen/build/dynsections.js +++ /dev/null @@ -1,127 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - - -Leonetienne/Eule: File List - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
File List
-
-
-
Here is a list of all files with brief descriptions:
-
- - - - diff --git a/Doxygen/build/folderclosed.png b/Doxygen/build/folderclosed.png deleted file mode 100644 index bb8ab35edce8e97554e360005ee9fc5bffb36e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA diff --git a/Doxygen/build/functions.html b/Doxygen/build/functions.html deleted file mode 100644 index 821e6b7..0000000 --- a/Doxygen/build/functions.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- a -

-
- - - - diff --git a/Doxygen/build/functions_b.html b/Doxygen/build/functions_b.html deleted file mode 100644 index e38d684..0000000 --- a/Doxygen/build/functions_b.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- b -

-
- - - - diff --git a/Doxygen/build/functions_c.html b/Doxygen/build/functions_c.html deleted file mode 100644 index ed653b3..0000000 --- a/Doxygen/build/functions_c.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- c -

-
- - - - diff --git a/Doxygen/build/functions_d.html b/Doxygen/build/functions_d.html deleted file mode 100644 index 17770ab..0000000 --- a/Doxygen/build/functions_d.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- d -

-
- - - - diff --git a/Doxygen/build/functions_e.html b/Doxygen/build/functions_e.html deleted file mode 100644 index 665980c..0000000 --- a/Doxygen/build/functions_e.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- e -

-
- - - - diff --git a/Doxygen/build/functions_f.html b/Doxygen/build/functions_f.html deleted file mode 100644 index e5c43d9..0000000 --- a/Doxygen/build/functions_f.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- f -

-
- - - - diff --git a/Doxygen/build/functions_func.html b/Doxygen/build/functions_func.html deleted file mode 100644 index a46a85a..0000000 --- a/Doxygen/build/functions_func.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - Functions - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- a -

- - -

- c -

- - -

- d -

- - -

- g -

- - -

- i -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- q -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- v -

- - -

- ~ -

-
- - - - diff --git a/Doxygen/build/functions_g.html b/Doxygen/build/functions_g.html deleted file mode 100644 index cfc3f75..0000000 --- a/Doxygen/build/functions_g.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- g -

-
- - - - diff --git a/Doxygen/build/functions_h.html b/Doxygen/build/functions_h.html deleted file mode 100644 index eaa1dd6..0000000 --- a/Doxygen/build/functions_h.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- h -

-
- - - - diff --git a/Doxygen/build/functions_i.html b/Doxygen/build/functions_i.html deleted file mode 100644 index 482522d..0000000 --- a/Doxygen/build/functions_i.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- i -

-
- - - - diff --git a/Doxygen/build/functions_j.html b/Doxygen/build/functions_j.html deleted file mode 100644 index e47055f..0000000 --- a/Doxygen/build/functions_j.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- j -

-
- - - - diff --git a/Doxygen/build/functions_k.html b/Doxygen/build/functions_k.html deleted file mode 100644 index bc47234..0000000 --- a/Doxygen/build/functions_k.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- k -

-
- - - - diff --git a/Doxygen/build/functions_l.html b/Doxygen/build/functions_l.html deleted file mode 100644 index 6501fad..0000000 --- a/Doxygen/build/functions_l.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- l -

-
- - - - diff --git a/Doxygen/build/functions_m.html b/Doxygen/build/functions_m.html deleted file mode 100644 index 450f633..0000000 --- a/Doxygen/build/functions_m.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- m -

-
- - - - diff --git a/Doxygen/build/functions_n.html b/Doxygen/build/functions_n.html deleted file mode 100644 index 4fcb9ff..0000000 --- a/Doxygen/build/functions_n.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- n -

-
- - - - diff --git a/Doxygen/build/functions_o.html b/Doxygen/build/functions_o.html deleted file mode 100644 index a357b01..0000000 --- a/Doxygen/build/functions_o.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- o -

-
- - - - diff --git a/Doxygen/build/functions_p.html b/Doxygen/build/functions_p.html deleted file mode 100644 index 3163e10..0000000 --- a/Doxygen/build/functions_p.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- p -

-
- - - - diff --git a/Doxygen/build/functions_q.html b/Doxygen/build/functions_q.html deleted file mode 100644 index e4d9639..0000000 --- a/Doxygen/build/functions_q.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- q -

-
- - - - diff --git a/Doxygen/build/functions_r.html b/Doxygen/build/functions_r.html deleted file mode 100644 index 1a04069..0000000 --- a/Doxygen/build/functions_r.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- r -

-
- - - - diff --git a/Doxygen/build/functions_rela.html b/Doxygen/build/functions_rela.html deleted file mode 100644 index 0320f03..0000000 --- a/Doxygen/build/functions_rela.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - Related Functions - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/Doxygen/build/functions_s.html b/Doxygen/build/functions_s.html deleted file mode 100644 index 9b9a136..0000000 --- a/Doxygen/build/functions_s.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- s -

-
- - - - diff --git a/Doxygen/build/functions_t.html b/Doxygen/build/functions_t.html deleted file mode 100644 index 9a47775..0000000 --- a/Doxygen/build/functions_t.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- t -

-
- - - - diff --git a/Doxygen/build/functions_u.html b/Doxygen/build/functions_u.html deleted file mode 100644 index 5be3c63..0000000 --- a/Doxygen/build/functions_u.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- u -

-
- - - - diff --git a/Doxygen/build/functions_v.html b/Doxygen/build/functions_v.html deleted file mode 100644 index bafb2bc..0000000 --- a/Doxygen/build/functions_v.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- v -

-
- - - - diff --git a/Doxygen/build/functions_vars.html b/Doxygen/build/functions_vars.html deleted file mode 100644 index 81acb1f..0000000 --- a/Doxygen/build/functions_vars.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - Variables - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- a -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- g -

- - -

- h -

- - -

- i -

- - -

- j -

- - -

- k -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- v -

- - -

- w -

- - -

- x -

- - -

- y -

- - -

- z -

-
- - - - diff --git a/Doxygen/build/functions_w.html b/Doxygen/build/functions_w.html deleted file mode 100644 index 412d149..0000000 --- a/Doxygen/build/functions_w.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- w -

-
- - - - diff --git a/Doxygen/build/functions_x.html b/Doxygen/build/functions_x.html deleted file mode 100644 index 2226f3e..0000000 --- a/Doxygen/build/functions_x.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- x -

-
- - - - diff --git a/Doxygen/build/functions_y.html b/Doxygen/build/functions_y.html deleted file mode 100644 index e19f72a..0000000 --- a/Doxygen/build/functions_y.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- y -

-
- - - - diff --git a/Doxygen/build/functions_z.html b/Doxygen/build/functions_z.html deleted file mode 100644 index b398b37..0000000 --- a/Doxygen/build/functions_z.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- z -

-
- - - - diff --git a/Doxygen/build/functions_~.html b/Doxygen/build/functions_~.html deleted file mode 100644 index 09ac5b6..0000000 --- a/Doxygen/build/functions_~.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- ~ -

-
- - - - diff --git a/Doxygen/build/globals.html b/Doxygen/build/globals.html deleted file mode 100644 index d461301..0000000 --- a/Doxygen/build/globals.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -Leonetienne/Eule: File Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
-
- - - - diff --git a/Doxygen/build/globals_defs.html b/Doxygen/build/globals_defs.html deleted file mode 100644 index 8504d3b..0000000 --- a/Doxygen/build/globals_defs.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -Leonetienne/Eule: File Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
    -
  • MAKE_SURE_RNG_IS_INITIALIZED -: Math.cpp -
  • -
-
- - - - diff --git a/Doxygen/build/globals_vars.html b/Doxygen/build/globals_vars.html deleted file mode 100644 index 7737e7c..0000000 --- a/Doxygen/build/globals_vars.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -Leonetienne/Eule: File Members - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/Doxygen/build/graph_legend.html b/Doxygen/build/graph_legend.html deleted file mode 100644 index ef5c1f3..0000000 --- a/Doxygen/build/graph_legend.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -Leonetienne/Eule: Graph Legend - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Graph Legend
-
-
-

This page explains how to interpret the graphs that are generated by doxygen.

-

Consider the following example:

/*! Invisible class because of truncation */
-
class Invisible { };
-
-
/*! Truncated class, inheritance relation is hidden */
-
class Truncated : public Invisible { };
-
-
/* Class not documented with doxygen comments */
-
class Undocumented { };
-
-
/*! Class that is inherited using public inheritance */
-
class PublicBase : public Truncated { };
-
-
/*! A template class */
-
template<class T> class Templ { };
-
-
/*! Class that is inherited using protected inheritance */
-
class ProtectedBase { };
-
-
/*! Class that is inherited using private inheritance */
-
class PrivateBase { };
-
-
/*! Class that is used by the Inherited class */
-
class Used { };
-
-
/*! Super class that inherits a number of other classes */
-
class Inherited : public PublicBase,
-
protected ProtectedBase,
-
private PrivateBase,
-
public Undocumented,
-
public Templ<int>
-
{
-
private:
-
Used *m_usedClass;
-
};
-

This will result in the following graph:

-

The boxes in the above graph have the following meaning:

-
    -
  • -A filled gray box represents the struct or class for which the graph is generated.
  • -
  • -A box with a black border denotes a documented struct or class.
  • -
  • -A box with a gray border denotes an undocumented struct or class.
  • -
  • -A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • -
-

The arrows have the following meaning:

-
    -
  • -A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • -
  • -A dark green arrow is used for protected inheritance.
  • -
  • -A dark red arrow is used for private inheritance.
  • -
  • -A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • -
  • -A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • -
-
- - - - diff --git a/Doxygen/build/graph_legend.md5 b/Doxygen/build/graph_legend.md5 deleted file mode 100644 index 8fcdccd..0000000 --- a/Doxygen/build/graph_legend.md5 +++ /dev/null @@ -1 +0,0 @@ -f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/Doxygen/build/graph_legend.png b/Doxygen/build/graph_legend.png deleted file mode 100644 index 7e2cbcfb2d143e382be6ed65635a3d859e53bc36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20615 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 diff --git a/Doxygen/build/hierarchy.html b/Doxygen/build/hierarchy.html deleted file mode 100644 index 1d49d37..0000000 --- a/Doxygen/build/hierarchy.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -Leonetienne/Eule: Class Hierarchy - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Hierarchy
-
-
-
-

Go to the graphical class hierarchy

-This inheritance list is sorted roughly, but not completely, alphabetically:
-
[detail level 12]
- - - - - - - - - - - - -
 CEule::ColliderAbstract class of a collider domain
 CEule::TrapazoidalPrismColliderA collider describing a trapazoidal prism
 CEule::MathMath utility class containing basic functions
 CEule::Matrix4x4A matrix 4x4 class representing a 3d transformation
 CEule::Quaternion3D rotation representation
 CEule::RectTrivial data structure representing a rectangle
 CEule::Vector2< T >Representation of a 2d vector
 CEule::Vector2< double >
 CEule::Vector3< T >Representation of a 3d vector
 CEule::Vector3< double >
 CEule::Vector4< T >Representation of a 4d vector
 CEule::Vector4< double >
-
-
- - - - diff --git a/Doxygen/build/index.html b/Doxygen/build/index.html deleted file mode 100644 index e285b9b..0000000 --- a/Doxygen/build/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -Leonetienne/Eule: Main Page - - - - - - - - - - - -
-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Leonetienne/Eule Documentation
-
-
-
- - - - diff --git a/Doxygen/build/inherit_graph_0.map b/Doxygen/build/inherit_graph_0.map deleted file mode 100644 index 40c0fac..0000000 --- a/Doxygen/build/inherit_graph_0.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doxygen/build/inherit_graph_0.md5 b/Doxygen/build/inherit_graph_0.md5 deleted file mode 100644 index 92d61c3..0000000 --- a/Doxygen/build/inherit_graph_0.md5 +++ /dev/null @@ -1 +0,0 @@ -faecc536e16ff6fdde92040a1b4025d5 \ No newline at end of file diff --git a/Doxygen/build/inherit_graph_0.png b/Doxygen/build/inherit_graph_0.png deleted file mode 100644 index 3d3407f9e906e920171b8a154373410abe5c0b04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2620 zcmV-C3d8k@P)nG_#4PZK@>rq`M!h2PYAa8bE^y&WANP+j zy|bk)V@0OL^GW}hIdkTm@BDth^PAH%%@k3q)c^v4KnQ|Fv;YVM@?8US5Cj4t5}1P^ z5D1aL90Y+th{O`R)7;#glaoV~l*L3DOUN~UuUH%BTfDVHRta1W zfxZufP7Dn0SL|A)i?opH5FtBf7A()bV_Fftj!H z&{)#i+IrKbO-)Tr-?Tem{sY9wc~DA9iWA|wQJWtdGcg*bhNCj zOfHw#*4BQb?!Gl2K1|-c`Iyfa{_w-;GiUCL#r;Gp`acWcQ!6VgP5XQH>`6#SK(`eN z#k}`LAgCo}GMT@>e`sjv@bK`r>uV7Vkoo*B=IrdOxp_*ZQUpQ9#>TYjOiWCqq@=jH zx!Ks*@OZqwzCN@(D=TZwnl)P6YPI^%p+oWU@fR*!ShsE+nN0Ta@ev3F5fKppfZ^fc z=;&yBdwT~5hl2+Xe)#agusrNkb6{YA$K%mxG;eS3+qZAeDUZ!&XJ%$@*|Npj+Pb2m z;!7{*{$tp>mh-kLJ+KGlhqd3ih@f*>RkiOFQ1Idewy zdKosGee&c` z5!>CROP82TCWS)ba=A~RKGj@oYHBK%%cWAO-rnA=t*sX?UUYVLrqk(3Nl7Y|3M`fZ zve4^6v9Yml-n?mSZ0zsv_w@7(3kyT7sgqZ)UiJ3&#>U3#JQ@)ZA(zX=VsU$WyF?;6 zaNq!b8Ih5ZR#sMBU0t=cwZ+B7c;sEbeqA6CjE#-$+qVyAFP}as>g!(|JzDDRo%z#G zC5?^$Rw`9WrAnnTgY1K!FY>8Au;#sg|GrwSo|&1sbLY;@n>WkL%Qe*s3JOl2J}s3> zBO@bs?%X*tG6De5SwA>9STpB3b?TI#pC5Fs8*{tY}jz^+BHp~OeRC?D3wYYjn>i8p|7LH z#zp`@e}Dh%LvP={1pxH)^q{-XpFalxynFW!+nv7cuC6Wsz|hbTT8`cxM@B{r$YZfs z=zVWaL?RIYNNelc%*;EUo*7O~$6Q?g?&x?-=f~gwUwGR58cfZn8nEBR4479a6h=ly zYN};qWM~d~d3hBU78Y&R7z}J-Z*TAV_3L%kx3jYY0LWxA7Z(?;LlTL^($do1-5uRU z=lK$e#L>}lP8m|EltQ7{+uNhN9v&WehaZcC+7!}T9N ze3+h|-q_fSS<7q8vg(QD=RB9nM|QjG`r}kv)K(0oy_O+h~>+dYZl~nuEV*xxsgbu z;o;$xD_7!a(96rq-QB&kv=p61V{vhDQ79Ds{r%{bqnUfQCv@WM>^wO+IXpa!TDiNs z8;?8$LFR0kL_)S~alC&0!m(pH_wGIW^UvueOGq;_dUKGK)spk)Bk*W8n%35qUw$$E z^m+HGJ~ZYX8XAgwIVrpt?JUu

kA=1pU>y>RVr0kSy^CU;K0BDnM|J3V!#Xsh)(7+2eH}g8#iun zxm>wio}QjQyMn8$YiMX_TwENwy7uD53xPmTQBkpM*|MyxtfHbK)KZ#l1VQri^TWcz zs8nh~LIQ)q=;`SxD=TBMSP>Bsfq{XC4TN^v9SpW z30bjXMQ(0xWo0FmO2vP=`3?{bh#K>J5q0 zuB!TDe0-W{Q4k2hz#K#X4i5CBq|Hf5n}>$vL~DUS2nOaLB5`n_6D`4<5R1h`OMuKj zCb~Wffk3_!U=D&nAVdOl5Cj4t5}1P^5D1azSd*@-tXy~ - - diff --git a/Doxygen/build/inherit_graph_1.md5 b/Doxygen/build/inherit_graph_1.md5 deleted file mode 100644 index 2074742..0000000 --- a/Doxygen/build/inherit_graph_1.md5 +++ /dev/null @@ -1 +0,0 @@ -02a8e24e44839d466af4e3c27a008a2d \ No newline at end of file diff --git a/Doxygen/build/inherit_graph_1.png b/Doxygen/build/inherit_graph_1.png deleted file mode 100644 index 0c7dd1abe8d7d9f30376ea924ba3b3500d9f98c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1071 zcmV+~1kn45P)76O1$Kuz_P&7>QW$7hi*#I#ZJ|s%#E_FBr1u@`5zW!o{6vZ?cY~0pVQ25 zfAgE)ex3cz?g$Y=fbeCgf1SV&gXqN$q8B@eUhMdVcY?v-%*@QcO67af)YN3N+0xzL z)>kwdU0Yi#cuL=wP$(1(264-;&rW{7zfk#nce=Z~Gc2Tjv4iNv4x$%33Za)urJA3g zFTg~(Q7V&Z5rmM>=l^kRLqo&D!UDJX zSt>2ky6^C*!>(hH5IX$WB=k;w3QdU~>2 ztumRctgK9{)kY!_#%{OUtE;O&w*dg{?d|b+e1CtR8SeFZ`}_Oxm|CqCLP$|mRaMo* z!~}Cf)zi~+czD>?*9Rd~sZ@;T@$qqUbF)AosHv&h-rmmR9t&N+OeWLm>FM6y-o?d* zTrSt?bg5J-_YjJrEEdb`>?{CaX=zEVR!gN)++k~L3nBFO_O`LHvADSC^?CsSD=RDY z_4RJI8zB@5g&0qd$78qKudlC7CR1;3Z$4*#_+z!Yx|(6hN^5ItMv&XvTZE8UEZ*7K zVSJ*|C;;H$;Q=Ak*w{EXH)$Dlaep%BZum zGXQ{CEM|6zqN1Y5$H(*Y^FIz0i9{NW#$vHNKRnq4v?-|r;H9}~3csRqJOeRyQlu#%vE-ns*LJo%`eW{|NA{-8< z<>Q1r^>R9$`1=?0nlm{$8IQ-sVzE}M?ds~vI?&_s$mMd4Mk5l5hK7dBW^+kNN#5B5 z04gghr>3TiMx#I=u-R<*ydxtcfk1%AB&%qD4$oCLC zh+gaG@n pZJrgRezAk-#SWquJBVKF_z&=9HmM@j^O*nu002ovPDHLkV1nx&4zK_K diff --git a/Doxygen/build/inherit_graph_10.map b/Doxygen/build/inherit_graph_10.map deleted file mode 100644 index 30fc0c2..0000000 --- a/Doxygen/build/inherit_graph_10.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Doxygen/build/inherit_graph_10.md5 b/Doxygen/build/inherit_graph_10.md5 deleted file mode 100644 index daa19f2..0000000 --- a/Doxygen/build/inherit_graph_10.md5 +++ /dev/null @@ -1 +0,0 @@ -7155a82293b3a5bd041fc17368c37b0b \ No newline at end of file diff --git a/Doxygen/build/inherit_graph_10.png b/Doxygen/build/inherit_graph_10.png deleted file mode 100644 index dac013993d4a8a86f9b8ef0dcefd7984a2d26988..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1666 zcmV-|27UR7P)52jG8*#bx9g_U78in^LugNcH7*_ z``d5*xSY?ca~_`a+~=O}Ip?{%+Xx6Dzz7S`-%bD%f3T#l^*J_m`bY)3np+On6F|e}&WOq-mOK5l1@RyLT^9`C#GzK@edUTvG)I z7FB>?Q3XgMMAc|CH*VZWz=bdfyi)}TA5qK8%ZXok`t)hsGXntZ-@m`Et}e{DbLY-u z$BwNi&bDpay1KgfSiH<9j`+fJry7k$$YIy6UGYr| zK~a>`>0}s&wRpYW-rn9LM~?g#ms^(h_V(oDF)=|91XmBl+}xbeXjCW^5{aau zqGEh}9N8~jy0l@#hOl;dd3kzzdUtm>JKSouYBZY7n>R;`6AT88Mq^%HURqijMN#wf z^IEO;)vH&B4jm#0LZi_D0H&s<4jw$1k&%&^nW@+7XJ%&5Sd~iE+Sag<+S=Ndz27%)-kd&tTA@%hG&IO$vg+z;e)CpeU%zVAssjfOY}~l<+_`h3 zqoe%duq3*s*45Q{z24`~pZop(f`Wp|%F3msrD)C~k*J}e!Dh3e?vEcoZr{F*wrR9D zI-PD{VBpcCM?RmgsHmu?r^jx$7ZnwCc6LGt`}_L=0M*siv$L}vkLTsfmo!c5bUOBm zw{G3KaNz>OFj}oP6bk9}dW*%9mX^lN>f^_c?d|Pbw{9&hEoB(y&Ye4>qoe1~pU=z7 z<2NUpHf?HaYnzyuxN_yn@bIuor79^Yv0AN>TjEdQo}vziBh0caWo2byL8hmtA%rrS z?8%cS$OpZ+`uzDbgix(k+iW)07zhNAPbd^hO-&sf9E@?TKp-F%i~IZgA%u3jT_Tap z&(BATgZ8V}>kSLSiV7hd85scp_mH zNdSP`?M8OJUJn2;7z|&&eEIEMA-KoyZ<(H+-n(}%0HC$C^-uf(01k(PYl%-yl}e?5 zGRo)k0RUt&8G2+$N=ga_gJWZ3F@~&Pzkbi2Jyxp~0ARIRbvj*2N=mdiV`F1UNlE$n z`7r|0G%Xg3b8~Z17oGF$yHmMbjv7NlL)Wfd>*(l+j9@mKEf$N%<54ISM~@zLxm++F zza9yNLXRIm*6Z~oNzTm7T)%$3rKN>msCXW~$;rtJ3k#?{H8mCKpin48BGIQ$pSTMG zt;!fs6yeQ)72f19nZ{I$H!SMe5 z`>$WWzIgGXva<5~_wOLegA$^wtV}AER#jCM7Z)p)${2Cva(P8XMSXq!+qZ9LXJ>6T z+rx(s0RUN9S%ZUv=&_R|$etu*dVKSKj09{>OtR-3; zhG7~T8*_4U)~#DdQPkYr9E8y2aupO5h{a;HT8%`~YPC|SG(A1Nwzd{M5I_hE3k$ou zyCd&6tful{MKyJ$fQXvPM^w!JibzrMYeE5nMHL`eQ~`oT6(Cqt0fI#pAXroZvdkB@ zckkX!d>)uMvW%!TH8qLP0~1FGi2t7|IB-oBAXroZf<+Y|SX2S>4?d;ccFO;PA^-pY M07*qoM6N<$g3Jmd$N&HU diff --git a/Doxygen/build/inherit_graph_2.map b/Doxygen/build/inherit_graph_2.map deleted file mode 100644 index 0c0c201..0000000 --- a/Doxygen/build/inherit_graph_2.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Doxygen/build/inherit_graph_2.md5 b/Doxygen/build/inherit_graph_2.md5 deleted file mode 100644 index 81fa185..0000000 --- a/Doxygen/build/inherit_graph_2.md5 +++ /dev/null @@ -1 +0,0 @@ -da8ec51f432ceed38d2a3ba830433862 \ No newline at end of file diff --git a/Doxygen/build/inherit_graph_2.png b/Doxygen/build/inherit_graph_2.png deleted file mode 100644 index b5f1e4c67d96e2ca23ccc78214f99575e0f2e3a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1457 zcmV;i1y1^jP)$WW;&3=9Dk@^pqD9#4c7nm6R)6Be30AFIWw;Npb?a85(I^ieKGeqadcEx5zh8Ge zyWNfu0+Y$a%9Sf|I-QKa$xv5U$K%J3*|TR4LI}#s%K<1UDWR>cjmpYOa&vR(?d?sv zt-OE#o~28da_Q0~?Kpe)?q%b~jl|<|t?bpSS9EuG)7jaXG^g42PltKA=GeV^H$y{1 zJb3VcckkX&TwF{|O$~`eV%lSvOeUI|nmBXj3;-7|UZkR;g2KW=UE5o?ZXu=Q$B!S} zxN(CE7cSuSdI9L|?WL@&47b~jl#)Oop!MtN>EZbCgwu}#$2{+8J90#rlqBY zmoH!9@p!m>`!-&$m#nNT0OIjD4Gj%+bab$I@#3`hPYXH0)vH%!isDICRaHqqw|)Hh zQA#PL)oPV@?%dJZhe9C<$j_fYODUyXzkat5?h1++2C@-o2zcr_-q&ClZNBKn@HHq_zK4COO}}-@4{lvSi7O z$9ePS4FFcFRa@9*Wo7Z@%NO3heLJJEEEWsZ)zvgLH8DCmN>x==%65LgpS5e(l9Q8z z5CVt8K{y_bV%WB@u#oNBx6|0z$m`dy`S$G_j~+du zrlyAP-@gOXTab>csHi|nY50MSjg65=B*@RtXTgF61Ofrw;;x{efWg7Rq`*vv)9EA> z3gPj1xN_wR2M-?P`Sa%h?Ao;}Dfp2{1b~5o0ovQ!)6##o(iV=ct}fkkj`3#$Cr_Rv z8jWJLTCv;h?AWnm(y=@q55>jBR99DHu~;~8-~f${jVxTaFkREttXQ#vQ>RW*UtdpN zULJ=I9n#IOwY8PLzCO%mv-WLeD);Z-r@g%$zu!-Gb~crjm9)0DvUBH7Mn^|~d;fG0 zQYOEBKK?IUsa{I|D@<~})!XNaF%=HQkP3%lNQFZ&q{5*XQsGbxsc - - diff --git a/Doxygen/build/inherit_graph_3.md5 b/Doxygen/build/inherit_graph_3.md5 deleted file mode 100644 index e78feaa..0000000 --- a/Doxygen/build/inherit_graph_3.md5 +++ /dev/null @@ -1 +0,0 @@ -d1f60b83f5f2b808ebacc2a8461bbcf1 \ No newline at end of file diff --git a/Doxygen/build/inherit_graph_3.png b/Doxygen/build/inherit_graph_3.png deleted file mode 100644 index 98925f5888522d0360fdfec3288c47f6d2102f97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1408 zcmV-`1%LX9P)#)kA+&N5b zIh3#$2!+IzvvuK^D^VzJWD6yfa>!xEX^AD-#O}NoPwhMZwL6yfziZxiK3DVn=J!0m z@9cM;XP#+VgdhmO@athYS^$GpFh0=(#wU8f_(Tt!$&HPTjjpaPM@eBI6CWS1P$-Pe zKjssLVY9Qdc9+CpidwDS*w`RPoIfYc%*@zJ4}*Dfb8}51%=3vJFh0=(#wU7U51-=V z;syr??NI1H3^Sj8jy>KfMF|oqDJiyzj6h%=KZE9-z zOXYqowp{o8{r!y-3&(K;L9|+}NzTj53yPwFfq|Z$o)U@V{QMlo+uGVfLPAWA34$mu zFE1-AQ!14Lfq={9%H{IDzP^^0mb0@nii#461VIoMixm_U)ZE+*zugoR6l`yAmzI_y z2oe_;MwY7_ji?Fb;?CflV!C)!*;Nalw?5wD$h#Zv3 zWKK>_)GO`${5(Mr@9*z(b8};3V-ph-0D#HKNwHWwGBQFCgj%hp7Bf6N+}hfz)oKe0 z3IG5qm8z|+?dIl2E|(V-6@C6_mzS6K^z^i|v$M6eg<%+3^Ot?Cg1mf9O--3Z%#xa# zYBI>(-5o&?d_I49c^T$l7zO}%e0(GbA~rU5U|_%)yu7@GIeNXG!{O}i?pi9ewzdWU zz%a}tE)WP>TU#kAlIiK`$ja>O>zCoeBAYkHlYo&o^)d_LTLI5{~zKR?42%q-sC z-tea+2laaW&CQLUpC3h`nVFgB=x8@LHv~aY6vc7;yJ7?a0Xdn+2&0? z7=}4JI}3$E*o2EVybr$YYbCZ^_t9QudlBS219pu_s7QvJjG)Dd%e_R5CpOQ!UF;V zK0ZD!E-qm6`1lwGtsmh_Z0VCoBpMkR(Q38l=jXMxwVx9N0zp<*R!K?8;o;%y>+9y` zW_EV=+uIwku#Z3xq_?+sU|>M0RALzR@bEA`K3-8#(bCf5>+5T&qE4qX7z`dB9xg5} zYPGt%yW1$h&(CjncNf}5A?CXT2L~r4B$StzUteEi7*$R24}I$C=^?*A z!IzTu_V)Yxdp@5pkw|iKa?EyAsZ?QMVd?4VJRYyIva+P4#MRZ6qL4%)SzcaVUtf=i zh~RR$#l^+_{r%O|)$pv@ibA2VqoYG6lW{m4g+f7AQd3j2xVXq>v*CX4yJ9GqnwoNR zbBm0O6pO`tK3}C${cIeIkY~M>`v^y&(P(^peCq1z94+LpW3zpPL-6+Y9vT|z=;&Bo zU3Ih;dt>H1;cq4*BSWv(J6eSUpwoQ%Kg0M$4;Y{50pk-rV0@wnX7+p2)6@3X!9WJb zaese*a>R^J`T6gCA_VjQCpy49pXdSO6Fp#jq6dsm^xz+b!wMxgGY{zi O0000 - - diff --git a/Doxygen/build/inherit_graph_4.md5 b/Doxygen/build/inherit_graph_4.md5 deleted file mode 100644 index c38e462..0000000 --- a/Doxygen/build/inherit_graph_4.md5 +++ /dev/null @@ -1 +0,0 @@ -b877581d0cf44caf9f55600648999181 \ No newline at end of file diff --git a/Doxygen/build/inherit_graph_4.png b/Doxygen/build/inherit_graph_4.png deleted file mode 100644 index b4259b125969649324f0a090b80828182b5d0336..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 965 zcmV;$13LVPP)9Lw|q&+}vFL^~*d; zrBa87hgC1Bwg`nn!C+7t`BmKL;NYNI_0%F`V`BvoydR;#9-+Y=p{a&PR;$(L^Hm|y zKLXDqG)g=g8XAIMIXykCcx45-v|4RXPtWe|t}-2q#j>@vrL3>Qc|_B+AYpKDP??VW zTrA5@PfxpCuIuaTf0wHym0W9jy*@vo(&;pWFq_R5w0VAhrfJ$}H0pFZk|dMKq!?dW zS?TKPDt^wR)oN#FXCZ`FS6Ahwa=9E$)9vl;jg5^nGczwQFXQ9m;c$3zauPylwOapn zT-Dx>TrO8M8a+Qhzq`9LnM@9c>|B&SzA9tQvr1R-w2YPC9-%Ow&CIk_^KjNNWuT3X_HzKm2Nkx;AEot>S^##NF^ zt~HHD^ZNQKK4&tS;s!>eQKeF`EGzZbZnw)3Z*Fe(`FychY;$w7j8t1&8_)BxSgfGC zN~L_HmGr2$x0hjB;N$1_A*9Kx=DjBog`f_)st|g&wW1uS?HI z;?ZMub(LjVf*?qe9334k*>QV&+hj5g4-dDrw0Jxox7%G`UoSte$K&BRj$xQGQad|4 z-QC?bo2{dxBODG73=9AO78VwckB>DPje_4bC`j%_{C>aF=@fqUO^NtzMEZdU{}(}n zJwk&$LW4a*gFQlnJwk&$LQ~@I$nW=8zmD1=olfiZdTFGDM^2}+TJ_W@6h%p2;SWDm n%K`64Xs}0Uut#XHM`(Tn(ri_nuw&1<00000NkvXXu0mjf4-mZ< diff --git a/Doxygen/build/inherit_graph_5.map b/Doxygen/build/inherit_graph_5.map deleted file mode 100644 index 023aec9..0000000 --- a/Doxygen/build/inherit_graph_5.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Doxygen/build/inherit_graph_5.md5 b/Doxygen/build/inherit_graph_5.md5 deleted file mode 100644 index 2a70403..0000000 --- a/Doxygen/build/inherit_graph_5.md5 +++ /dev/null @@ -1 +0,0 @@ -0c13f6ce1f78441ee21cf9d1c45e1908 \ No newline at end of file diff --git a/Doxygen/build/inherit_graph_5.png b/Doxygen/build/inherit_graph_5.png deleted file mode 100644 index d5c92c8927ca757d8ded0b3ec0804666ab8b92d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1972 zcmV;l2TS;gP)TS`00006VoOIv0RI60 z0RN!9r;`8x2Wd$}K~#90?VEo{Q(qs)&((pYZJGE3+H`IfXhvHaX~`s^Xx1u?awBqD zSSu^U=^vK;mCGLl7A0Xb$}qy&fY-J)iqIpYyq&`@ZKK?{x%(5MVG%#qVz?fLYyO0bv+{1%zP)77&IJENY{x ztE;-Y`fsIzSrw?&>Rr2bk(_I+-2D7}r_;IE2>%Z(aRw?VD1a39?%lh*X(3c9m0quRI2@#grmqfXlgr z@pwFPDzaLw1VK>mJz{otwxFPZ&*ujR2g_u#FJHbOdu3(ircIkXj-^s*SXfv?Lj&1e ztJNkaCvV%fjV_MU=`1KH5C{YtHf&I-R4$iGp-{Yi`}WkSQv^XICno~{Y&P486DPvM z!y_Uha&mH}rlwF|u~=MMTDoV?9yXiZ*x1AeqLT4m&?t{%JQzs`1rU?CgX58TefU@_UsvHr^~@d4g31~BoYaS!%0X;=Sy(c5QHQ(A#HGtn?m8sZ{p&_qVsVkBp4O#>Qr5X3ovc z(K-A1`Q_#1)z#IZ=Fgu$A3b`6rXRXE+1c6e-o1PA;>FO=P-0@D!C+`?Y)ni{eE9Go zgs{828vu}%mG$l0x8B~~H*elpESBu-Y;wd04<3}4mpdE|g+f8i#Aq~%#bR_kF)?xL z)~$qugw)hjhr{vY$&ck>ldx z?%lfwnbj6TXt&!B9XbR6C@n4Z?TG*Y=yW=&WqI~Mp`oD*=`}Po1OVW2xoGR{@9*z) zI){gceRSElapS>*2en!)06?qNW@l#y1_si_86FfYX7KA(U7{CShf1Zn=O(`vN_1qFqNhodGL z!FLXH2!%rGvDIp&o?TRJ-EMbFOG{2pj!-C^nwqMutt~Dt_B}cs%ejQDUAy-C_wVS~ zX0v%a@cDc{KflSzNvinJ6W{}tN~P23dU|>c1_N5Z=;B02N4wo_^n6qC^ZWN@Mn*>d z{{4GoWCS(QBoP@IiJBhYdMYX^%FD|Q2E+F4+eu?YL_}d>VNXww(P-pwI0}VAC=_13 zde!@G@pwF!%SD!g+;I5F!AA{|M95G)9*=rr<=MJRa}Dg$qKVu(!9@WHPB# zs^H*Yur#RSEqn>{n1K+-jvdR)%$%N{9v&V>f0ubIVGzQMj0~Af_UY3nm&^6~_3Mm` zj2}OKKnN=;Dq><{kPr13Lg;q8`Fy@WAlSWoH)*7cBa_J_5=mcQpTptMYPHSH%@D%F zhYuGP7XJG63-wJ+O_j-HV`F0@BO_^PY3b?d$Sx9z8X6kNA+B7x5)~Eo`SWMr)o{Dr zt*xy}rLwZJ()(;mO3Lx$$89#-z`(%Hojbw5mV3G!=xQhui9$j`+S}WmPUnpqH`r{p z&1PF*ZKT~DLb#`|8z9>3?*AliodmyyK7#J9kNF;%Qfm^q3y?giWyaIAMoyEn) zLZL7yC@3i@>G|{L$nHZx5JHVc0|2P6uO}^ZaU2duetv#rWMoK4h)SiJot=dcnoOqH z*jN^em6VhOAsincS11&rp`l@6VJAvvOAlUy!`_;(r@ z8VG{W>2%Z=7Wh*Jh7njm7)D?LVHkl0gkc005QY(0Ko~|~0bv+1&(C_AnwnNV56miM z9s$Ya@|Dj6vq~ZGduI$2@E!=m2rM8BBd~xljKBiIFybG_ZCRlnlQDz<0000 - - diff --git a/Doxygen/build/inherit_graph_6.md5 b/Doxygen/build/inherit_graph_6.md5 deleted file mode 100644 index bcc4c49..0000000 --- a/Doxygen/build/inherit_graph_6.md5 +++ /dev/null @@ -1 +0,0 @@ -d94d4c448319ade5856fe16313cdaf90 \ No newline at end of file diff --git a/Doxygen/build/inherit_graph_6.png b/Doxygen/build/inherit_graph_6.png deleted file mode 100644 index 432d70c7c7af8fe75909d44c22f32c07efe7eb16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1690 zcmV;L24(q)P)InUkQ#)1$646|VW?F2B12aC!;u&4|Ki^@Pap`G5|-jGk}welfp;nciAPk0Lc#i#?(Xh{X9fV+w{Kr{b#<6=`}XZ8 zPMla)oUL28wzs!0cXo%vp-?E+tXU%v2(((Q-|t`6@NeI~v7*7@MES&#SmNBNI-L%N zuw%!L#HNKHNz!Js(KH>jxZQ4t!*T4`vHxPaFboDmLqh{aQJtNgJv}`qPo9kGwz#hKSS(##T|0N~k-y+uVucDvnTu@n^*wY9ZD z2>bf_00320RnybcE|=@&%a;^IsZ^@qjCbzbX=-YsXFU+1 zTefT|EiI*K`rf^JLqkKCE?vsY%ZqPK#A5N4D_2HGM{nG?;qiE+QfWy^iOFP&+!B9E z=qYNoTEi?+DJv@r3o)acpc1`2+$1E|)tn zFtEg2V`F0+4yUiL4?<|MSa>|%+}vEOIB37R-R`g;K~W)ugM)(r0I%1Jx^LdR0RVjb z_z^-_SXgK<7$S4HcI{evdb-EsL0z?44FJ$+G&3_Zzg;Ut=<)koCMPHN?AZeV(ChVo z;tv3@TCJg$#MD$ipZ_PLyk0K=Kp+sHM~0M?6u;j;JUqO_koD`=@7}%JWHJE&OeT{` zrAkXnixp>hcsL~`B|krZiGUPEaX6gZ++5T}=X~(psZb~k^S^%m`o)VEySuxCVU0#( zOG}H(#>V(UCGz-PxpL+F{5)z; zOiV;Nh(sbboBjFo=g=Dh-IYr~lBCsY?eFim+wJJ=jTI+1H#ZOnpuHFhoBi`Lb8>PP z78ZOyAL@EM9%Mw_u=l9V&CN|sO?JC|^XAP#V`gUN>C>nC`}-XZ2barLDwPC5oI7`J z>AQ0Y-o1NQUtgb{on2Q~M-YU|<#IZmBuVmky!ZkpQdFr_+Sb-a)AY#5$eA-|A{~T6 z;oiM_H5$!_4Dw$07=+Pr&Z*FeR&(Du+ zBMb%u0HD3SJ!pv)ho)(*R-2QPlb)VVlH}~{EQHYMbQTm8a5x;9Oa>twA0JmLm3%%w zBO~L`p+o3_076(;SlH3gf!Z@OGhx@5nwt9Cm5If&YU*+U5j8a)Q8E83B1Ofo2^k0$ zm4RSU83-1YfnZS?2o{xrU{M)JlrL=W-@l*yJTM6)il_$;97uj1m;}Ot`2VSl1J_gr kf<miW`Tzg` diff --git a/Doxygen/build/inherit_graph_7.map b/Doxygen/build/inherit_graph_7.map deleted file mode 100644 index 1b6f392..0000000 --- a/Doxygen/build/inherit_graph_7.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Doxygen/build/inherit_graph_7.md5 b/Doxygen/build/inherit_graph_7.md5 deleted file mode 100644 index 68acb99..0000000 --- a/Doxygen/build/inherit_graph_7.md5 +++ /dev/null @@ -1 +0,0 @@ -6ba22a43115dfe6a9765ea4069b86b04 \ No newline at end of file diff --git a/Doxygen/build/inherit_graph_7.png b/Doxygen/build/inherit_graph_7.png deleted file mode 100644 index f6283cea4222f32e7bbda208ff98e21d10be1f08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2005 zcmV;`2P*i9P)TS`00006VoOIv0RI60 z0RN!9r;`8x2Z~8VK~#90?VEo{Q(qs)&(%SxIhHuhoK9zfR=A;&E1M()X|2>~Zb<&9 zq?HAt`G;kHm6Z}%e@NMkG>q8HAd>#cLXC+M+N8*cO`YyKa}!<5Wt8(ge;l4Yx6Qk+ zdVTDX=e+*9=W{>jb3XTT-}jv3y^eqo0t{xk`26hzFl!quAPgh0fG~`}0>UtYMQwC< zch}U^{H;_lYl70!(%rjvyPAK@Kqix^rKM%nQ^KqnT3T96CKJ`d@^pIo^yzBlgIQw` z1mR}Edms!Wuz)a(zyiWBVl@OL7KsNvxCMPGC(N`oAJ%0Sy)Be|M zi)SDVBbFnew6rwhPhP)%z2cbx05UQ%^78WBjH#)q=g*&CQkmN^3z7Z*bc`}gl(*|ZQ!rLv`^#b&d)EPB1Zv$ON`>C^v> z;oP`)@19I1)9dwpeSI@CGYW-bLAUw&`8RLg6ciLxS68n>Rt&jt;X+YSQFnLuN(EfW zC5*@8xuznLBng6`-h0H%%uI1{F`v)pa5z$_bYx@%*{iCmwrttrcAS=$#^rLGnwnhQ zRVtNOERK(lr;B5^+lz~fqoboYZrrF;Djg1oLZRsE>pOAc1VIpDu^0egu~>3)aza8v zLPJCI^Yf>srchszNK{c#v2WkLz`#JYT7B!*t*opp4u=yN8Ch6Z*xTFdb}gSieJU?6 z=kxi6g@xha;n~^Qo;4XCAD2p{Y&Lt_wr$UzJ#*RVa_~~afq?;uM8amX6A}`-y1G2a zqN@p&lP6EETet4$(W6_pZoP8l%Fxh|r_YjD?LAOlUY=gB@95|l9UYC0jm^r+nxCJi zbN2D^DJ(3kudheVU%!4mdh`fQKXh?&b93LnfB*93%i-bS#Kgq*_I9;eotT)|(9i%O z?CI$N0Ay!pfBW{WzrVk?x7TDc<>uzPMtu12;q~j+Z8jTqzA>B4jg5^N85yWKF)?xH z&YgsWgp`yNo6Yv*$&;a>p=;N!MMp<_UV>aMU%!66!C+`@ZKW=wUUHzLuCDIt)vF{) z%H{Hd2M=1U)@9Uo`}Xa(Z{H?KvbMI?U@(Y8B8fzzQmH&2^~FM6i8LCGn`J=`95~<> z#A>xd2*bm}+uGWY4|?G}Jv|K}OiD_sudjC*$HvBxkJIU7v)La$eDE^X*w`40#p>zl zfe@4esO(qkI#fplGLQS+* zy1ws3Mn+Pd3knM6=jY94^WMFClarHw{P+O?sIIQAsj2Dj@8|RRXV0G1YPFE&zdA{h z3S7P3CphF-KP>)HHq@G<;ZJkc%t5>h`^YaA)!PL}LU0q#SS(*3I=~&4n z%+Jqnc6JsWTPzk&2R@(gmdjtEG+EOrAs3tBgi>4G_<6oM5ohrc6PGa zY=uH05C|?`zU+Cocs!oN;c%70wc+rRgO?g2iMT@Xcs%OaMb>s;V4$?Ll*i+pJ9kbX z5cK!=YqeUXQpw?P!1ADuxA-N@Z3aRdJ9aE9D{Fds+GsSQzsuZ~FbH90W~Njs{qp6D z!{K=M?p+=z*ZK|a)D2%*#I~R_C;z*@Zi9|9mFkrLU zR4P?#Yb%8C$dMx@B_+Rq|3-aNQc|Q+so88E9UVp!NFa-c7cB{_jEbX z)leuD1_cFmbadG5_M10v1_lONES5#qmP%=9>6tTUy1Kd+y0QNZ@L0lDW)FmR7=wd@ z5{bm$-+#xB9e3~ET~I)FyS=QeOdt>h1Oy}{B|U%s9NE1H2trs{SqT7WY;1H{=;GLH zwxXhlNfByWBmGOim$@KK}z`($`xVYNdT9<(6a-gfBP$(=fFHcTR z-mqbVNF;ju_AT;XOl?;XPXQ5-vVJ!=H_PR6h<~Snp@AR>jYdO#VSztoU>Jb~gkc00 z5QY(0Ko~|~0bv+{1%zP)77&IJ3;e97xw(1u^T4c877&nJE?@mTFl!V7zjwwk0q=n@ njKBiIFaiq*!w4)O3?u#pRFPoQ0rB;S00000NkvXXu0mjfGV#&4 diff --git a/Doxygen/build/inherit_graph_8.map b/Doxygen/build/inherit_graph_8.map deleted file mode 100644 index 46bb199..0000000 --- a/Doxygen/build/inherit_graph_8.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Doxygen/build/inherit_graph_8.md5 b/Doxygen/build/inherit_graph_8.md5 deleted file mode 100644 index 1f180c8..0000000 --- a/Doxygen/build/inherit_graph_8.md5 +++ /dev/null @@ -1 +0,0 @@ -519b7766a67ae2440b4386b052cd2b9d \ No newline at end of file diff --git a/Doxygen/build/inherit_graph_8.png b/Doxygen/build/inherit_graph_8.png deleted file mode 100644 index 1b5d9a6a517db6f8e0edb0654f22a182e3613db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1719 zcmV;o21xmdP)(x1)I*C(L1@HKDFDN;7z^D~ zDF`hp1))WyAn6cQB9Yv=b0-Z8(IDtbr69?OT2)nr{mQFXuTq{F0HCI(rm?Xx#<*wC zo)afdtSHWo9Xm`W(@Ix&I-Ly-4IB=K!{OA|*ZX|F6-{4QSiqKo$z0+mj?|K5rE0ZW z7{%VbdsCYhLZi`GtyYpGBNm6l(c9a5?AWpYV!0S@-MUp*SLbjz1_uX&!Ju3&U(zic z4!?f=TBTCybh>E!>eZ_w`%_z6d-Uj0biKH^7!%?2>C?^4&3%1+smeT+$8Tb6r(c#o=(eySpRP^?JQTA}KB| zP825)2xzt1f`Wo|>(*&Bn%UV|xm-RtIC$j95e&m55(xlca&oevp<%;@4LLbEN~Lmo zdK%3YiA3$~?YnpHUb}X!*=)Xg^{P}VWwBU%K3}a?4-5>%+{=d#AI_dVD-a0OYBi6? zlgVVs?ORh*)2dag4jnqQWy_We7cPvAjU^W+Lb`iuV`HPk;dt}rjmP6DDk_pnrQvWm zku!tAP^;Ajg8>bH{P=PI{(V%YiQ*^}ig)kcJ%9e(<#LslmiF}Yn9b(W(o&<*2qEn6 z?*{og$H_yu4hm*TlOGnwo+T@_4+LFJB@b^x^93*RK#lu~=*{7$QcW&xd?Mp-^^q_VDoV zGHdyKJ|>gd-`@`*G@H#V7Hf8PHc=c@uMUSJCP+k72;u1HC;-6aa-re-_wNA!e!m|= zSW;5b+1VLA(P%WH8!Rp^_Ika@s8lKe04kO0+qZAO-77@&@%vk*rlt-YH~;`>Z*Tt- ze*l2RVu`k-rl+#m>_3_1a=8EiJRT3dGGt_A1OkEa@$qG*Y}&MG|Ni}Yy&eFd*XtDu zMOIc;qB!H@;~5zlg@uL71SAN8$zphpGVh|lauid0)c?RV0`)VCHjFtPvtUbG#ZP=GBh;Q)6;{_-b8Wo^YcTY5URy! z7>u8{nU|NhxVY%?c+k-4bRr`f#(zh}FpSIPo;!EW?RF#QoSd9fr%nwG4fXc+W@l&1 z<#HUy&!0cP{L{G%A3uIN23kZYcqk&%&^nHht@@a)+$005WE9UdM=ubnuKS5#EAw6si2Ob`Td^5n^V`}T3U z+?Z5Dp^!`_v)k`C`j)UifKN6X90v$C>;LgCGuH$hxag%Ab;fws0b9LLwJ zStAyUpFDYj?3XWJE-WmJzeaR+b^-uQCR4@UI-wBB_$=@-QAHTo<4mlkw`K#Gr3%DU0vPC z$jEPZCJ`&@sVfD<_0(iUrTJeGFDm_+kb=;nQV?2H3POuYL1w2 z;lqdN&x0m~EFo%reSP}#ph+PZr2jvaa?m}Mg3zK;5L#3ULW@d4{sHX(;QfN0pdJ7K N002ovPDHLkV1iA)O&S0I diff --git a/Doxygen/build/inherit_graph_9.map b/Doxygen/build/inherit_graph_9.map deleted file mode 100644 index 640de15..0000000 --- a/Doxygen/build/inherit_graph_9.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Doxygen/build/inherit_graph_9.md5 b/Doxygen/build/inherit_graph_9.md5 deleted file mode 100644 index 8dcd915..0000000 --- a/Doxygen/build/inherit_graph_9.md5 +++ /dev/null @@ -1 +0,0 @@ -432c836055c60e0a7148cd35fe49ed41 \ No newline at end of file diff --git a/Doxygen/build/inherit_graph_9.png b/Doxygen/build/inherit_graph_9.png deleted file mode 100644 index a0707c57fdd9d37020ee55bc9aa17bcfca2693b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1940 zcmV;F2W$9=P)TS`00006VoOIv0RI60 z0RN!9r;`8x2T4gpK~#90?VE8(Q{5ZK&(%SxIi~2OHk-}@t!PUlEtw?*X|2*IH==D8 z(#nG2@(;uQDk~*WK`EP2h7p??1kyiQs4-EZ+$b7|Q`a_KZlY^BifW$skHhc&_HMg- zeRqBB_2qp2y64$B&w0+X?>*1iy-Gj`0R|H(QNKF?%<2XU2tx}jAPglSGcW(tI`j_+h^Jjt}W@l$37%LPCA3b^$Z2#@K z#XAs&7Lf?3sHlkeGcRAhT=vKS07s7=mCNM;#=^qFix)5cEk8SV?(FF3h%5#O;oiM_ z34$;hjgfiyZxi7Tq*AG%AN%+3U*50~N~N;9yW8z{la{fuv4MesvuDr#6VrvHxw$ze zCMHaW#l^)}uU?gxmp3#ttXNbLbLrBh%F4>2p`qn+xSS=7%jJ?=k=<@52*UrnM=UHX zs8lK*kH=!M#A5NMPoI#zzP^6brcD9YMMXu)$;q9ao#b$hMw6G9w|)C|DnA~NN2OAw zr>7?*Bq)_iuh%P;O5eSEclz{cf*|tp@&Eu%r}N~=lWaCSB_&0nP|VHEp|L`tu(q~# z-@bkE@$p)%7633hI@;3G($v%xa=jlveypjf;qiDC6%`x~r>v|jxR1l(5R1i3CUeV{ zEl;05CGAu(gvp`FWD>?bVqD5&(F_82y=6D z+uPeof`hIm`vvT_wU2ZH8nNGU@(S7x=0)e2eu8tg4S63&INFam`hXVj$Fc^?sp-=z-%FD~Y ze*GFgQD(Cl05CH%gPLe-ak*S!VxY>QKp?n$`7-G_D=X{n-Mch%3n6s5T!#-I1_0F7 z)`sti008K8I)BUZoPm;(l9n=Ra&i&?z~OMv(K|Xi+T-z9ES4}sHf-2%=+GgJMgsuQ zXf!gJEH*Zl%8$ijiH?rW$jAue&}OqS7>u;EG}J`3l6=3japOjGVKSNS+_}@z(h}^U zp`oF%vC(KW@_4-S=g;f)dPwnCop!rDE-sGEW}_w8PvLc!Z{EBqDJl8>{X2y4=FOWK85yXL z|22fr=kxJ+y!7<+J$v?$Mk+sIu~;M$nM@|P+pW=PdU|>wgh!4Xsj8~_`ST|lTToCS z7K^8+r>$0NVPRo$aWS$B1cJ`a&fs+gl&}DNK3{KduUsy#udfgOG(SK8#EBD5r*nLK zeAljB;D6(;IK_;{z&xy0Q1qgJcWojW%;I2dv*e+dXG zVasy{LMM#z@o|wz6dN16ZQHinw{M3OkjLYxuCC_u`EhY^xw*N|o;^eMFam-Q*45Pk z06IE4NDGx8x7%G=S(%!enwXfVR4Nx179fOry*@KDlfhu*=H@~O9S(<7DosjCN={Bb zb?OxQMq#7^3Xk1xFD@>QkB`sF%4%(GB?Uwk162+M0zpkpO@4mLgDMzuTlS{ zUURH7dkdZxSL`A>ktH?)9L&lSm0L~7+PQfVQ7H`grNl%5QY|5Kp0wJ z0byu?1%#nRh=1$p>grngI54Y}5CW1&Br6{WW|czV=gt^9;4=`07Fa+ST3`WTXn_TU ap~W9`{$7512FL^e0000 - - - - - - -Leonetienne/Eule: Class Hierarchy - - - - - - - - - - - -

-
- - - - - - -
-
Leonetienne/Eule -
-
Homemade math library, mainly targetted towards computer graphics
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Hierarchy
-
-
- - - - - - - - - - - - -
- - - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
-
- - - - diff --git a/Doxygen/build/jquery.js b/Doxygen/build/jquery.js deleted file mode 100644 index 103c32d..0000000 --- a/Doxygen/build/jquery.js +++ /dev/null @@ -1,35 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element -},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** - * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler - * Licensed under MIT - * @author Ariel Flesler - * @version 2.1.2 - */ -;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/Doxygen/build/menu.js b/Doxygen/build/menu.js deleted file mode 100644 index 433c15b..0000000 --- a/Doxygen/build/menu.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - var result=''; - if ('children' in data) { - result+=''; - } - return result; - } - - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchEnabled) { - if (serverSide) { - $('#main-menu').append('
  • '); - } else { - $('#main-menu').append('
  • '); - } - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/Doxygen/build/menudata.js b/Doxygen/build/menudata.js deleted file mode 100644 index bd0ec67..0000000 --- a/Doxygen/build/menudata.js +++ /dev/null @@ -1,113 +0,0 @@ -/* -@licstart The following is the entire license notice for the -JavaScript code in this file. - -Copyright (C) 1997-2019 by Dimitri van Heesch - -This program is free software; you can redistribute it and/or modify -it under the terms of version 2 of the GNU General Public License as published by -the Free Software Foundation - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -@licend The above is the entire license notice -for the JavaScript code in this file -*/ -var menudata={children:[ -{text:"Main Page",url:"index.html"}, -{text:"Namespaces",url:"namespaces.html",children:[ -{text:"Namespace List",url:"namespaces.html"}, -{text:"Namespace Members",url:"namespacemembers.html",children:[ -{text:"All",url:"namespacemembers.html"}, -{text:"Functions",url:"namespacemembers_func.html"}, -{text:"Typedefs",url:"namespacemembers_type.html"}]}]}, -{text:"Classes",url:"annotated.html",children:[ -{text:"Class List",url:"annotated.html"}, -{text:"Class Index",url:"classes.html"}, -{text:"Class Hierarchy",url:"inherits.html"}, -{text:"Class Members",url:"functions.html",children:[ -{text:"All",url:"functions.html",children:[ -{text:"a",url:"functions.html#index_a"}, -{text:"b",url:"functions_b.html#index_b"}, -{text:"c",url:"functions_c.html#index_c"}, -{text:"d",url:"functions_d.html#index_d"}, -{text:"e",url:"functions_e.html#index_e"}, -{text:"f",url:"functions_f.html#index_f"}, -{text:"g",url:"functions_g.html#index_g"}, -{text:"h",url:"functions_h.html#index_h"}, -{text:"i",url:"functions_i.html#index_i"}, -{text:"j",url:"functions_j.html#index_j"}, -{text:"k",url:"functions_k.html#index_k"}, -{text:"l",url:"functions_l.html#index_l"}, -{text:"m",url:"functions_m.html#index_m"}, -{text:"n",url:"functions_n.html#index_n"}, -{text:"o",url:"functions_o.html#index_o"}, -{text:"p",url:"functions_p.html#index_p"}, -{text:"q",url:"functions_q.html#index_q"}, -{text:"r",url:"functions_r.html#index_r"}, -{text:"s",url:"functions_s.html#index_s"}, -{text:"t",url:"functions_t.html#index_t"}, -{text:"u",url:"functions_u.html#index_u"}, -{text:"v",url:"functions_v.html#index_v"}, -{text:"w",url:"functions_w.html#index_w"}, -{text:"x",url:"functions_x.html#index_x"}, -{text:"y",url:"functions_y.html#index_y"}, -{text:"z",url:"functions_z.html#index_z"}, -{text:"~",url:"functions_~.html#index__7E"}]}, -{text:"Functions",url:"functions_func.html",children:[ -{text:"a",url:"functions_func.html#index_a"}, -{text:"c",url:"functions_func.html#index_c"}, -{text:"d",url:"functions_func.html#index_d"}, -{text:"g",url:"functions_func.html#index_g"}, -{text:"i",url:"functions_func.html#index_i"}, -{text:"l",url:"functions_func.html#index_l"}, -{text:"m",url:"functions_func.html#index_m"}, -{text:"n",url:"functions_func.html#index_n"}, -{text:"o",url:"functions_func.html#index_o"}, -{text:"q",url:"functions_func.html#index_q"}, -{text:"r",url:"functions_func.html#index_r"}, -{text:"s",url:"functions_func.html#index_s"}, -{text:"t",url:"functions_func.html#index_t"}, -{text:"u",url:"functions_func.html#index_u"}, -{text:"v",url:"functions_func.html#index_v"}, -{text:"~",url:"functions_func.html#index__7E"}]}, -{text:"Variables",url:"functions_vars.html",children:[ -{text:"a",url:"functions_vars.html#index_a"}, -{text:"b",url:"functions_vars.html#index_b"}, -{text:"c",url:"functions_vars.html#index_c"}, -{text:"d",url:"functions_vars.html#index_d"}, -{text:"e",url:"functions_vars.html#index_e"}, -{text:"f",url:"functions_vars.html#index_f"}, -{text:"g",url:"functions_vars.html#index_g"}, -{text:"h",url:"functions_vars.html#index_h"}, -{text:"i",url:"functions_vars.html#index_i"}, -{text:"j",url:"functions_vars.html#index_j"}, -{text:"k",url:"functions_vars.html#index_k"}, -{text:"l",url:"functions_vars.html#index_l"}, -{text:"m",url:"functions_vars.html#index_m"}, -{text:"n",url:"functions_vars.html#index_n"}, -{text:"o",url:"functions_vars.html#index_o"}, -{text:"p",url:"functions_vars.html#index_p"}, -{text:"r",url:"functions_vars.html#index_r"}, -{text:"s",url:"functions_vars.html#index_s"}, -{text:"t",url:"functions_vars.html#index_t"}, -{text:"u",url:"functions_vars.html#index_u"}, -{text:"v",url:"functions_vars.html#index_v"}, -{text:"w",url:"functions_vars.html#index_w"}, -{text:"x",url:"functions_vars.html#index_x"}, -{text:"y",url:"functions_vars.html#index_y"}, -{text:"z",url:"functions_vars.html#index_z"}]}, -{text:"Related Functions",url:"functions_rela.html"}]}]}, -{text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}, -{text:"File Members",url:"globals.html",children:[ -{text:"All",url:"globals.html"}, -{text:"Variables",url:"globals_vars.html"}, -{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/Doxygen/build/namespaceEule.html b/Doxygen/build/namespaceEule.html deleted file mode 100644 index 9ab075a..0000000 --- a/Doxygen/build/namespaceEule.html +++ /dev/null @@ -1,397 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule Namespace Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Leonetienne/Eule -
    -
    Homemade math library, mainly targetted towards computer graphics
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Eule Namespace Reference
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Classes

    class  Collider
     Abstract class of a collider domain. More...
     
    class  Math
     Math utility class containing basic functions. More...
     
    class  Matrix4x4
     A matrix 4x4 class representing a 3d transformation. More...
     
    class  Quaternion
     3D rotation representation More...
     
    struct  Rect
     Trivial data structure representing a rectangle. More...
     
    class  TrapazoidalPrismCollider
     A collider describing a trapazoidal prism. More...
     
    class  Vector2
     Representation of a 2d vector. More...
     
    class  Vector3
     Representation of a 3d vector. More...
     
    class  Vector4
     Representation of a 4d vector. More...
     
    - - - - - - - - - - - - - -

    -Typedefs

    typedef Vector3< double > Vector3d
     
    typedef Vector2< int > Vector2i
     
    typedef Vector2< double > Vector2d
     
    typedef Vector3< int > Vector3i
     
    typedef Vector4< int > Vector4i
     
    typedef Vector4< double > Vector4d
     
    - - - - - - - - - -

    -Functions

    std::ostream & operator<< (std::ostream &os, const Matrix4x4 &m)
     
    std::wostream & operator<< (std::wostream &os, const Matrix4x4 &m)
     
    std::ostream & operator<< (std::ostream &os, const Quaternion &q)
     
    std::wostream & operator<< (std::wostream &os, const Quaternion &q)
     
    -

    Typedef Documentation

    - -

    ◆ Vector2d

    - -
    -
    - - - - -
    typedef Vector2<double> Eule::Vector2d
    -
    - -

    Definition at line 102 of file Vector2.h.

    - -
    -
    - -

    ◆ Vector2i

    - -
    -
    - - - - -
    typedef Vector2<int> Eule::Vector2i
    -
    - -

    Definition at line 101 of file Vector2.h.

    - -
    -
    - -

    ◆ Vector3d

    - -
    -
    - - - - -
    typedef Vector3< double > Eule::Vector3d
    -
    - -

    Definition at line 9 of file Matrix4x4.h.

    - -
    -
    - -

    ◆ Vector3i

    - -
    -
    - - - - -
    typedef Vector3<int> Eule::Vector3i
    -
    - -

    Definition at line 109 of file Vector3.h.

    - -
    -
    - -

    ◆ Vector4d

    - -
    -
    - - - - -
    typedef Vector4<double> Eule::Vector4d
    -
    - -

    Definition at line 107 of file Vector4.h.

    - -
    -
    - -

    ◆ Vector4i

    - -
    -
    - - - - -
    typedef Vector4<int> Eule::Vector4i
    -
    - -

    Definition at line 106 of file Vector4.h.

    - -
    -
    -

    Function Documentation

    - -

    ◆ operator<<() [1/4]

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    std::ostream& Eule::operator<< (std::ostream & os,
    const Matrix4x4m 
    )
    -
    - -

    Definition at line 620 of file Matrix4x4.cpp.

    -
    621  {
    -
    622  os << std::endl;
    -
    623 
    -
    624  for (std::size_t y = 0; y < 4; y++)
    -
    625  {
    -
    626  for (std::size_t x = 0; x < 4; x++)
    -
    627  os << " | " << m[y][x];
    -
    628 
    -
    629  os << " |" << std::endl;
    -
    630  }
    -
    631 
    -
    632  return os;
    -
    633  }
    -
    -
    -
    - -

    ◆ operator<<() [2/4]

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    std::ostream& Eule::operator<< (std::ostream & os,
    const Quaternionq 
    )
    -
    - -

    Definition at line 325 of file Quaternion.cpp.

    -
    326  {
    -
    327  os << "[" << q.v << "]";
    -
    328  return os;
    -
    329  }
    -
    -
    -
    - -

    ◆ operator<<() [3/4]

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    std::wostream& Eule::operator<< (std::wostream & os,
    const Matrix4x4m 
    )
    -
    - -

    Definition at line 635 of file Matrix4x4.cpp.

    -
    636  {
    -
    637  os << std::endl;
    -
    638 
    -
    639  for (std::size_t y = 0; y < 4; y++)
    -
    640  {
    -
    641  for (std::size_t x = 0; x < 4; x++)
    -
    642  os << L" | " << m[y][x];
    -
    643 
    -
    644  os << L" |" << std::endl;
    -
    645  }
    -
    646 
    -
    647  return os;
    -
    648  }
    -
    -
    -
    - -

    ◆ operator<<() [4/4]

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    std::wostream& Eule::operator<< (std::wostream & os,
    const Quaternionq 
    )
    -
    - -

    Definition at line 331 of file Quaternion.cpp.

    -
    332  {
    -
    333  os << L"[" << q.v << L"]";
    -
    334  return os;
    -
    335  }
    -
    -
    -
    -
    - - - - diff --git a/Doxygen/build/namespacemembers.html b/Doxygen/build/namespacemembers.html deleted file mode 100644 index 4400f6c..0000000 --- a/Doxygen/build/namespacemembers.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -Leonetienne/Eule: Namespace Members - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Leonetienne/Eule -
    -
    Homemade math library, mainly targetted towards computer graphics
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all namespace members with links to the namespace documentation for each member:
      -
    • operator<<() -: Eule -
    • -
    • Vector2d -: Eule -
    • -
    • Vector2i -: Eule -
    • -
    • Vector3d -: Eule -
    • -
    • Vector3i -: Eule -
    • -
    • Vector4d -: Eule -
    • -
    • Vector4i -: Eule -
    • -
    -
    - - - - diff --git a/Doxygen/build/namespacemembers_func.html b/Doxygen/build/namespacemembers_func.html deleted file mode 100644 index 1ec034b..0000000 --- a/Doxygen/build/namespacemembers_func.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -Leonetienne/Eule: Namespace Members - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Leonetienne/Eule -
    -
    Homemade math library, mainly targetted towards computer graphics
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
      -
    • operator<<() -: Eule -
    • -
    -
    - - - - diff --git a/Doxygen/build/namespacemembers_type.html b/Doxygen/build/namespacemembers_type.html deleted file mode 100644 index df09243..0000000 --- a/Doxygen/build/namespacemembers_type.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -Leonetienne/Eule: Namespace Members - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Leonetienne/Eule -
    -
    Homemade math library, mainly targetted towards computer graphics
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
      -
    • Vector2d -: Eule -
    • -
    • Vector2i -: Eule -
    • -
    • Vector3d -: Eule -
    • -
    • Vector3i -: Eule -
    • -
    • Vector4d -: Eule -
    • -
    • Vector4i -: Eule -
    • -
    -
    - - - - diff --git a/Doxygen/build/namespaces.html b/Doxygen/build/namespaces.html deleted file mode 100644 index 370b6a3..0000000 --- a/Doxygen/build/namespaces.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -Leonetienne/Eule: Namespace List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Leonetienne/Eule -
    -
    Homemade math library, mainly targetted towards computer graphics
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    Namespace List
    -
    -
    -
    Here is a list of all namespaces with brief descriptions:
    - - -
     NEule
    -
    -
    - - - - diff --git a/Doxygen/build/nav_f.png b/Doxygen/build/nav_f.png deleted file mode 100644 index 72a58a529ed3a9ed6aa0c51a79cf207e026deee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U diff --git a/Doxygen/build/nav_g.png b/Doxygen/build/nav_g.png deleted file mode 100644 index 2093a237a94f6c83e19ec6e5fd42f7ddabdafa81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_0.js b/Doxygen/build/search/all_0.js deleted file mode 100644 index f6e1bc9..0000000 --- a/Doxygen/build/search/all_0.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['a_0',['a',['../classEule_1_1Matrix4x4.html#ab3ff5bc09a2598faa76188d0cc31addb',1,'Eule::Matrix4x4']]], - ['abs_1',['Abs',['../classEule_1_1Math.html#ab9ccf4aa730ef825faf224445c86ab25',1,'Eule::Math']]], - ['adjoint_2',['Adjoint',['../classEule_1_1Matrix4x4.html#a1c664d93fbd68ec9f8c762263fc45a97',1,'Eule::Matrix4x4']]], - ['anglebetween_3',['AngleBetween',['../classEule_1_1Quaternion.html#a2c7d0c3521f0e6127ca4b5d5bdbf8329',1,'Eule::Quaternion']]] -]; diff --git a/Doxygen/build/search/all_1.html b/Doxygen/build/search/all_1.html deleted file mode 100644 index 8eb215b..0000000 --- a/Doxygen/build/search/all_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_1.js b/Doxygen/build/search/all_1.js deleted file mode 100644 index da0e8db..0000000 --- a/Doxygen/build/search/all_1.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['b_4',['b',['../classEule_1_1Matrix4x4.html#a2258f9cce9558711c59ffcf140a39756',1,'Eule::Matrix4x4']]], - ['back_5',['BACK',['../classEule_1_1TrapazoidalPrismCollider.html#a756f4bcb931dd6381901362e51410da9',1,'Eule::TrapazoidalPrismCollider']]], - ['backward_6',['backward',['../classEule_1_1Vector3.html#a34083239eb29eaf4614d09d4d7014b06',1,'Eule::Vector3::backward()'],['../classEule_1_1Vector4.html#a59d02244dbcd06b9d3f09da75128242e',1,'Eule::Vector4::backward()']]], - ['bottom_7',['BOTTOM',['../classEule_1_1TrapazoidalPrismCollider.html#a7f7594171358bbc10680e2dc42f1b53d',1,'Eule::TrapazoidalPrismCollider']]] -]; diff --git a/Doxygen/build/search/all_10.html b/Doxygen/build/search/all_10.html deleted file mode 100644 index 6fd3a4a..0000000 --- a/Doxygen/build/search/all_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_10.js b/Doxygen/build/search/all_10.js deleted file mode 100644 index 1719522..0000000 --- a/Doxygen/build/search/all_10.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['quaternion_88',['Quaternion',['../classEule_1_1Quaternion.html',1,'Eule::Quaternion'],['../classEule_1_1Quaternion.html#abcc01358aada56ea5f0db4da18aaf77d',1,'Eule::Quaternion::Quaternion()'],['../classEule_1_1Quaternion.html#a2dc0ed0c7773600cf443151573287e4a',1,'Eule::Quaternion::Quaternion(const Vector4d values)'],['../classEule_1_1Quaternion.html#ab3b8862f9fd86c7ebb426b4940d08b39',1,'Eule::Quaternion::Quaternion(const Quaternion &q)'],['../classEule_1_1Quaternion.html#a1e4c6f8984bb7a9ae1ffed45adffe02f',1,'Eule::Quaternion::Quaternion(const Vector3d eulerAngles)']]], - ['quaternion_2ecpp_89',['Quaternion.cpp',['../Quaternion_8cpp.html',1,'']]], - ['quaternion_2eh_90',['Quaternion.h',['../Quaternion_8h.html',1,'']]] -]; diff --git a/Doxygen/build/search/all_11.html b/Doxygen/build/search/all_11.html deleted file mode 100644 index f78343b..0000000 --- a/Doxygen/build/search/all_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_11.js b/Doxygen/build/search/all_11.js deleted file mode 100644 index 18863ae..0000000 --- a/Doxygen/build/search/all_11.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['rad2deg_91',['Rad2Deg',['../Constants_8h.html#afa51234d581318384aacb84a195c3a2b',1,'Constants.h']]], - ['random_92',['Random',['../classEule_1_1Math.html#a6aa6d6c804f995a089779219e5136e4f',1,'Eule::Math']]], - ['randomchance_93',['RandomChance',['../classEule_1_1Math.html#a60bffec38a861b7701fc90bd6f1a11d6',1,'Eule::Math']]], - ['randomint_94',['RandomInt',['../classEule_1_1Math.html#ab8d66e39e794d89594c50690ccc92c60',1,'Eule::Math']]], - ['randomintrange_95',['RandomIntRange',['../classEule_1_1Math.html#adfc55be8cb68aba351374f045f29a2ad',1,'Eule::Math']]], - ['randomrange_96',['RandomRange',['../classEule_1_1Math.html#a48ca8451f9803ce35d2a35cfb83d8ae9',1,'Eule::Math']]], - ['randomuint_97',['RandomUint',['../classEule_1_1Math.html#ad38d9a50e08cd02bb35161cc3bd77b26',1,'Eule::Math']]], - ['rect_98',['Rect',['../structEule_1_1Rect.html',1,'Eule']]], - ['rect_2eh_99',['Rect.h',['../Rect_8h.html',1,'']]], - ['right_100',['right',['../classEule_1_1Vector2.html#a594b062e78cb2e92dbb533a435258f49',1,'Eule::Vector2::right()'],['../classEule_1_1Vector3.html#a1febd6152b8964147229242630b8c8f0',1,'Eule::Vector3::right()'],['../classEule_1_1Vector4.html#a4701bae8f20522fe93575e8909478f36',1,'Eule::Vector4::right()'],['../classEule_1_1TrapazoidalPrismCollider.html#a67a468becb53ca0d50e8da3daab98b85',1,'Eule::TrapazoidalPrismCollider::RIGHT()']]], - ['rotatevector_101',['RotateVector',['../classEule_1_1Quaternion.html#aaeb89218e886e605c6e2a87c9cb773a4',1,'Eule::Quaternion']]] -]; diff --git a/Doxygen/build/search/all_12.html b/Doxygen/build/search/all_12.html deleted file mode 100644 index dd9ff1d..0000000 --- a/Doxygen/build/search/all_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_12.js b/Doxygen/build/search/all_12.js deleted file mode 100644 index a7b87bc..0000000 --- a/Doxygen/build/search/all_12.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['setrawvalues_102',['SetRawValues',['../classEule_1_1Quaternion.html#a7046064a89615e16760f17f41b60a31d',1,'Eule::Quaternion']]], - ['settranslationcomponent_103',['SetTranslationComponent',['../classEule_1_1Matrix4x4.html#a6e4fd75a1f47f42f922ef4355d448411',1,'Eule::Matrix4x4']]], - ['setvertex_104',['SetVertex',['../classEule_1_1TrapazoidalPrismCollider.html#a5acc127ec848dceead5ad017f36696aa',1,'Eule::TrapazoidalPrismCollider']]], - ['similar_105',['Similar',['../classEule_1_1Math.html#a4c9a4bc679357551b4a6315497f80f6f',1,'Eule::Math::Similar()'],['../classEule_1_1Matrix4x4.html#ab8340e0e909a6cbb1a32439f2ca2c092',1,'Eule::Matrix4x4::Similar()'],['../classEule_1_1Vector2.html#a69fc37a6e885b64426d5846be33c7366',1,'Eule::Vector2::Similar()'],['../classEule_1_1Vector3.html#a9613bb7d4981c921b8310d5eedf59b07',1,'Eule::Vector3::Similar()'],['../classEule_1_1Vector4.html#af49ea98d369420a07158d705eab60479',1,'Eule::Vector4::Similar()']]], - ['size_106',['size',['../structEule_1_1Rect.html#a330821ad2e2fbffe4575783619923f8d',1,'Eule::Rect']]], - ['sqrmagnitude_107',['SqrMagnitude',['../classEule_1_1Vector2.html#ad8c2b3e86fc91a641a0817047a63170f',1,'Eule::Vector2::SqrMagnitude()'],['../classEule_1_1Vector3.html#ad2f078dd733634a321157d23979a4162',1,'Eule::Vector3::SqrMagnitude()'],['../classEule_1_1Vector4.html#a2cd0433c99303b8934993b2fd2aa1c6e',1,'Eule::Vector4::SqrMagnitude()']]] -]; diff --git a/Doxygen/build/search/all_13.html b/Doxygen/build/search/all_13.html deleted file mode 100644 index 2611a10..0000000 --- a/Doxygen/build/search/all_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_13.js b/Doxygen/build/search/all_13.js deleted file mode 100644 index 2b90eff..0000000 --- a/Doxygen/build/search/all_13.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['todouble_108',['ToDouble',['../classEule_1_1Vector2.html#a2f7e2f5eb22ab04166cbaa0aca6dfb20',1,'Eule::Vector2::ToDouble()'],['../classEule_1_1Vector3.html#a04560b5fa992b7fa455fc4d406928df8',1,'Eule::Vector3::ToDouble()'],['../classEule_1_1Vector4.html#a267ad7bfad5ea8f6f8c001cee817c54e',1,'Eule::Vector4::ToDouble()']]], - ['toeulerangles_109',['ToEulerAngles',['../classEule_1_1Quaternion.html#a5a6349cb3e0a0c73df527e9ba907b0da',1,'Eule::Quaternion']]], - ['toint_110',['ToInt',['../classEule_1_1Vector2.html#a078a567a49b6d02fb8dce79885b4c2e9',1,'Eule::Vector2::ToInt()'],['../classEule_1_1Vector3.html#a0510707e23eb81c4a799dffc7b0ce127',1,'Eule::Vector3::ToInt()'],['../classEule_1_1Vector4.html#a53244995fd4f19de4e740b47aec029a3',1,'Eule::Vector4::ToInt()']]], - ['top_111',['TOP',['../classEule_1_1TrapazoidalPrismCollider.html#a09b3433cb41848fd166fc9c7614aff7e',1,'Eule::TrapazoidalPrismCollider']]], - ['torotationmatrix_112',['ToRotationMatrix',['../classEule_1_1Quaternion.html#aedb36036ee6a39fb97c5d2ba12b5d986',1,'Eule::Quaternion']]], - ['transpose3x3_113',['Transpose3x3',['../classEule_1_1Matrix4x4.html#a410b88abff7991d9faa3f818efd6807d',1,'Eule::Matrix4x4']]], - ['transpose4x4_114',['Transpose4x4',['../classEule_1_1Matrix4x4.html#af454812ef8205562e14ee094ce7172b1',1,'Eule::Matrix4x4']]], - ['trapazoidalprismcollider_115',['TrapazoidalPrismCollider',['../classEule_1_1TrapazoidalPrismCollider.html',1,'Eule::TrapazoidalPrismCollider'],['../classEule_1_1TrapazoidalPrismCollider.html#a787c22d1c84b74dd078a2d3d6d76ee34',1,'Eule::TrapazoidalPrismCollider::TrapazoidalPrismCollider()'],['../classEule_1_1TrapazoidalPrismCollider.html#acc761aadc1b6421db75eea36d5d722d1',1,'Eule::TrapazoidalPrismCollider::TrapazoidalPrismCollider(const TrapazoidalPrismCollider &other)=default'],['../classEule_1_1TrapazoidalPrismCollider.html#aad0faabb1b27478320da6d2fa44f034b',1,'Eule::TrapazoidalPrismCollider::TrapazoidalPrismCollider(TrapazoidalPrismCollider &&other) noexcept=default']]], - ['trapazoidalprismcollider_2ecpp_116',['TrapazoidalPrismCollider.cpp',['../TrapazoidalPrismCollider_8cpp.html',1,'']]], - ['trapazoidalprismcollider_2eh_117',['TrapazoidalPrismCollider.h',['../TrapazoidalPrismCollider_8h.html',1,'']]] -]; diff --git a/Doxygen/build/search/all_14.html b/Doxygen/build/search/all_14.html deleted file mode 100644 index 72d12e9..0000000 --- a/Doxygen/build/search/all_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_14.js b/Doxygen/build/search/all_14.js deleted file mode 100644 index e03ec2d..0000000 --- a/Doxygen/build/search/all_14.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['unitquaternion_118',['UnitQuaternion',['../classEule_1_1Quaternion.html#affb1a8ac42e356ee5efb304ca8df38ca',1,'Eule::Quaternion']]], - ['up_119',['up',['../classEule_1_1Vector2.html#a010bbbc9de53adcc00ffe1565c3a8208',1,'Eule::Vector2::up()'],['../classEule_1_1Vector3.html#a7508f8b060773b00cd40df94d628d7b6',1,'Eule::Vector3::up()'],['../classEule_1_1Vector4.html#a9a8c5882154587b3e34ae308466f98a5',1,'Eule::Vector4::up()']]] -]; diff --git a/Doxygen/build/search/all_15.html b/Doxygen/build/search/all_15.html deleted file mode 100644 index 767aec3..0000000 --- a/Doxygen/build/search/all_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_15.js b/Doxygen/build/search/all_15.js deleted file mode 100644 index db232b8..0000000 --- a/Doxygen/build/search/all_15.js +++ /dev/null @@ -1,24 +0,0 @@ -var searchData= -[ - ['v_120',['v',['../classEule_1_1Matrix4x4.html#a6cf89fe3ccd64d362a1d4c6ea77ff660',1,'Eule::Matrix4x4']]], - ['vector2_121',['Vector2',['../classEule_1_1Vector2.html',1,'Eule::Vector2< T >'],['../classEule_1_1Vector2.html#a99b4d19728ca8577413ccba9cecc5948',1,'Eule::Vector2::Vector2()'],['../classEule_1_1Vector2.html#ad106a7fa36501663af6959f17b317c9f',1,'Eule::Vector2::Vector2(T _x, T _y)'],['../classEule_1_1Vector2.html#af5b98f03dae0721f155eee4ef2babc8d',1,'Eule::Vector2::Vector2(const Vector2< T > &other)=default'],['../classEule_1_1Vector2.html#a3a37db279577d277c890abe282951cb4',1,'Eule::Vector2::Vector2(Vector2< T > &&other) noexcept=default']]], - ['vector2_2ecpp_122',['Vector2.cpp',['../Vector2_8cpp.html',1,'']]], - ['vector2_2eh_123',['Vector2.h',['../Vector2_8h.html',1,'']]], - ['vector2_3c_20double_20_3e_124',['Vector2< double >',['../classEule_1_1Vector2.html',1,'Eule']]], - ['vector2d_125',['Vector2d',['../namespaceEule.html#ad2b14d99a3b97a954d09be46e86fa554',1,'Eule']]], - ['vector2i_126',['Vector2i',['../namespaceEule.html#a4b8529f841686a41ce0423f3610f0779',1,'Eule']]], - ['vector3_127',['Vector3',['../classEule_1_1Vector3.html',1,'Eule::Vector3< T >'],['../classEule_1_1Vector3.html#abba435897a7050d8c111d703c5bb3eb8',1,'Eule::Vector3::Vector3()'],['../classEule_1_1Vector3.html#ab43c649b5f80f80660ce83a28697f1e9',1,'Eule::Vector3::Vector3(T _x, T _y, T _z)'],['../classEule_1_1Vector3.html#ac485bad4d2a077e0ab2a2bc68e223740',1,'Eule::Vector3::Vector3(const Vector3< T > &other)=default'],['../classEule_1_1Vector3.html#a9c6dc41aad5e44f30baad3c3864148b8',1,'Eule::Vector3::Vector3(Vector3< T > &&other) noexcept=default']]], - ['vector3_2ecpp_128',['Vector3.cpp',['../Vector3_8cpp.html',1,'']]], - ['vector3_2eh_129',['Vector3.h',['../Vector3_8h.html',1,'']]], - ['vector3_3c_20double_20_3e_130',['Vector3< double >',['../classEule_1_1Vector3.html',1,'Eule']]], - ['vector3d_131',['Vector3d',['../namespaceEule.html#afc45246550a85134cf500caa2b81061a',1,'Eule']]], - ['vector3i_132',['Vector3i',['../namespaceEule.html#a2ee0ef456d32068e4f9b8355ca47acd7',1,'Eule']]], - ['vector4_133',['Vector4',['../classEule_1_1Vector4.html',1,'Eule::Vector4< T >'],['../classEule_1_1Vector4.html#ad49c5d39b5478aefea2acfe65bd59393',1,'Eule::Vector4::Vector4()'],['../classEule_1_1Vector4.html#aaa8aa9abea8ad8dde3aaa2de27ac2391',1,'Eule::Vector4::Vector4(T _x, T _y, T _z, T _w)'],['../classEule_1_1Vector4.html#aa47cf18eb55ec51c7dd0a95794d7230d',1,'Eule::Vector4::Vector4(const Vector4< T > &other)=default'],['../classEule_1_1Vector4.html#a9c9e20e38663621063f2437965fac438',1,'Eule::Vector4::Vector4(Vector4< T > &&other) noexcept=default']]], - ['vector4_2ecpp_134',['Vector4.cpp',['../Vector4_8cpp.html',1,'']]], - ['vector4_2eh_135',['Vector4.h',['../Vector4_8h.html',1,'']]], - ['vector4_3c_20double_20_3e_136',['Vector4< double >',['../classEule_1_1Vector4.html',1,'Eule']]], - ['vector4d_137',['Vector4d',['../namespaceEule.html#ab1f7f26891b56b960ca6cca5cc1cc44e',1,'Eule']]], - ['vector4i_138',['Vector4i',['../namespaceEule.html#aea48fbceb33833fc808355c9eec721bb',1,'Eule']]], - ['vectorscale_139',['VectorScale',['../classEule_1_1Vector2.html#a5c7eb6afd348c8409f856d398593713e',1,'Eule::Vector2::VectorScale()'],['../classEule_1_1Vector3.html#afbfdd011a51ae697bdf0d297f2f6aa95',1,'Eule::Vector3::VectorScale()'],['../classEule_1_1Vector4.html#ae24537cb41abb4365a22fe3b07869b85',1,'Eule::Vector4::VectorScale()']]], - ['version_2eh_140',['version.h',['../version_8h.html',1,'']]] -]; diff --git a/Doxygen/build/search/all_16.html b/Doxygen/build/search/all_16.html deleted file mode 100644 index 7bd7afe..0000000 --- a/Doxygen/build/search/all_16.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_16.js b/Doxygen/build/search/all_16.js deleted file mode 100644 index f6d9c32..0000000 --- a/Doxygen/build/search/all_16.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['w_141',['w',['../classEule_1_1Vector4.html#a4b2184f91a991264ddc3dae3beadf23e',1,'Eule::Vector4']]] -]; diff --git a/Doxygen/build/search/all_17.html b/Doxygen/build/search/all_17.html deleted file mode 100644 index 35702ec..0000000 --- a/Doxygen/build/search/all_17.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_17.js b/Doxygen/build/search/all_17.js deleted file mode 100644 index 848013c..0000000 --- a/Doxygen/build/search/all_17.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['x_142',['x',['../classEule_1_1Vector2.html#acca020e7957a9b7b2682f2df496bcdb7',1,'Eule::Vector2::x()'],['../classEule_1_1Vector3.html#a3d7770a583354b1dfc2f6af1092adc1b',1,'Eule::Vector3::x()'],['../classEule_1_1Vector4.html#a6abdc466a694e39b1bf5e71dd26e9fbf',1,'Eule::Vector4::x()']]] -]; diff --git a/Doxygen/build/search/all_18.html b/Doxygen/build/search/all_18.html deleted file mode 100644 index 540cdb6..0000000 --- a/Doxygen/build/search/all_18.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_18.js b/Doxygen/build/search/all_18.js deleted file mode 100644 index 109234d..0000000 --- a/Doxygen/build/search/all_18.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['y_143',['y',['../classEule_1_1Vector2.html#a077434c60e04b051347a43ce26fbdbc9',1,'Eule::Vector2::y()'],['../classEule_1_1Vector3.html#a716e038c7b599bc5c741dfc0a3c42146',1,'Eule::Vector3::y()'],['../classEule_1_1Vector4.html#a994773dc2da079a335f4b57153cf82c9',1,'Eule::Vector4::y()']]] -]; diff --git a/Doxygen/build/search/all_19.html b/Doxygen/build/search/all_19.html deleted file mode 100644 index 14e13e7..0000000 --- a/Doxygen/build/search/all_19.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_19.js b/Doxygen/build/search/all_19.js deleted file mode 100644 index f5893b5..0000000 --- a/Doxygen/build/search/all_19.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['z_144',['z',['../classEule_1_1Vector3.html#a754b1a46c44a0fde99e670e174dba674',1,'Eule::Vector3::z()'],['../classEule_1_1Vector4.html#acf70d20ed586c3e168f2664f643902f0',1,'Eule::Vector4::z()']]], - ['zero_145',['zero',['../classEule_1_1Vector2.html#a44cd63661b38477ebd67c9eb20369e7c',1,'Eule::Vector2::zero()'],['../classEule_1_1Vector3.html#a1f0b4bb9f5533e3a134310d702bbfb33',1,'Eule::Vector3::zero()'],['../classEule_1_1Vector4.html#adf801d37181ff33a920f31536337ca07',1,'Eule::Vector4::zero()']]] -]; diff --git a/Doxygen/build/search/all_1a.html b/Doxygen/build/search/all_1a.html deleted file mode 100644 index 233281a..0000000 --- a/Doxygen/build/search/all_1a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_1a.js b/Doxygen/build/search/all_1a.js deleted file mode 100644 index 9958fe7..0000000 --- a/Doxygen/build/search/all_1a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_7equaternion_146',['~Quaternion',['../classEule_1_1Quaternion.html#a5f834c2ca469cd71edc8a23fdc3f56e8',1,'Eule::Quaternion']]] -]; diff --git a/Doxygen/build/search/all_2.html b/Doxygen/build/search/all_2.html deleted file mode 100644 index b26d916..0000000 --- a/Doxygen/build/search/all_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_2.js b/Doxygen/build/search/all_2.js deleted file mode 100644 index 9ef97b0..0000000 --- a/Doxygen/build/search/all_2.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['c_8',['c',['../classEule_1_1Matrix4x4.html#a68920de2728741859aa7cb3d245aa2c3',1,'Eule::Matrix4x4']]], - ['clamp_9',['Clamp',['../classEule_1_1Math.html#a73947ee95912f0a06359fc5004bfc840',1,'Eule::Math']]], - ['collider_10',['Collider',['../classEule_1_1Collider.html',1,'Eule']]], - ['collider_2ecpp_11',['Collider.cpp',['../Collider_8cpp.html',1,'']]], - ['collider_2eh_12',['Collider.h',['../Collider_8h.html',1,'']]], - ['conjugate_13',['Conjugate',['../classEule_1_1Quaternion.html#aa5333ab28dbe4d5ae15ab5dbc36b90ca',1,'Eule::Quaternion']]], - ['constants_2eh_14',['Constants.h',['../Constants_8h.html',1,'']]], - ['contains_15',['Contains',['../classEule_1_1Collider.html#a19a1220bf41df1d8c720296bfe91f5fb',1,'Eule::Collider::Contains()'],['../classEule_1_1TrapazoidalPrismCollider.html#abc4865f44bef057bbbb39385eae9e2dc',1,'Eule::TrapazoidalPrismCollider::Contains()']]], - ['crossproduct_16',['CrossProduct',['../classEule_1_1Vector2.html#a308df926fccbf4a5321a821d92924dfb',1,'Eule::Vector2::CrossProduct()'],['../classEule_1_1Vector3.html#abd62a5f6b0f380491cf80d70ed2e5317',1,'Eule::Vector3::CrossProduct()']]] -]; diff --git a/Doxygen/build/search/all_3.html b/Doxygen/build/search/all_3.html deleted file mode 100644 index b61b96f..0000000 --- a/Doxygen/build/search/all_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_3.js b/Doxygen/build/search/all_3.js deleted file mode 100644 index 145de13..0000000 --- a/Doxygen/build/search/all_3.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['d_17',['d',['../classEule_1_1Matrix4x4.html#a7f21115e0597a25fbdb4d9784de0c988',1,'Eule::Matrix4x4']]], - ['deg2rad_18',['Deg2Rad',['../Constants_8h.html#a0688d82670a3ba9d40853859003c64df',1,'Constants.h']]], - ['determinant_19',['Determinant',['../classEule_1_1Matrix4x4.html#a8a7c7d927d012aaa3abbbc210444b4c0',1,'Eule::Matrix4x4']]], - ['dotproduct_20',['DotProduct',['../classEule_1_1Vector2.html#a5ed3a9b01d550a9b745b885fdb03d68c',1,'Eule::Vector2::DotProduct()'],['../classEule_1_1Vector3.html#a6cbc1516e045c0334f8bf8a1dcd6ca91',1,'Eule::Vector3::DotProduct()']]], - ['down_21',['down',['../classEule_1_1Vector2.html#a7e60489f914c01c98839333dd41d8a49',1,'Eule::Vector2::down()'],['../classEule_1_1Vector3.html#ac44e82051be457c78f6428859482f848',1,'Eule::Vector3::down()'],['../classEule_1_1Vector4.html#a0f00c430129cb8edfb9c96693c39ab73',1,'Eule::Vector4::down()']]], - ['droptranslationcomponents_22',['DropTranslationComponents',['../classEule_1_1Matrix4x4.html#a42eaf01fbe7f1f57d6fb5bf7111d3338',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/all_4.html b/Doxygen/build/search/all_4.html deleted file mode 100644 index 06de155..0000000 --- a/Doxygen/build/search/all_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_4.js b/Doxygen/build/search/all_4.js deleted file mode 100644 index 96883f9..0000000 --- a/Doxygen/build/search/all_4.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['e_23',['e',['../classEule_1_1Matrix4x4.html#a19fb1d47aea5672da2fe1fc20500615a',1,'Eule::Matrix4x4']]], - ['eule_24',['Eule',['../namespaceEule.html',1,'']]], - ['eule_2evcxproj_2efilelistabsolute_2etxt_25',['Eule.vcxproj.FileListAbsolute.txt',['../Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)'],['../x64_2Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)'],['../x64_2Release_2Eule_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)']]] -]; diff --git a/Doxygen/build/search/all_5.html b/Doxygen/build/search/all_5.html deleted file mode 100644 index 2544c4e..0000000 --- a/Doxygen/build/search/all_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_5.js b/Doxygen/build/search/all_5.js deleted file mode 100644 index 353ae65..0000000 --- a/Doxygen/build/search/all_5.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['f_26',['f',['../classEule_1_1Matrix4x4.html#a47b0d5273289c602f1ab4d3b963fe267',1,'Eule::Matrix4x4']]], - ['forward_27',['forward',['../classEule_1_1Vector3.html#a791d893f68f2aee85287ab3ab7612ff0',1,'Eule::Vector3::forward()'],['../classEule_1_1Vector4.html#a9ec10cf10c0edb934169211ad7fef821',1,'Eule::Vector4::forward()']]], - ['front_28',['FRONT',['../classEule_1_1TrapazoidalPrismCollider.html#ad8648ff086e60e5cae763c14b72cd8fd',1,'Eule::TrapazoidalPrismCollider']]], - ['future_29',['future',['../classEule_1_1Vector4.html#afefa0db0ba202f63e338506fd21a61e9',1,'Eule::Vector4']]] -]; diff --git a/Doxygen/build/search/all_6.html b/Doxygen/build/search/all_6.html deleted file mode 100644 index 43f14ea..0000000 --- a/Doxygen/build/search/all_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_6.js b/Doxygen/build/search/all_6.js deleted file mode 100644 index 77cd9f4..0000000 --- a/Doxygen/build/search/all_6.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['g_30',['g',['../classEule_1_1Matrix4x4.html#a1519f79fbfd4f33a0718ffc030fb6706',1,'Eule::Matrix4x4']]], - ['getcofactors_31',['GetCofactors',['../classEule_1_1Matrix4x4.html#aefc37ab31604f888e393a1de62927d55',1,'Eule::Matrix4x4']]], - ['getrawvalues_32',['GetRawValues',['../classEule_1_1Quaternion.html#aaa193aa23729338a64bbd16eacab56ec',1,'Eule::Quaternion']]], - ['gettranslationcomponent_33',['GetTranslationComponent',['../classEule_1_1Matrix4x4.html#a19cc83344e288c09f7200d8410277b28',1,'Eule::Matrix4x4']]], - ['getvertex_34',['GetVertex',['../classEule_1_1TrapazoidalPrismCollider.html#a4b49f6749d39571121621dd45b32bac3',1,'Eule::TrapazoidalPrismCollider']]] -]; diff --git a/Doxygen/build/search/all_7.html b/Doxygen/build/search/all_7.html deleted file mode 100644 index af52f82..0000000 --- a/Doxygen/build/search/all_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_7.js b/Doxygen/build/search/all_7.js deleted file mode 100644 index ef4b9f5..0000000 --- a/Doxygen/build/search/all_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['h_35',['h',['../classEule_1_1Matrix4x4.html#ac48433ef3faa767919938e56803bfc41',1,'Eule::Matrix4x4']]], - ['half_5fpi_36',['HALF_PI',['../Constants_8h.html#ad0661cafa18be7ccadefb27b6b809264',1,'Constants.h']]] -]; diff --git a/Doxygen/build/search/all_8.html b/Doxygen/build/search/all_8.html deleted file mode 100644 index cf2b5df..0000000 --- a/Doxygen/build/search/all_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_8.js b/Doxygen/build/search/all_8.js deleted file mode 100644 index 3e59f07..0000000 --- a/Doxygen/build/search/all_8.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['i_37',['i',['../classEule_1_1Matrix4x4.html#afb1b52d2d395e1d4a099556fac3918dc',1,'Eule::Matrix4x4']]], - ['inverse_38',['Inverse',['../classEule_1_1Quaternion.html#a704d63f0f2cd2d50fd61562e3c2eb576',1,'Eule::Quaternion']]], - ['inverse3x3_39',['Inverse3x3',['../classEule_1_1Matrix4x4.html#acfd6d8677484cb6ed246efe5c39b9119',1,'Eule::Matrix4x4']]], - ['inverse4x4_40',['Inverse4x4',['../classEule_1_1Matrix4x4.html#ab635c2bbd0d91ad35369efd4dc5dac29',1,'Eule::Matrix4x4']]], - ['isinversible3x3_41',['IsInversible3x3',['../classEule_1_1Matrix4x4.html#ab52b7e10a4e7ecbdb347fd82eb9ecd22',1,'Eule::Matrix4x4']]], - ['isinversible4x4_42',['IsInversible4x4',['../classEule_1_1Matrix4x4.html#a24a2113d49c0a86c48755b8ad11e22c0',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/all_9.html b/Doxygen/build/search/all_9.html deleted file mode 100644 index 690785a..0000000 --- a/Doxygen/build/search/all_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_9.js b/Doxygen/build/search/all_9.js deleted file mode 100644 index 227d400..0000000 --- a/Doxygen/build/search/all_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['j_43',['j',['../classEule_1_1Matrix4x4.html#a6ad97bdfe3f070fd4d1d0ebc2ee1309a',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/all_a.html b/Doxygen/build/search/all_a.html deleted file mode 100644 index f2f3d3a..0000000 --- a/Doxygen/build/search/all_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_a.js b/Doxygen/build/search/all_a.js deleted file mode 100644 index e47277f..0000000 --- a/Doxygen/build/search/all_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['k_44',['k',['../classEule_1_1Matrix4x4.html#af93a84acffc7d5282653b7b591633874',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/all_b.html b/Doxygen/build/search/all_b.html deleted file mode 100644 index 14f3403..0000000 --- a/Doxygen/build/search/all_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_b.js b/Doxygen/build/search/all_b.js deleted file mode 100644 index fadfc60..0000000 --- a/Doxygen/build/search/all_b.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['l_45',['l',['../classEule_1_1Matrix4x4.html#a9a18b42500a1f9c551c7f27039cb6a67',1,'Eule::Matrix4x4']]], - ['left_46',['left',['../classEule_1_1Vector2.html#a4ad2191854a9fdbc8dae0967b3a48be5',1,'Eule::Vector2::left()'],['../classEule_1_1Vector3.html#a37949a2f74ceb05ea1797be34c42989a',1,'Eule::Vector3::left()'],['../classEule_1_1Vector4.html#a354e05fd3b3a38b530258b3247c544d1',1,'Eule::Vector4::left()'],['../classEule_1_1TrapazoidalPrismCollider.html#a2d1fb0b58a8562c1869a8dbef330c22b',1,'Eule::TrapazoidalPrismCollider::LEFT()']]], - ['lerp_47',['Lerp',['../classEule_1_1Math.html#a991f62401991014de20aca0fda9f9ef7',1,'Eule::Math::Lerp()'],['../classEule_1_1Quaternion.html#a2c386181050f7745341a00f79e496e08',1,'Eule::Quaternion::Lerp()'],['../classEule_1_1Vector2.html#a8bb45fd8415f24c58a59739d67f86038',1,'Eule::Vector2::Lerp()'],['../classEule_1_1Vector3.html#add2f96155edb1159b53725932d951f1f',1,'Eule::Vector3::Lerp()'],['../classEule_1_1Vector4.html#ae5b7ed7132d76ffbde20f24330fd4f69',1,'Eule::Vector4::Lerp()']]], - ['lerpself_48',['LerpSelf',['../classEule_1_1Vector2.html#a85ad9f5dca4f60c679be5edd86942774',1,'Eule::Vector2::LerpSelf()'],['../classEule_1_1Vector3.html#a8fb48e9a527d5e6fadb3b3102fa8f4c3',1,'Eule::Vector3::LerpSelf()'],['../classEule_1_1Vector4.html#ab4efb629829cfebcbb82b4318c3e3bb3',1,'Eule::Vector4::LerpSelf()']]] -]; diff --git a/Doxygen/build/search/all_c.html b/Doxygen/build/search/all_c.html deleted file mode 100644 index da60ab8..0000000 --- a/Doxygen/build/search/all_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_c.js b/Doxygen/build/search/all_c.js deleted file mode 100644 index b82369c..0000000 --- a/Doxygen/build/search/all_c.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['m_49',['m',['../classEule_1_1Matrix4x4.html#a337d6bb2a36f36cd4620cdd35555893d',1,'Eule::Matrix4x4']]], - ['magnitude_50',['Magnitude',['../classEule_1_1Vector2.html#a85551e0734a2f3143c4ecdbaf4a3ea46',1,'Eule::Vector2::Magnitude()'],['../classEule_1_1Vector3.html#a96e6e436600d1420250ef2868854988d',1,'Eule::Vector3::Magnitude()'],['../classEule_1_1Vector4.html#a35c6fccb7a02095b595575903b590dd2',1,'Eule::Vector4::Magnitude()']]], - ['make_5fsure_5frng_5fis_5finitialized_51',['MAKE_SURE_RNG_IS_INITIALIZED',['../Math_8cpp.html#ac0cae806d3e9a3772f7388dd53cfc370',1,'Math.cpp']]], - ['math_52',['Math',['../classEule_1_1Math.html',1,'Eule']]], - ['math_2ecpp_53',['Math.cpp',['../Math_8cpp.html',1,'']]], - ['math_2eh_54',['Math.h',['../Math_8h.html',1,'']]], - ['matrix4x4_55',['Matrix4x4',['../classEule_1_1Matrix4x4.html',1,'Eule::Matrix4x4'],['../classEule_1_1Matrix4x4.html#a714a467ba7f85f88ebe3897b5e3580be',1,'Eule::Matrix4x4::Matrix4x4()'],['../classEule_1_1Matrix4x4.html#a4a71d8fc881ddb7d51577e0a762ac186',1,'Eule::Matrix4x4::Matrix4x4(const Matrix4x4 &other)'],['../classEule_1_1Matrix4x4.html#a44f2af9bfad01c2d065985c1dfda8d08',1,'Eule::Matrix4x4::Matrix4x4(Matrix4x4 &&other) noexcept']]], - ['matrix4x4_2ecpp_56',['Matrix4x4.cpp',['../Matrix4x4_8cpp.html',1,'']]], - ['matrix4x4_2eh_57',['Matrix4x4.h',['../Matrix4x4_8h.html',1,'']]], - ['max_58',['Max',['../classEule_1_1Math.html#a991c620839f5fa9fcfe7e503b8ab0008',1,'Eule::Math']]], - ['min_59',['Min',['../classEule_1_1Math.html#aa4d3c52cb09984ec567a9961ff7e3f02',1,'Eule::Math']]], - ['mod_60',['Mod',['../classEule_1_1Math.html#a9d17091e986de45e9bbee484e2d56430',1,'Eule::Math']]], - ['multiply4x4_61',['Multiply4x4',['../classEule_1_1Matrix4x4.html#ae364e54822b558526dd3404953d48090',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/all_d.html b/Doxygen/build/search/all_d.html deleted file mode 100644 index bc376fe..0000000 --- a/Doxygen/build/search/all_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_d.js b/Doxygen/build/search/all_d.js deleted file mode 100644 index a783cdd..0000000 --- a/Doxygen/build/search/all_d.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['n_62',['n',['../classEule_1_1Matrix4x4.html#a4d6df21744055ee87479591b619af33d',1,'Eule::Matrix4x4']]], - ['normalize_63',['Normalize',['../classEule_1_1Vector2.html#a0f8de10acb284e2d6fcda8ba6efb3a15',1,'Eule::Vector2::Normalize()'],['../classEule_1_1Vector3.html#a4650f19df9b05d941d0fbc29ba59d980',1,'Eule::Vector3::Normalize()'],['../classEule_1_1Vector4.html#a3d10b51b1fe97661650b2991b29b67a7',1,'Eule::Vector4::Normalize()']]], - ['normalizeself_64',['NormalizeSelf',['../classEule_1_1Vector2.html#a9b15bbe640e8b40a743de72652b74591',1,'Eule::Vector2::NormalizeSelf()'],['../classEule_1_1Vector3.html#a69f80925d46f3630a2242b44ddb43a56',1,'Eule::Vector3::NormalizeSelf()'],['../classEule_1_1Vector4.html#a98bea58a58b04357044f72afc905896d',1,'Eule::Vector4::NormalizeSelf()']]] -]; diff --git a/Doxygen/build/search/all_e.html b/Doxygen/build/search/all_e.html deleted file mode 100644 index 2e3c74d..0000000 --- a/Doxygen/build/search/all_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_e.js b/Doxygen/build/search/all_e.js deleted file mode 100644 index dead099..0000000 --- a/Doxygen/build/search/all_e.js +++ /dev/null @@ -1,22 +0,0 @@ -var searchData= -[ - ['o_65',['o',['../classEule_1_1Matrix4x4.html#a9e813c2000f912ba2b16ea19d387565b',1,'Eule::Matrix4x4']]], - ['one_66',['one',['../classEule_1_1Vector2.html#a2651455a1339e1d61151538f986aa19b',1,'Eule::Vector2::one()'],['../classEule_1_1Vector3.html#a46a389aa258dc615650ffd7e98e3e482',1,'Eule::Vector3::one()'],['../classEule_1_1Vector4.html#a41087d79654271a580c8e5705825b2ed',1,'Eule::Vector4::one()']]], - ['operator_20vector2_3c_20t_20_3e_67',['operator Vector2< T >',['../classEule_1_1Vector3.html#a0bdcd7104775000964029ef94e8a3b6a',1,'Eule::Vector3::operator Vector2< T >()'],['../classEule_1_1Vector4.html#aa1384f5e84216dc264074b716efd37a0',1,'Eule::Vector4::operator Vector2< T >()']]], - ['operator_20vector3_3c_20t_20_3e_68',['operator Vector3< T >',['../classEule_1_1Vector2.html#a3623d54a21bd36d25916218d7ee6eef0',1,'Eule::Vector2::operator Vector3< T >()'],['../classEule_1_1Vector4.html#ab6911dc86dd0289c604167b95e18ebbc',1,'Eule::Vector4::operator Vector3< T >()']]], - ['operator_20vector4_3c_20t_20_3e_69',['operator Vector4< T >',['../classEule_1_1Vector2.html#a4adc4bcb6adab3c937c8154ddc4d9d51',1,'Eule::Vector2::operator Vector4< T >()'],['../classEule_1_1Vector3.html#a67d1daadee40fbaada3b5c3b4b4b7e79',1,'Eule::Vector3::operator Vector4< T >()']]], - ['operator_21_3d_70',['operator!=',['../classEule_1_1Matrix4x4.html#a4e78f3931e6467f50f979e35e4b39a22',1,'Eule::Matrix4x4::operator!=()'],['../classEule_1_1Quaternion.html#a1a97201d7deb56f543d65be9741cd2bd',1,'Eule::Quaternion::operator!=()'],['../classEule_1_1Vector2.html#aff40b705013d8356239b01c80b26e9a9',1,'Eule::Vector2::operator!=()'],['../classEule_1_1Vector3.html#ad71e5d9e7c46e63d226c180a2d8c0beb',1,'Eule::Vector3::operator!=()'],['../classEule_1_1Vector4.html#abc9e49133b73116830c953a4666e403c',1,'Eule::Vector4::operator!=()']]], - ['operator_2a_71',['operator*',['../classEule_1_1Matrix4x4.html#a1c687b90d224b7fac251d8539b8d1a57',1,'Eule::Matrix4x4::operator*(const Matrix4x4 &other) const'],['../classEule_1_1Matrix4x4.html#aea2039315271583e4832c8502e5d9144',1,'Eule::Matrix4x4::operator*(const double scalar) const'],['../classEule_1_1Quaternion.html#ab178e12364d87fb676d85695e491361f',1,'Eule::Quaternion::operator*(const Quaternion &q) const'],['../classEule_1_1Quaternion.html#a29aeab8de1a33ae8c043e3438829835f',1,'Eule::Quaternion::operator*(const Vector3d &p) const'],['../classEule_1_1Vector2.html#af70e271efeb2ea957532e917773e2724',1,'Eule::Vector2::operator*()'],['../classEule_1_1Vector3.html#afd6db19e66c398814f79bfd454682548',1,'Eule::Vector3::operator*(const T scale) const'],['../classEule_1_1Vector3.html#ab7148d41a5184ee4e2948cfdc5eb53f5',1,'Eule::Vector3::operator*(const Matrix4x4 &mat) const'],['../classEule_1_1Vector4.html#af397629f4fc12f8846df9bab8d6d8bbe',1,'Eule::Vector4::operator*(const T scale) const'],['../classEule_1_1Vector4.html#af19cb20ab4ccf6f39c9c8875495de565',1,'Eule::Vector4::operator*(const Matrix4x4 &mat) const']]], - ['operator_2a_3d_72',['operator*=',['../classEule_1_1Matrix4x4.html#a45fbc7927b3acf79c219da27470e0d27',1,'Eule::Matrix4x4::operator*=(const Matrix4x4 &other)'],['../classEule_1_1Matrix4x4.html#a0e8b677ef2f023df5bc46b47d4c15220',1,'Eule::Matrix4x4::operator*=(const double scalar)'],['../classEule_1_1Quaternion.html#a8941e3b43aabd15e2471e57ebd49c8a7',1,'Eule::Quaternion::operator*=()'],['../classEule_1_1Vector2.html#a14bd68884a3d6b83201f38df17ff1082',1,'Eule::Vector2::operator*=()'],['../classEule_1_1Vector3.html#a7a6e66693d2a1e5cf4dd7cca94ad49db',1,'Eule::Vector3::operator*=(const T scale)'],['../classEule_1_1Vector3.html#a2c3254704c4bf900277d2205f55f4157',1,'Eule::Vector3::operator*=(const Matrix4x4 &mat)'],['../classEule_1_1Vector4.html#a2359c0ecd8b9af425df240774d5ae950',1,'Eule::Vector4::operator*=(const T scale)'],['../classEule_1_1Vector4.html#a7b48a3504125d0017ea237825da3d126',1,'Eule::Vector4::operator*=(const Matrix4x4 &mat)']]], - ['operator_2b_73',['operator+',['../classEule_1_1Matrix4x4.html#a8e5abd340eef361f18bd8cc7166fef1b',1,'Eule::Matrix4x4::operator+()'],['../classEule_1_1Vector2.html#a2acbb7e46d9659a26afb746372ea4364',1,'Eule::Vector2::operator+()'],['../classEule_1_1Vector3.html#ae094943bacbd043b41f9b34bdb51542e',1,'Eule::Vector3::operator+()'],['../classEule_1_1Vector4.html#a0b8b7947175218917b2683d48790a40f',1,'Eule::Vector4::operator+()']]], - ['operator_2b_3d_74',['operator+=',['../classEule_1_1Matrix4x4.html#a89e9d610c16c97178a62b697d04fd873',1,'Eule::Matrix4x4::operator+=()'],['../classEule_1_1Vector2.html#a8b1eb48922a38c4237ea26b11ce43fd2',1,'Eule::Vector2::operator+=()'],['../classEule_1_1Vector3.html#ac6fe920a34552925aff185f335b13e14',1,'Eule::Vector3::operator+=()'],['../classEule_1_1Vector4.html#a54a9edbe72049b85f03827d488363d0a',1,'Eule::Vector4::operator+=()']]], - ['operator_2d_75',['operator-',['../classEule_1_1Matrix4x4.html#a4d4f16882462f4afc18debc6594019a1',1,'Eule::Matrix4x4::operator-()'],['../classEule_1_1Vector2.html#a52060a0688502456b4bb3e443c36c25d',1,'Eule::Vector2::operator-(const Vector2< T > &other) const'],['../classEule_1_1Vector2.html#a352b4e84721183ef182324d350df64df',1,'Eule::Vector2::operator-() const'],['../classEule_1_1Vector3.html#a88273031482c057795e05ea25218ea4b',1,'Eule::Vector3::operator-(const Vector3< T > &other) const'],['../classEule_1_1Vector3.html#a11f2449516a8787f4cce227f12ae2f03',1,'Eule::Vector3::operator-() const'],['../classEule_1_1Vector4.html#a6e68957131d6d87c69dce71ff88097f3',1,'Eule::Vector4::operator-(const Vector4< T > &other) const'],['../classEule_1_1Vector4.html#a36426b12cdcdbfaa6daa35c9d3d4e9c4',1,'Eule::Vector4::operator-() const']]], - ['operator_2d_3d_76',['operator-=',['../classEule_1_1Matrix4x4.html#aca08ad35ac143742eb2aa22892d30e46',1,'Eule::Matrix4x4::operator-=()'],['../classEule_1_1Vector2.html#a76103604080c7d718b634f9394143bfd',1,'Eule::Vector2::operator-=()'],['../classEule_1_1Vector3.html#af1207f3bf66aaf0fa781d43db40b8006',1,'Eule::Vector3::operator-=()'],['../classEule_1_1Vector4.html#aec85460804d89ed9206cc478b2f3c8ba',1,'Eule::Vector4::operator-=()']]], - ['operator_2f_77',['operator/',['../classEule_1_1Matrix4x4.html#acbc9bcf9b58d98372b8f754b2661dc04',1,'Eule::Matrix4x4::operator/(const Matrix4x4 &other) const'],['../classEule_1_1Matrix4x4.html#acca753b1befa72d893ccb73a2390a259',1,'Eule::Matrix4x4::operator/(const double denominator) const'],['../classEule_1_1Quaternion.html#a23488d14e31db8cec75a0e8c6f38c70a',1,'Eule::Quaternion::operator/()'],['../classEule_1_1Vector2.html#adcecda237ca7909bc8de0f8e4a1b586d',1,'Eule::Vector2::operator/()'],['../classEule_1_1Vector3.html#aa9bace50e1db42029d93fbd8a417fc70',1,'Eule::Vector3::operator/()'],['../classEule_1_1Vector4.html#ac952c5322209dffd5ea7bb4a9b06c52d',1,'Eule::Vector4::operator/()']]], - ['operator_2f_3d_78',['operator/=',['../classEule_1_1Matrix4x4.html#a25369a9c56f20e205e827dab8be78b21',1,'Eule::Matrix4x4::operator/=(const Matrix4x4 &other)'],['../classEule_1_1Matrix4x4.html#a7335fdcec31085ff17b4eda00bf0e3eb',1,'Eule::Matrix4x4::operator/=(const double denominator)'],['../classEule_1_1Quaternion.html#aa071c90a64d21cbb8109366bf2449838',1,'Eule::Quaternion::operator/=()'],['../classEule_1_1Vector2.html#a1a4503a880f870a1f225fe635e7482bb',1,'Eule::Vector2::operator/=()'],['../classEule_1_1Vector3.html#a69f00f05eda60630d48499067297e431',1,'Eule::Vector3::operator/=()'],['../classEule_1_1Vector4.html#a35680f0675813c93e1c2cd3607c1ea2e',1,'Eule::Vector4::operator/=()']]], - ['operator_3c_3c_79',['operator<<',['../classEule_1_1Matrix4x4.html#ab4da4b366d5d0a7bbe890aff1f2445df',1,'Eule::Matrix4x4::operator<<()'],['../classEule_1_1Matrix4x4.html#a4edddbe2b7f5913d67bb90a4d28f44e3',1,'Eule::Matrix4x4::operator<<()'],['../classEule_1_1Quaternion.html#a9dc71eaedf4486dc005fa9a67c6da866',1,'Eule::Quaternion::operator<<()'],['../classEule_1_1Quaternion.html#a7cf5f94ea6e861b3c01f674d7ef987c7',1,'Eule::Quaternion::operator<<()'],['../classEule_1_1Vector2.html#aa89ba3c2ae7a53a25530d3eef6a3c4e3',1,'Eule::Vector2::operator<<()'],['../classEule_1_1Vector2.html#a7ae9f5fa7ea5f9e9ae4ba0dca0a8494b',1,'Eule::Vector2::operator<<()'],['../classEule_1_1Vector3.html#a5705993a4489fc62d73b85f3654261cf',1,'Eule::Vector3::operator<<()'],['../classEule_1_1Vector3.html#a062adbc281326979ec3f5f71052d0deb',1,'Eule::Vector3::operator<<()'],['../classEule_1_1Vector4.html#a67f776474e56594e4973be32df68602a',1,'Eule::Vector4::operator<<()'],['../classEule_1_1Vector4.html#a111187ac1ffc14d4aa33d85a14645870',1,'Eule::Vector4::operator<<()'],['../namespaceEule.html#aa7ebcddcafa056556a6e17dcc968e7dd',1,'Eule::operator<<(std::ostream &os, const Matrix4x4 &m)'],['../namespaceEule.html#ae2fd3ed809d4c950926560fd9b3f2886',1,'Eule::operator<<(std::wostream &os, const Matrix4x4 &m)'],['../namespaceEule.html#a632355bad553c40d9fd297c260c1d44b',1,'Eule::operator<<(std::ostream &os, const Quaternion &q)'],['../namespaceEule.html#a5d5c597b5ae3b3143015316a4a60eacc',1,'Eule::operator<<(std::wostream &os, const Quaternion &q)']]], - ['operator_3d_80',['operator=',['../classEule_1_1Matrix4x4.html#a26938f026d8d438f72b1d5fd4a28f61c',1,'Eule::Matrix4x4::operator=(const Matrix4x4 &other)'],['../classEule_1_1Matrix4x4.html#a3e2dab83b760ff7da038f14b977d7642',1,'Eule::Matrix4x4::operator=(Matrix4x4 &&other) noexcept'],['../classEule_1_1Quaternion.html#a9cf7fd3318ffdd50e6567c84d24c20e9',1,'Eule::Quaternion::operator=()'],['../classEule_1_1TrapazoidalPrismCollider.html#a1dd50a1f4139a78d9c1c9d6f62a429bd',1,'Eule::TrapazoidalPrismCollider::operator=(const TrapazoidalPrismCollider &other)'],['../classEule_1_1TrapazoidalPrismCollider.html#a7ca93565db388a08ed955a42c8fb99d8',1,'Eule::TrapazoidalPrismCollider::operator=(TrapazoidalPrismCollider &&other) noexcept'],['../classEule_1_1Vector2.html#afc79cf4d93bd0e6feec0fe64fa10d3cf',1,'Eule::Vector2::operator=(const Vector2< T > &other)'],['../classEule_1_1Vector2.html#a6642aa42c0446aecd59f67244ddad873',1,'Eule::Vector2::operator=(Vector2< T > &&other) noexcept'],['../classEule_1_1Vector3.html#a9e725f7a3bf0fb822acf9418dc950ad5',1,'Eule::Vector3::operator=(const Vector3< T > &other)'],['../classEule_1_1Vector3.html#a68cd4f7804a47455d5a5af9cc6b66e38',1,'Eule::Vector3::operator=(Vector3< T > &&other) noexcept'],['../classEule_1_1Vector4.html#a7dc41444f6e3fd30a9cc256ed8414ee6',1,'Eule::Vector4::operator=(const Vector4< T > &other)'],['../classEule_1_1Vector4.html#a331a780b59a0e15e887f11a6fe396934',1,'Eule::Vector4::operator=(Vector4< T > &&other) noexcept']]], - ['operator_3d_3d_81',['operator==',['../classEule_1_1Matrix4x4.html#a37f9e809552b58472f4e20fbeabffdca',1,'Eule::Matrix4x4::operator==()'],['../classEule_1_1Quaternion.html#a516d4dcc7c6f13d8846070b72f588210',1,'Eule::Quaternion::operator==()'],['../classEule_1_1Vector2.html#a3f73897ee668229ea1513f1e2482b296',1,'Eule::Vector2::operator==()'],['../classEule_1_1Vector3.html#a8619be9756e498c50158c5dac275262e',1,'Eule::Vector3::operator==()'],['../classEule_1_1Vector4.html#ae2af40b477e41f8a42db7f80a832a1e7',1,'Eule::Vector4::operator==()']]], - ['operator_5b_5d_82',['operator[]',['../classEule_1_1Matrix4x4.html#a17702fbf3399b86eb883486208895272',1,'Eule::Matrix4x4::operator[](std::size_t y)'],['../classEule_1_1Matrix4x4.html#a1fc5eb915560132c9d908a9c9eacc510',1,'Eule::Matrix4x4::operator[](std::size_t y) const'],['../classEule_1_1Vector2.html#acbfb002c7f506358e1c9648ad0a79734',1,'Eule::Vector2::operator[](std::size_t idx)'],['../classEule_1_1Vector2.html#ac5e06e8ff35709b2a0dda3d932f0d025',1,'Eule::Vector2::operator[](std::size_t idx) const'],['../classEule_1_1Vector3.html#a71f307ae6427a4d6df51647c9d76504b',1,'Eule::Vector3::operator[](std::size_t idx)'],['../classEule_1_1Vector3.html#a4c028a7bab65693aff5d1a7c992326dc',1,'Eule::Vector3::operator[](std::size_t idx) const'],['../classEule_1_1Vector4.html#ae64012cf90d0ad436066232a741b27d5',1,'Eule::Vector4::operator[](std::size_t idx)'],['../classEule_1_1Vector4.html#a603808150eb90008831ba3050bb38a37',1,'Eule::Vector4::operator[](std::size_t idx) const']]], - ['oscillate_83',['Oscillate',['../classEule_1_1Math.html#a1b0fb72c51751470f7f819b20a5b3b3f',1,'Eule::Math']]] -]; diff --git a/Doxygen/build/search/all_f.html b/Doxygen/build/search/all_f.html deleted file mode 100644 index 246f8ab..0000000 --- a/Doxygen/build/search/all_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/all_f.js b/Doxygen/build/search/all_f.js deleted file mode 100644 index 3a9055f..0000000 --- a/Doxygen/build/search/all_f.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['p_84',['p',['../classEule_1_1Matrix4x4.html#a3fdccd317c5ea363b91f6d8096b28bd7',1,'Eule::Matrix4x4']]], - ['past_85',['past',['../classEule_1_1Vector4.html#a5533bb69dbc4714fd53aaf1e0db9bf99',1,'Eule::Vector4']]], - ['pi_86',['PI',['../Constants_8h.html#a299aabc5fc8285cbf99025330a3d0d0d',1,'Constants.h']]], - ['pos_87',['pos',['../structEule_1_1Rect.html#a8013088ed66af106df10acd7ded49bc7',1,'Eule::Rect']]] -]; diff --git a/Doxygen/build/search/classes_0.html b/Doxygen/build/search/classes_0.html deleted file mode 100644 index f7e4c14..0000000 --- a/Doxygen/build/search/classes_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/classes_0.js b/Doxygen/build/search/classes_0.js deleted file mode 100644 index 0a10b0a..0000000 --- a/Doxygen/build/search/classes_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['collider_147',['Collider',['../classEule_1_1Collider.html',1,'Eule']]] -]; diff --git a/Doxygen/build/search/classes_1.html b/Doxygen/build/search/classes_1.html deleted file mode 100644 index c7ff4b3..0000000 --- a/Doxygen/build/search/classes_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/classes_1.js b/Doxygen/build/search/classes_1.js deleted file mode 100644 index 4e4cd5e..0000000 --- a/Doxygen/build/search/classes_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['math_148',['Math',['../classEule_1_1Math.html',1,'Eule']]], - ['matrix4x4_149',['Matrix4x4',['../classEule_1_1Matrix4x4.html',1,'Eule']]] -]; diff --git a/Doxygen/build/search/classes_2.html b/Doxygen/build/search/classes_2.html deleted file mode 100644 index 0d1e8a0..0000000 --- a/Doxygen/build/search/classes_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/classes_2.js b/Doxygen/build/search/classes_2.js deleted file mode 100644 index 315d86c..0000000 --- a/Doxygen/build/search/classes_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['quaternion_150',['Quaternion',['../classEule_1_1Quaternion.html',1,'Eule']]] -]; diff --git a/Doxygen/build/search/classes_3.html b/Doxygen/build/search/classes_3.html deleted file mode 100644 index 2102545..0000000 --- a/Doxygen/build/search/classes_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/classes_3.js b/Doxygen/build/search/classes_3.js deleted file mode 100644 index ed7125e..0000000 --- a/Doxygen/build/search/classes_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['rect_151',['Rect',['../structEule_1_1Rect.html',1,'Eule']]] -]; diff --git a/Doxygen/build/search/classes_4.html b/Doxygen/build/search/classes_4.html deleted file mode 100644 index 095ab59..0000000 --- a/Doxygen/build/search/classes_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/classes_4.js b/Doxygen/build/search/classes_4.js deleted file mode 100644 index b098135..0000000 --- a/Doxygen/build/search/classes_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['trapazoidalprismcollider_152',['TrapazoidalPrismCollider',['../classEule_1_1TrapazoidalPrismCollider.html',1,'Eule']]] -]; diff --git a/Doxygen/build/search/classes_5.html b/Doxygen/build/search/classes_5.html deleted file mode 100644 index fc9cdc9..0000000 --- a/Doxygen/build/search/classes_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/classes_5.js b/Doxygen/build/search/classes_5.js deleted file mode 100644 index 850c799..0000000 --- a/Doxygen/build/search/classes_5.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['vector2_153',['Vector2',['../classEule_1_1Vector2.html',1,'Eule']]], - ['vector2_3c_20double_20_3e_154',['Vector2< double >',['../classEule_1_1Vector2.html',1,'Eule']]], - ['vector3_155',['Vector3',['../classEule_1_1Vector3.html',1,'Eule']]], - ['vector3_3c_20double_20_3e_156',['Vector3< double >',['../classEule_1_1Vector3.html',1,'Eule']]], - ['vector4_157',['Vector4',['../classEule_1_1Vector4.html',1,'Eule']]], - ['vector4_3c_20double_20_3e_158',['Vector4< double >',['../classEule_1_1Vector4.html',1,'Eule']]] -]; diff --git a/Doxygen/build/search/close.png b/Doxygen/build/search/close.png deleted file mode 100644 index 9342d3dfeea7b7c4ee610987e717804b5a42ceb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN diff --git a/Doxygen/build/search/defines_0.html b/Doxygen/build/search/defines_0.html deleted file mode 100644 index 2deb369..0000000 --- a/Doxygen/build/search/defines_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/defines_0.js b/Doxygen/build/search/defines_0.js deleted file mode 100644 index 6fad43e..0000000 --- a/Doxygen/build/search/defines_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['make_5fsure_5frng_5fis_5finitialized_300',['MAKE_SURE_RNG_IS_INITIALIZED',['../Math_8cpp.html#ac0cae806d3e9a3772f7388dd53cfc370',1,'Math.cpp']]] -]; diff --git a/Doxygen/build/search/defines_1.html b/Doxygen/build/search/defines_1.html deleted file mode 100644 index e0d0b6d..0000000 --- a/Doxygen/build/search/defines_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/defines_1.js b/Doxygen/build/search/defines_1.js deleted file mode 100644 index 20e866d..0000000 --- a/Doxygen/build/search/defines_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['half_5fpi_293',['HALF_PI',['../Constants_8h.html#ae3ec3219e4eee3b0992bfd59c2e2bc42',1,'Constants.h']]] -]; diff --git a/Doxygen/build/search/defines_2.html b/Doxygen/build/search/defines_2.html deleted file mode 100644 index 707f942..0000000 --- a/Doxygen/build/search/defines_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/defines_2.js b/Doxygen/build/search/defines_2.js deleted file mode 100644 index 09df58b..0000000 --- a/Doxygen/build/search/defines_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['make_5fsure_5frng_5fis_5finitialized_294',['MAKE_SURE_RNG_IS_INITIALIZED',['../Math_8cpp.html#ac0cae806d3e9a3772f7388dd53cfc370',1,'Math.cpp']]] -]; diff --git a/Doxygen/build/search/defines_3.html b/Doxygen/build/search/defines_3.html deleted file mode 100644 index f30be10..0000000 --- a/Doxygen/build/search/defines_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/defines_3.js b/Doxygen/build/search/defines_3.js deleted file mode 100644 index 77b863e..0000000 --- a/Doxygen/build/search/defines_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['pi_295',['PI',['../Constants_8h.html#a598a3330b3c21701223ee0ca14316eca',1,'Constants.h']]] -]; diff --git a/Doxygen/build/search/defines_4.html b/Doxygen/build/search/defines_4.html deleted file mode 100644 index 046ad4a..0000000 --- a/Doxygen/build/search/defines_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/defines_4.js b/Doxygen/build/search/defines_4.js deleted file mode 100644 index aa71a8e..0000000 --- a/Doxygen/build/search/defines_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['rad2deg_296',['Rad2Deg',['../Constants_8h.html#a0272b2f5a4ca917a60dad22a3cbc6faf',1,'Constants.h']]] -]; diff --git a/Doxygen/build/search/files_0.html b/Doxygen/build/search/files_0.html deleted file mode 100644 index 737608e..0000000 --- a/Doxygen/build/search/files_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/files_0.js b/Doxygen/build/search/files_0.js deleted file mode 100644 index 1c2fd6e..0000000 --- a/Doxygen/build/search/files_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['collider_2ecpp_160',['Collider.cpp',['../Collider_8cpp.html',1,'']]], - ['collider_2eh_161',['Collider.h',['../Collider_8h.html',1,'']]], - ['constants_2eh_162',['Constants.h',['../Constants_8h.html',1,'']]] -]; diff --git a/Doxygen/build/search/files_1.html b/Doxygen/build/search/files_1.html deleted file mode 100644 index f27a62d..0000000 --- a/Doxygen/build/search/files_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/files_1.js b/Doxygen/build/search/files_1.js deleted file mode 100644 index 2c6ef06..0000000 --- a/Doxygen/build/search/files_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['eule_2evcxproj_2efilelistabsolute_2etxt_163',['Eule.vcxproj.FileListAbsolute.txt',['../Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)'],['../x64_2Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)'],['../x64_2Release_2Eule_8vcxproj_8FileListAbsolute_8txt.html',1,'(Global Namespace)']]] -]; diff --git a/Doxygen/build/search/files_2.html b/Doxygen/build/search/files_2.html deleted file mode 100644 index a45066e..0000000 --- a/Doxygen/build/search/files_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/files_2.js b/Doxygen/build/search/files_2.js deleted file mode 100644 index 483ee96..0000000 --- a/Doxygen/build/search/files_2.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['math_2ecpp_164',['Math.cpp',['../Math_8cpp.html',1,'']]], - ['math_2eh_165',['Math.h',['../Math_8h.html',1,'']]], - ['matrix4x4_2ecpp_166',['Matrix4x4.cpp',['../Matrix4x4_8cpp.html',1,'']]], - ['matrix4x4_2eh_167',['Matrix4x4.h',['../Matrix4x4_8h.html',1,'']]] -]; diff --git a/Doxygen/build/search/files_3.html b/Doxygen/build/search/files_3.html deleted file mode 100644 index 1076bc5..0000000 --- a/Doxygen/build/search/files_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/files_3.js b/Doxygen/build/search/files_3.js deleted file mode 100644 index 355bef5..0000000 --- a/Doxygen/build/search/files_3.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['quaternion_2ecpp_168',['Quaternion.cpp',['../Quaternion_8cpp.html',1,'']]], - ['quaternion_2eh_169',['Quaternion.h',['../Quaternion_8h.html',1,'']]] -]; diff --git a/Doxygen/build/search/files_4.html b/Doxygen/build/search/files_4.html deleted file mode 100644 index e5cd7f4..0000000 --- a/Doxygen/build/search/files_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/files_4.js b/Doxygen/build/search/files_4.js deleted file mode 100644 index 4e17532..0000000 --- a/Doxygen/build/search/files_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['rect_2eh_170',['Rect.h',['../Rect_8h.html',1,'']]] -]; diff --git a/Doxygen/build/search/files_5.html b/Doxygen/build/search/files_5.html deleted file mode 100644 index 2cc480f..0000000 --- a/Doxygen/build/search/files_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/files_5.js b/Doxygen/build/search/files_5.js deleted file mode 100644 index 04d66c7..0000000 --- a/Doxygen/build/search/files_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['trapazoidalprismcollider_2ecpp_171',['TrapazoidalPrismCollider.cpp',['../TrapazoidalPrismCollider_8cpp.html',1,'']]], - ['trapazoidalprismcollider_2eh_172',['TrapazoidalPrismCollider.h',['../TrapazoidalPrismCollider_8h.html',1,'']]] -]; diff --git a/Doxygen/build/search/files_6.html b/Doxygen/build/search/files_6.html deleted file mode 100644 index 6510245..0000000 --- a/Doxygen/build/search/files_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/files_6.js b/Doxygen/build/search/files_6.js deleted file mode 100644 index 72dda93..0000000 --- a/Doxygen/build/search/files_6.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['vector2_2ecpp_173',['Vector2.cpp',['../Vector2_8cpp.html',1,'']]], - ['vector2_2eh_174',['Vector2.h',['../Vector2_8h.html',1,'']]], - ['vector3_2ecpp_175',['Vector3.cpp',['../Vector3_8cpp.html',1,'']]], - ['vector3_2eh_176',['Vector3.h',['../Vector3_8h.html',1,'']]], - ['vector4_2ecpp_177',['Vector4.cpp',['../Vector4_8cpp.html',1,'']]], - ['vector4_2eh_178',['Vector4.h',['../Vector4_8h.html',1,'']]], - ['version_2eh_179',['version.h',['../version_8h.html',1,'']]] -]; diff --git a/Doxygen/build/search/functions_0.html b/Doxygen/build/search/functions_0.html deleted file mode 100644 index e17c711..0000000 --- a/Doxygen/build/search/functions_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_0.js b/Doxygen/build/search/functions_0.js deleted file mode 100644 index c47143f..0000000 --- a/Doxygen/build/search/functions_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['abs_180',['Abs',['../classEule_1_1Math.html#ab9ccf4aa730ef825faf224445c86ab25',1,'Eule::Math']]], - ['adjoint_181',['Adjoint',['../classEule_1_1Matrix4x4.html#a1c664d93fbd68ec9f8c762263fc45a97',1,'Eule::Matrix4x4']]], - ['anglebetween_182',['AngleBetween',['../classEule_1_1Quaternion.html#a2c7d0c3521f0e6127ca4b5d5bdbf8329',1,'Eule::Quaternion']]] -]; diff --git a/Doxygen/build/search/functions_1.html b/Doxygen/build/search/functions_1.html deleted file mode 100644 index 0ddac0a..0000000 --- a/Doxygen/build/search/functions_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_1.js b/Doxygen/build/search/functions_1.js deleted file mode 100644 index 4395755..0000000 --- a/Doxygen/build/search/functions_1.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['clamp_183',['Clamp',['../classEule_1_1Math.html#a73947ee95912f0a06359fc5004bfc840',1,'Eule::Math']]], - ['conjugate_184',['Conjugate',['../classEule_1_1Quaternion.html#aa5333ab28dbe4d5ae15ab5dbc36b90ca',1,'Eule::Quaternion']]], - ['contains_185',['Contains',['../classEule_1_1Collider.html#a19a1220bf41df1d8c720296bfe91f5fb',1,'Eule::Collider::Contains()'],['../classEule_1_1TrapazoidalPrismCollider.html#abc4865f44bef057bbbb39385eae9e2dc',1,'Eule::TrapazoidalPrismCollider::Contains()']]], - ['crossproduct_186',['CrossProduct',['../classEule_1_1Vector2.html#a308df926fccbf4a5321a821d92924dfb',1,'Eule::Vector2::CrossProduct()'],['../classEule_1_1Vector3.html#abd62a5f6b0f380491cf80d70ed2e5317',1,'Eule::Vector3::CrossProduct()']]] -]; diff --git a/Doxygen/build/search/functions_2.html b/Doxygen/build/search/functions_2.html deleted file mode 100644 index 2737c5a..0000000 --- a/Doxygen/build/search/functions_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_2.js b/Doxygen/build/search/functions_2.js deleted file mode 100644 index 7e49eb4..0000000 --- a/Doxygen/build/search/functions_2.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['determinant_187',['Determinant',['../classEule_1_1Matrix4x4.html#a8a7c7d927d012aaa3abbbc210444b4c0',1,'Eule::Matrix4x4']]], - ['dotproduct_188',['DotProduct',['../classEule_1_1Vector2.html#a5ed3a9b01d550a9b745b885fdb03d68c',1,'Eule::Vector2::DotProduct()'],['../classEule_1_1Vector3.html#a6cbc1516e045c0334f8bf8a1dcd6ca91',1,'Eule::Vector3::DotProduct()']]], - ['droptranslationcomponents_189',['DropTranslationComponents',['../classEule_1_1Matrix4x4.html#a42eaf01fbe7f1f57d6fb5bf7111d3338',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/functions_3.html b/Doxygen/build/search/functions_3.html deleted file mode 100644 index 6da86e7..0000000 --- a/Doxygen/build/search/functions_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_3.js b/Doxygen/build/search/functions_3.js deleted file mode 100644 index 8492558..0000000 --- a/Doxygen/build/search/functions_3.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['getcofactors_190',['GetCofactors',['../classEule_1_1Matrix4x4.html#aefc37ab31604f888e393a1de62927d55',1,'Eule::Matrix4x4']]], - ['getrawvalues_191',['GetRawValues',['../classEule_1_1Quaternion.html#aaa193aa23729338a64bbd16eacab56ec',1,'Eule::Quaternion']]], - ['gettranslationcomponent_192',['GetTranslationComponent',['../classEule_1_1Matrix4x4.html#a19cc83344e288c09f7200d8410277b28',1,'Eule::Matrix4x4']]], - ['getvertex_193',['GetVertex',['../classEule_1_1TrapazoidalPrismCollider.html#a4b49f6749d39571121621dd45b32bac3',1,'Eule::TrapazoidalPrismCollider']]] -]; diff --git a/Doxygen/build/search/functions_4.html b/Doxygen/build/search/functions_4.html deleted file mode 100644 index 911304e..0000000 --- a/Doxygen/build/search/functions_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_4.js b/Doxygen/build/search/functions_4.js deleted file mode 100644 index 01a6187..0000000 --- a/Doxygen/build/search/functions_4.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['inverse_194',['Inverse',['../classEule_1_1Quaternion.html#a704d63f0f2cd2d50fd61562e3c2eb576',1,'Eule::Quaternion']]], - ['inverse3x3_195',['Inverse3x3',['../classEule_1_1Matrix4x4.html#acfd6d8677484cb6ed246efe5c39b9119',1,'Eule::Matrix4x4']]], - ['inverse4x4_196',['Inverse4x4',['../classEule_1_1Matrix4x4.html#ab635c2bbd0d91ad35369efd4dc5dac29',1,'Eule::Matrix4x4']]], - ['isinversible3x3_197',['IsInversible3x3',['../classEule_1_1Matrix4x4.html#ab52b7e10a4e7ecbdb347fd82eb9ecd22',1,'Eule::Matrix4x4']]], - ['isinversible4x4_198',['IsInversible4x4',['../classEule_1_1Matrix4x4.html#a24a2113d49c0a86c48755b8ad11e22c0',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/functions_5.html b/Doxygen/build/search/functions_5.html deleted file mode 100644 index 61b920d..0000000 --- a/Doxygen/build/search/functions_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_5.js b/Doxygen/build/search/functions_5.js deleted file mode 100644 index f3e792c..0000000 --- a/Doxygen/build/search/functions_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['lerp_199',['Lerp',['../classEule_1_1Math.html#a991f62401991014de20aca0fda9f9ef7',1,'Eule::Math::Lerp()'],['../classEule_1_1Quaternion.html#a2c386181050f7745341a00f79e496e08',1,'Eule::Quaternion::Lerp()'],['../classEule_1_1Vector2.html#a8bb45fd8415f24c58a59739d67f86038',1,'Eule::Vector2::Lerp()'],['../classEule_1_1Vector3.html#add2f96155edb1159b53725932d951f1f',1,'Eule::Vector3::Lerp()'],['../classEule_1_1Vector4.html#ae5b7ed7132d76ffbde20f24330fd4f69',1,'Eule::Vector4::Lerp()']]], - ['lerpself_200',['LerpSelf',['../classEule_1_1Vector2.html#a85ad9f5dca4f60c679be5edd86942774',1,'Eule::Vector2::LerpSelf()'],['../classEule_1_1Vector3.html#a8fb48e9a527d5e6fadb3b3102fa8f4c3',1,'Eule::Vector3::LerpSelf()'],['../classEule_1_1Vector4.html#ab4efb629829cfebcbb82b4318c3e3bb3',1,'Eule::Vector4::LerpSelf()']]] -]; diff --git a/Doxygen/build/search/functions_6.html b/Doxygen/build/search/functions_6.html deleted file mode 100644 index dc70a4a..0000000 --- a/Doxygen/build/search/functions_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_6.js b/Doxygen/build/search/functions_6.js deleted file mode 100644 index abd5fdf..0000000 --- a/Doxygen/build/search/functions_6.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['magnitude_201',['Magnitude',['../classEule_1_1Vector2.html#a85551e0734a2f3143c4ecdbaf4a3ea46',1,'Eule::Vector2::Magnitude()'],['../classEule_1_1Vector3.html#a96e6e436600d1420250ef2868854988d',1,'Eule::Vector3::Magnitude()'],['../classEule_1_1Vector4.html#a35c6fccb7a02095b595575903b590dd2',1,'Eule::Vector4::Magnitude()']]], - ['matrix4x4_202',['Matrix4x4',['../classEule_1_1Matrix4x4.html#a714a467ba7f85f88ebe3897b5e3580be',1,'Eule::Matrix4x4::Matrix4x4()'],['../classEule_1_1Matrix4x4.html#a4a71d8fc881ddb7d51577e0a762ac186',1,'Eule::Matrix4x4::Matrix4x4(const Matrix4x4 &other)'],['../classEule_1_1Matrix4x4.html#a44f2af9bfad01c2d065985c1dfda8d08',1,'Eule::Matrix4x4::Matrix4x4(Matrix4x4 &&other) noexcept']]], - ['max_203',['Max',['../classEule_1_1Math.html#a991c620839f5fa9fcfe7e503b8ab0008',1,'Eule::Math']]], - ['min_204',['Min',['../classEule_1_1Math.html#aa4d3c52cb09984ec567a9961ff7e3f02',1,'Eule::Math']]], - ['mod_205',['Mod',['../classEule_1_1Math.html#a9d17091e986de45e9bbee484e2d56430',1,'Eule::Math']]], - ['multiply4x4_206',['Multiply4x4',['../classEule_1_1Matrix4x4.html#ae364e54822b558526dd3404953d48090',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/functions_7.html b/Doxygen/build/search/functions_7.html deleted file mode 100644 index 7de3106..0000000 --- a/Doxygen/build/search/functions_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_7.js b/Doxygen/build/search/functions_7.js deleted file mode 100644 index 55e45fc..0000000 --- a/Doxygen/build/search/functions_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['normalize_207',['Normalize',['../classEule_1_1Vector2.html#a0f8de10acb284e2d6fcda8ba6efb3a15',1,'Eule::Vector2::Normalize()'],['../classEule_1_1Vector3.html#a4650f19df9b05d941d0fbc29ba59d980',1,'Eule::Vector3::Normalize()'],['../classEule_1_1Vector4.html#a3d10b51b1fe97661650b2991b29b67a7',1,'Eule::Vector4::Normalize()']]], - ['normalizeself_208',['NormalizeSelf',['../classEule_1_1Vector2.html#a9b15bbe640e8b40a743de72652b74591',1,'Eule::Vector2::NormalizeSelf()'],['../classEule_1_1Vector3.html#a69f80925d46f3630a2242b44ddb43a56',1,'Eule::Vector3::NormalizeSelf()'],['../classEule_1_1Vector4.html#a98bea58a58b04357044f72afc905896d',1,'Eule::Vector4::NormalizeSelf()']]] -]; diff --git a/Doxygen/build/search/functions_8.html b/Doxygen/build/search/functions_8.html deleted file mode 100644 index 7422be2..0000000 --- a/Doxygen/build/search/functions_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_8.js b/Doxygen/build/search/functions_8.js deleted file mode 100644 index 1e72441..0000000 --- a/Doxygen/build/search/functions_8.js +++ /dev/null @@ -1,20 +0,0 @@ -var searchData= -[ - ['operator_20vector2_3c_20t_20_3e_209',['operator Vector2< T >',['../classEule_1_1Vector3.html#a0bdcd7104775000964029ef94e8a3b6a',1,'Eule::Vector3::operator Vector2< T >()'],['../classEule_1_1Vector4.html#aa1384f5e84216dc264074b716efd37a0',1,'Eule::Vector4::operator Vector2< T >()']]], - ['operator_20vector3_3c_20t_20_3e_210',['operator Vector3< T >',['../classEule_1_1Vector2.html#a3623d54a21bd36d25916218d7ee6eef0',1,'Eule::Vector2::operator Vector3< T >()'],['../classEule_1_1Vector4.html#ab6911dc86dd0289c604167b95e18ebbc',1,'Eule::Vector4::operator Vector3< T >()']]], - ['operator_20vector4_3c_20t_20_3e_211',['operator Vector4< T >',['../classEule_1_1Vector2.html#a4adc4bcb6adab3c937c8154ddc4d9d51',1,'Eule::Vector2::operator Vector4< T >()'],['../classEule_1_1Vector3.html#a67d1daadee40fbaada3b5c3b4b4b7e79',1,'Eule::Vector3::operator Vector4< T >()']]], - ['operator_21_3d_212',['operator!=',['../classEule_1_1Matrix4x4.html#a4e78f3931e6467f50f979e35e4b39a22',1,'Eule::Matrix4x4::operator!=()'],['../classEule_1_1Quaternion.html#a1a97201d7deb56f543d65be9741cd2bd',1,'Eule::Quaternion::operator!=()'],['../classEule_1_1Vector2.html#aff40b705013d8356239b01c80b26e9a9',1,'Eule::Vector2::operator!=()'],['../classEule_1_1Vector3.html#ad71e5d9e7c46e63d226c180a2d8c0beb',1,'Eule::Vector3::operator!=()'],['../classEule_1_1Vector4.html#abc9e49133b73116830c953a4666e403c',1,'Eule::Vector4::operator!=()']]], - ['operator_2a_213',['operator*',['../classEule_1_1Matrix4x4.html#a1c687b90d224b7fac251d8539b8d1a57',1,'Eule::Matrix4x4::operator*(const Matrix4x4 &other) const'],['../classEule_1_1Matrix4x4.html#aea2039315271583e4832c8502e5d9144',1,'Eule::Matrix4x4::operator*(const double scalar) const'],['../classEule_1_1Quaternion.html#ab178e12364d87fb676d85695e491361f',1,'Eule::Quaternion::operator*(const Quaternion &q) const'],['../classEule_1_1Quaternion.html#a29aeab8de1a33ae8c043e3438829835f',1,'Eule::Quaternion::operator*(const Vector3d &p) const'],['../classEule_1_1Vector2.html#af70e271efeb2ea957532e917773e2724',1,'Eule::Vector2::operator*()'],['../classEule_1_1Vector3.html#afd6db19e66c398814f79bfd454682548',1,'Eule::Vector3::operator*(const T scale) const'],['../classEule_1_1Vector3.html#ab7148d41a5184ee4e2948cfdc5eb53f5',1,'Eule::Vector3::operator*(const Matrix4x4 &mat) const'],['../classEule_1_1Vector4.html#af397629f4fc12f8846df9bab8d6d8bbe',1,'Eule::Vector4::operator*(const T scale) const'],['../classEule_1_1Vector4.html#af19cb20ab4ccf6f39c9c8875495de565',1,'Eule::Vector4::operator*(const Matrix4x4 &mat) const']]], - ['operator_2a_3d_214',['operator*=',['../classEule_1_1Matrix4x4.html#a45fbc7927b3acf79c219da27470e0d27',1,'Eule::Matrix4x4::operator*=(const Matrix4x4 &other)'],['../classEule_1_1Matrix4x4.html#a0e8b677ef2f023df5bc46b47d4c15220',1,'Eule::Matrix4x4::operator*=(const double scalar)'],['../classEule_1_1Quaternion.html#a8941e3b43aabd15e2471e57ebd49c8a7',1,'Eule::Quaternion::operator*=()'],['../classEule_1_1Vector2.html#a14bd68884a3d6b83201f38df17ff1082',1,'Eule::Vector2::operator*=()'],['../classEule_1_1Vector3.html#a7a6e66693d2a1e5cf4dd7cca94ad49db',1,'Eule::Vector3::operator*=(const T scale)'],['../classEule_1_1Vector3.html#a2c3254704c4bf900277d2205f55f4157',1,'Eule::Vector3::operator*=(const Matrix4x4 &mat)'],['../classEule_1_1Vector4.html#a2359c0ecd8b9af425df240774d5ae950',1,'Eule::Vector4::operator*=(const T scale)'],['../classEule_1_1Vector4.html#a7b48a3504125d0017ea237825da3d126',1,'Eule::Vector4::operator*=(const Matrix4x4 &mat)']]], - ['operator_2b_215',['operator+',['../classEule_1_1Matrix4x4.html#a8e5abd340eef361f18bd8cc7166fef1b',1,'Eule::Matrix4x4::operator+()'],['../classEule_1_1Vector2.html#a2acbb7e46d9659a26afb746372ea4364',1,'Eule::Vector2::operator+()'],['../classEule_1_1Vector3.html#ae094943bacbd043b41f9b34bdb51542e',1,'Eule::Vector3::operator+()'],['../classEule_1_1Vector4.html#a0b8b7947175218917b2683d48790a40f',1,'Eule::Vector4::operator+()']]], - ['operator_2b_3d_216',['operator+=',['../classEule_1_1Matrix4x4.html#a89e9d610c16c97178a62b697d04fd873',1,'Eule::Matrix4x4::operator+=()'],['../classEule_1_1Vector2.html#a8b1eb48922a38c4237ea26b11ce43fd2',1,'Eule::Vector2::operator+=()'],['../classEule_1_1Vector3.html#ac6fe920a34552925aff185f335b13e14',1,'Eule::Vector3::operator+=()'],['../classEule_1_1Vector4.html#a54a9edbe72049b85f03827d488363d0a',1,'Eule::Vector4::operator+=()']]], - ['operator_2d_217',['operator-',['../classEule_1_1Matrix4x4.html#a4d4f16882462f4afc18debc6594019a1',1,'Eule::Matrix4x4::operator-()'],['../classEule_1_1Vector2.html#a52060a0688502456b4bb3e443c36c25d',1,'Eule::Vector2::operator-(const Vector2< T > &other) const'],['../classEule_1_1Vector2.html#a352b4e84721183ef182324d350df64df',1,'Eule::Vector2::operator-() const'],['../classEule_1_1Vector3.html#a88273031482c057795e05ea25218ea4b',1,'Eule::Vector3::operator-(const Vector3< T > &other) const'],['../classEule_1_1Vector3.html#a11f2449516a8787f4cce227f12ae2f03',1,'Eule::Vector3::operator-() const'],['../classEule_1_1Vector4.html#a6e68957131d6d87c69dce71ff88097f3',1,'Eule::Vector4::operator-(const Vector4< T > &other) const'],['../classEule_1_1Vector4.html#a36426b12cdcdbfaa6daa35c9d3d4e9c4',1,'Eule::Vector4::operator-() const']]], - ['operator_2d_3d_218',['operator-=',['../classEule_1_1Matrix4x4.html#aca08ad35ac143742eb2aa22892d30e46',1,'Eule::Matrix4x4::operator-=()'],['../classEule_1_1Vector2.html#a76103604080c7d718b634f9394143bfd',1,'Eule::Vector2::operator-=()'],['../classEule_1_1Vector3.html#af1207f3bf66aaf0fa781d43db40b8006',1,'Eule::Vector3::operator-=()'],['../classEule_1_1Vector4.html#aec85460804d89ed9206cc478b2f3c8ba',1,'Eule::Vector4::operator-=()']]], - ['operator_2f_219',['operator/',['../classEule_1_1Matrix4x4.html#acbc9bcf9b58d98372b8f754b2661dc04',1,'Eule::Matrix4x4::operator/(const Matrix4x4 &other) const'],['../classEule_1_1Matrix4x4.html#acca753b1befa72d893ccb73a2390a259',1,'Eule::Matrix4x4::operator/(const double denominator) const'],['../classEule_1_1Quaternion.html#a23488d14e31db8cec75a0e8c6f38c70a',1,'Eule::Quaternion::operator/()'],['../classEule_1_1Vector2.html#adcecda237ca7909bc8de0f8e4a1b586d',1,'Eule::Vector2::operator/()'],['../classEule_1_1Vector3.html#aa9bace50e1db42029d93fbd8a417fc70',1,'Eule::Vector3::operator/()'],['../classEule_1_1Vector4.html#ac952c5322209dffd5ea7bb4a9b06c52d',1,'Eule::Vector4::operator/()']]], - ['operator_2f_3d_220',['operator/=',['../classEule_1_1Matrix4x4.html#a25369a9c56f20e205e827dab8be78b21',1,'Eule::Matrix4x4::operator/=(const Matrix4x4 &other)'],['../classEule_1_1Matrix4x4.html#a7335fdcec31085ff17b4eda00bf0e3eb',1,'Eule::Matrix4x4::operator/=(const double denominator)'],['../classEule_1_1Quaternion.html#aa071c90a64d21cbb8109366bf2449838',1,'Eule::Quaternion::operator/=()'],['../classEule_1_1Vector2.html#a1a4503a880f870a1f225fe635e7482bb',1,'Eule::Vector2::operator/=()'],['../classEule_1_1Vector3.html#a69f00f05eda60630d48499067297e431',1,'Eule::Vector3::operator/=()'],['../classEule_1_1Vector4.html#a35680f0675813c93e1c2cd3607c1ea2e',1,'Eule::Vector4::operator/=()']]], - ['operator_3c_3c_221',['operator<<',['../namespaceEule.html#aa7ebcddcafa056556a6e17dcc968e7dd',1,'Eule::operator<<(std::ostream &os, const Matrix4x4 &m)'],['../namespaceEule.html#ae2fd3ed809d4c950926560fd9b3f2886',1,'Eule::operator<<(std::wostream &os, const Matrix4x4 &m)'],['../namespaceEule.html#a632355bad553c40d9fd297c260c1d44b',1,'Eule::operator<<(std::ostream &os, const Quaternion &q)'],['../namespaceEule.html#a5d5c597b5ae3b3143015316a4a60eacc',1,'Eule::operator<<(std::wostream &os, const Quaternion &q)']]], - ['operator_3d_222',['operator=',['../classEule_1_1Matrix4x4.html#a26938f026d8d438f72b1d5fd4a28f61c',1,'Eule::Matrix4x4::operator=(const Matrix4x4 &other)'],['../classEule_1_1Matrix4x4.html#a3e2dab83b760ff7da038f14b977d7642',1,'Eule::Matrix4x4::operator=(Matrix4x4 &&other) noexcept'],['../classEule_1_1Quaternion.html#a9cf7fd3318ffdd50e6567c84d24c20e9',1,'Eule::Quaternion::operator=()'],['../classEule_1_1TrapazoidalPrismCollider.html#a1dd50a1f4139a78d9c1c9d6f62a429bd',1,'Eule::TrapazoidalPrismCollider::operator=(const TrapazoidalPrismCollider &other)'],['../classEule_1_1TrapazoidalPrismCollider.html#a7ca93565db388a08ed955a42c8fb99d8',1,'Eule::TrapazoidalPrismCollider::operator=(TrapazoidalPrismCollider &&other) noexcept'],['../classEule_1_1Vector2.html#afc79cf4d93bd0e6feec0fe64fa10d3cf',1,'Eule::Vector2::operator=(const Vector2< T > &other)'],['../classEule_1_1Vector2.html#a6642aa42c0446aecd59f67244ddad873',1,'Eule::Vector2::operator=(Vector2< T > &&other) noexcept'],['../classEule_1_1Vector3.html#a9e725f7a3bf0fb822acf9418dc950ad5',1,'Eule::Vector3::operator=(const Vector3< T > &other)'],['../classEule_1_1Vector3.html#a68cd4f7804a47455d5a5af9cc6b66e38',1,'Eule::Vector3::operator=(Vector3< T > &&other) noexcept'],['../classEule_1_1Vector4.html#a7dc41444f6e3fd30a9cc256ed8414ee6',1,'Eule::Vector4::operator=(const Vector4< T > &other)'],['../classEule_1_1Vector4.html#a331a780b59a0e15e887f11a6fe396934',1,'Eule::Vector4::operator=(Vector4< T > &&other) noexcept']]], - ['operator_3d_3d_223',['operator==',['../classEule_1_1Matrix4x4.html#a37f9e809552b58472f4e20fbeabffdca',1,'Eule::Matrix4x4::operator==()'],['../classEule_1_1Quaternion.html#a516d4dcc7c6f13d8846070b72f588210',1,'Eule::Quaternion::operator==()'],['../classEule_1_1Vector2.html#a3f73897ee668229ea1513f1e2482b296',1,'Eule::Vector2::operator==()'],['../classEule_1_1Vector3.html#a8619be9756e498c50158c5dac275262e',1,'Eule::Vector3::operator==()'],['../classEule_1_1Vector4.html#ae2af40b477e41f8a42db7f80a832a1e7',1,'Eule::Vector4::operator==()']]], - ['operator_5b_5d_224',['operator[]',['../classEule_1_1Matrix4x4.html#a17702fbf3399b86eb883486208895272',1,'Eule::Matrix4x4::operator[](std::size_t y)'],['../classEule_1_1Matrix4x4.html#a1fc5eb915560132c9d908a9c9eacc510',1,'Eule::Matrix4x4::operator[](std::size_t y) const'],['../classEule_1_1Vector2.html#acbfb002c7f506358e1c9648ad0a79734',1,'Eule::Vector2::operator[](std::size_t idx)'],['../classEule_1_1Vector2.html#ac5e06e8ff35709b2a0dda3d932f0d025',1,'Eule::Vector2::operator[](std::size_t idx) const'],['../classEule_1_1Vector3.html#a71f307ae6427a4d6df51647c9d76504b',1,'Eule::Vector3::operator[](std::size_t idx)'],['../classEule_1_1Vector3.html#a4c028a7bab65693aff5d1a7c992326dc',1,'Eule::Vector3::operator[](std::size_t idx) const'],['../classEule_1_1Vector4.html#ae64012cf90d0ad436066232a741b27d5',1,'Eule::Vector4::operator[](std::size_t idx)'],['../classEule_1_1Vector4.html#a603808150eb90008831ba3050bb38a37',1,'Eule::Vector4::operator[](std::size_t idx) const']]], - ['oscillate_225',['Oscillate',['../classEule_1_1Math.html#a1b0fb72c51751470f7f819b20a5b3b3f',1,'Eule::Math']]] -]; diff --git a/Doxygen/build/search/functions_9.html b/Doxygen/build/search/functions_9.html deleted file mode 100644 index befd4fa..0000000 --- a/Doxygen/build/search/functions_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_9.js b/Doxygen/build/search/functions_9.js deleted file mode 100644 index e0e9718..0000000 --- a/Doxygen/build/search/functions_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['quaternion_226',['Quaternion',['../classEule_1_1Quaternion.html#abcc01358aada56ea5f0db4da18aaf77d',1,'Eule::Quaternion::Quaternion()'],['../classEule_1_1Quaternion.html#a2dc0ed0c7773600cf443151573287e4a',1,'Eule::Quaternion::Quaternion(const Vector4d values)'],['../classEule_1_1Quaternion.html#ab3b8862f9fd86c7ebb426b4940d08b39',1,'Eule::Quaternion::Quaternion(const Quaternion &q)'],['../classEule_1_1Quaternion.html#a1e4c6f8984bb7a9ae1ffed45adffe02f',1,'Eule::Quaternion::Quaternion(const Vector3d eulerAngles)']]] -]; diff --git a/Doxygen/build/search/functions_a.html b/Doxygen/build/search/functions_a.html deleted file mode 100644 index a81e963..0000000 --- a/Doxygen/build/search/functions_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_a.js b/Doxygen/build/search/functions_a.js deleted file mode 100644 index 70c1e85..0000000 --- a/Doxygen/build/search/functions_a.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['random_227',['Random',['../classEule_1_1Math.html#a6aa6d6c804f995a089779219e5136e4f',1,'Eule::Math']]], - ['randomchance_228',['RandomChance',['../classEule_1_1Math.html#a60bffec38a861b7701fc90bd6f1a11d6',1,'Eule::Math']]], - ['randomint_229',['RandomInt',['../classEule_1_1Math.html#ab8d66e39e794d89594c50690ccc92c60',1,'Eule::Math']]], - ['randomintrange_230',['RandomIntRange',['../classEule_1_1Math.html#adfc55be8cb68aba351374f045f29a2ad',1,'Eule::Math']]], - ['randomrange_231',['RandomRange',['../classEule_1_1Math.html#a48ca8451f9803ce35d2a35cfb83d8ae9',1,'Eule::Math']]], - ['randomuint_232',['RandomUint',['../classEule_1_1Math.html#ad38d9a50e08cd02bb35161cc3bd77b26',1,'Eule::Math']]], - ['rotatevector_233',['RotateVector',['../classEule_1_1Quaternion.html#aaeb89218e886e605c6e2a87c9cb773a4',1,'Eule::Quaternion']]] -]; diff --git a/Doxygen/build/search/functions_b.html b/Doxygen/build/search/functions_b.html deleted file mode 100644 index 345265d..0000000 --- a/Doxygen/build/search/functions_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_b.js b/Doxygen/build/search/functions_b.js deleted file mode 100644 index a20e2d4..0000000 --- a/Doxygen/build/search/functions_b.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['setrawvalues_234',['SetRawValues',['../classEule_1_1Quaternion.html#a7046064a89615e16760f17f41b60a31d',1,'Eule::Quaternion']]], - ['settranslationcomponent_235',['SetTranslationComponent',['../classEule_1_1Matrix4x4.html#a6e4fd75a1f47f42f922ef4355d448411',1,'Eule::Matrix4x4']]], - ['setvertex_236',['SetVertex',['../classEule_1_1TrapazoidalPrismCollider.html#a5acc127ec848dceead5ad017f36696aa',1,'Eule::TrapazoidalPrismCollider']]], - ['similar_237',['Similar',['../classEule_1_1Math.html#a4c9a4bc679357551b4a6315497f80f6f',1,'Eule::Math::Similar()'],['../classEule_1_1Matrix4x4.html#ab8340e0e909a6cbb1a32439f2ca2c092',1,'Eule::Matrix4x4::Similar()'],['../classEule_1_1Vector2.html#a69fc37a6e885b64426d5846be33c7366',1,'Eule::Vector2::Similar()'],['../classEule_1_1Vector3.html#a9613bb7d4981c921b8310d5eedf59b07',1,'Eule::Vector3::Similar()'],['../classEule_1_1Vector4.html#af49ea98d369420a07158d705eab60479',1,'Eule::Vector4::Similar()']]], - ['sqrmagnitude_238',['SqrMagnitude',['../classEule_1_1Vector2.html#ad8c2b3e86fc91a641a0817047a63170f',1,'Eule::Vector2::SqrMagnitude()'],['../classEule_1_1Vector3.html#ad2f078dd733634a321157d23979a4162',1,'Eule::Vector3::SqrMagnitude()'],['../classEule_1_1Vector4.html#a2cd0433c99303b8934993b2fd2aa1c6e',1,'Eule::Vector4::SqrMagnitude()']]] -]; diff --git a/Doxygen/build/search/functions_c.html b/Doxygen/build/search/functions_c.html deleted file mode 100644 index 858bfd6..0000000 --- a/Doxygen/build/search/functions_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_c.js b/Doxygen/build/search/functions_c.js deleted file mode 100644 index aa4b298..0000000 --- a/Doxygen/build/search/functions_c.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['todouble_239',['ToDouble',['../classEule_1_1Vector2.html#a2f7e2f5eb22ab04166cbaa0aca6dfb20',1,'Eule::Vector2::ToDouble()'],['../classEule_1_1Vector3.html#a04560b5fa992b7fa455fc4d406928df8',1,'Eule::Vector3::ToDouble()'],['../classEule_1_1Vector4.html#a267ad7bfad5ea8f6f8c001cee817c54e',1,'Eule::Vector4::ToDouble()']]], - ['toeulerangles_240',['ToEulerAngles',['../classEule_1_1Quaternion.html#a5a6349cb3e0a0c73df527e9ba907b0da',1,'Eule::Quaternion']]], - ['toint_241',['ToInt',['../classEule_1_1Vector2.html#a078a567a49b6d02fb8dce79885b4c2e9',1,'Eule::Vector2::ToInt()'],['../classEule_1_1Vector3.html#a0510707e23eb81c4a799dffc7b0ce127',1,'Eule::Vector3::ToInt()'],['../classEule_1_1Vector4.html#a53244995fd4f19de4e740b47aec029a3',1,'Eule::Vector4::ToInt()']]], - ['torotationmatrix_242',['ToRotationMatrix',['../classEule_1_1Quaternion.html#aedb36036ee6a39fb97c5d2ba12b5d986',1,'Eule::Quaternion']]], - ['transpose3x3_243',['Transpose3x3',['../classEule_1_1Matrix4x4.html#a410b88abff7991d9faa3f818efd6807d',1,'Eule::Matrix4x4']]], - ['transpose4x4_244',['Transpose4x4',['../classEule_1_1Matrix4x4.html#af454812ef8205562e14ee094ce7172b1',1,'Eule::Matrix4x4']]], - ['trapazoidalprismcollider_245',['TrapazoidalPrismCollider',['../classEule_1_1TrapazoidalPrismCollider.html#a787c22d1c84b74dd078a2d3d6d76ee34',1,'Eule::TrapazoidalPrismCollider::TrapazoidalPrismCollider()'],['../classEule_1_1TrapazoidalPrismCollider.html#acc761aadc1b6421db75eea36d5d722d1',1,'Eule::TrapazoidalPrismCollider::TrapazoidalPrismCollider(const TrapazoidalPrismCollider &other)=default'],['../classEule_1_1TrapazoidalPrismCollider.html#aad0faabb1b27478320da6d2fa44f034b',1,'Eule::TrapazoidalPrismCollider::TrapazoidalPrismCollider(TrapazoidalPrismCollider &&other) noexcept=default']]] -]; diff --git a/Doxygen/build/search/functions_d.html b/Doxygen/build/search/functions_d.html deleted file mode 100644 index 2f09f51..0000000 --- a/Doxygen/build/search/functions_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_d.js b/Doxygen/build/search/functions_d.js deleted file mode 100644 index a993048..0000000 --- a/Doxygen/build/search/functions_d.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['unitquaternion_246',['UnitQuaternion',['../classEule_1_1Quaternion.html#affb1a8ac42e356ee5efb304ca8df38ca',1,'Eule::Quaternion']]] -]; diff --git a/Doxygen/build/search/functions_e.html b/Doxygen/build/search/functions_e.html deleted file mode 100644 index ee5afa6..0000000 --- a/Doxygen/build/search/functions_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_e.js b/Doxygen/build/search/functions_e.js deleted file mode 100644 index 799c564..0000000 --- a/Doxygen/build/search/functions_e.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['vector2_247',['Vector2',['../classEule_1_1Vector2.html#a99b4d19728ca8577413ccba9cecc5948',1,'Eule::Vector2::Vector2()'],['../classEule_1_1Vector2.html#ad106a7fa36501663af6959f17b317c9f',1,'Eule::Vector2::Vector2(T _x, T _y)'],['../classEule_1_1Vector2.html#af5b98f03dae0721f155eee4ef2babc8d',1,'Eule::Vector2::Vector2(const Vector2< T > &other)=default'],['../classEule_1_1Vector2.html#a3a37db279577d277c890abe282951cb4',1,'Eule::Vector2::Vector2(Vector2< T > &&other) noexcept=default']]], - ['vector3_248',['Vector3',['../classEule_1_1Vector3.html#abba435897a7050d8c111d703c5bb3eb8',1,'Eule::Vector3::Vector3()'],['../classEule_1_1Vector3.html#ab43c649b5f80f80660ce83a28697f1e9',1,'Eule::Vector3::Vector3(T _x, T _y, T _z)'],['../classEule_1_1Vector3.html#ac485bad4d2a077e0ab2a2bc68e223740',1,'Eule::Vector3::Vector3(const Vector3< T > &other)=default'],['../classEule_1_1Vector3.html#a9c6dc41aad5e44f30baad3c3864148b8',1,'Eule::Vector3::Vector3(Vector3< T > &&other) noexcept=default']]], - ['vector4_249',['Vector4',['../classEule_1_1Vector4.html#ad49c5d39b5478aefea2acfe65bd59393',1,'Eule::Vector4::Vector4()'],['../classEule_1_1Vector4.html#aaa8aa9abea8ad8dde3aaa2de27ac2391',1,'Eule::Vector4::Vector4(T _x, T _y, T _z, T _w)'],['../classEule_1_1Vector4.html#aa47cf18eb55ec51c7dd0a95794d7230d',1,'Eule::Vector4::Vector4(const Vector4< T > &other)=default'],['../classEule_1_1Vector4.html#a9c9e20e38663621063f2437965fac438',1,'Eule::Vector4::Vector4(Vector4< T > &&other) noexcept=default']]], - ['vectorscale_250',['VectorScale',['../classEule_1_1Vector2.html#a5c7eb6afd348c8409f856d398593713e',1,'Eule::Vector2::VectorScale()'],['../classEule_1_1Vector3.html#afbfdd011a51ae697bdf0d297f2f6aa95',1,'Eule::Vector3::VectorScale()'],['../classEule_1_1Vector4.html#ae24537cb41abb4365a22fe3b07869b85',1,'Eule::Vector4::VectorScale()']]] -]; diff --git a/Doxygen/build/search/functions_f.html b/Doxygen/build/search/functions_f.html deleted file mode 100644 index f17c412..0000000 --- a/Doxygen/build/search/functions_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/functions_f.js b/Doxygen/build/search/functions_f.js deleted file mode 100644 index 878c21e..0000000 --- a/Doxygen/build/search/functions_f.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_7equaternion_251',['~Quaternion',['../classEule_1_1Quaternion.html#a5f834c2ca469cd71edc8a23fdc3f56e8',1,'Eule::Quaternion']]] -]; diff --git a/Doxygen/build/search/mag_sel.png b/Doxygen/build/search/mag_sel.png deleted file mode 100644 index 39c0ed52a25dd9d080ee0d42ae6c6042bdfa04d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz6!2%?$TA$hhDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~NU84L`?eGCi_EEpJ?t}-xGu`@87+QPtK?83kxQ`TapwHK(CDaqU2h2ejD|C#+j z9%q3^WHAE+w=f7ZGR&GI0Tg5}@$_|Nf5gMiEhFgvHvB$N=!mC_V~EE2vzPXI9ZnEo zd+1zHor@dYLod2Y{ z@R$7$Z!PXTbY$|@#T!bMzm?`b<(R`cbw(gxJHzu zB$lLFB^RXvDF!10LknF)BV7aY5JN*NBMU1-b8Q0yD+2>vd*|CI8glbfGSez?Ylunu RoetE%;OXk;vd$@?2>>CYplSdB diff --git a/Doxygen/build/search/namespaces_0.html b/Doxygen/build/search/namespaces_0.html deleted file mode 100644 index 76996d1..0000000 --- a/Doxygen/build/search/namespaces_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/namespaces_0.js b/Doxygen/build/search/namespaces_0.js deleted file mode 100644 index f4abf6f..0000000 --- a/Doxygen/build/search/namespaces_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['eule_159',['Eule',['../namespaceEule.html',1,'']]] -]; diff --git a/Doxygen/build/search/nomatches.html b/Doxygen/build/search/nomatches.html deleted file mode 100644 index 4377320..0000000 --- a/Doxygen/build/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -
    -
    No Matches
    -
    - - diff --git a/Doxygen/build/search/related_0.html b/Doxygen/build/search/related_0.html deleted file mode 100644 index bbe15fa..0000000 --- a/Doxygen/build/search/related_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/related_0.js b/Doxygen/build/search/related_0.js deleted file mode 100644 index 2f93a78..0000000 --- a/Doxygen/build/search/related_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['operator_3c_3c_299',['operator<<',['../classEule_1_1Matrix4x4.html#ab4da4b366d5d0a7bbe890aff1f2445df',1,'Eule::Matrix4x4::operator<<()'],['../classEule_1_1Matrix4x4.html#a4edddbe2b7f5913d67bb90a4d28f44e3',1,'Eule::Matrix4x4::operator<<()'],['../classEule_1_1Quaternion.html#a9dc71eaedf4486dc005fa9a67c6da866',1,'Eule::Quaternion::operator<<()'],['../classEule_1_1Quaternion.html#a7cf5f94ea6e861b3c01f674d7ef987c7',1,'Eule::Quaternion::operator<<()'],['../classEule_1_1Vector2.html#aa89ba3c2ae7a53a25530d3eef6a3c4e3',1,'Eule::Vector2::operator<<()'],['../classEule_1_1Vector2.html#a7ae9f5fa7ea5f9e9ae4ba0dca0a8494b',1,'Eule::Vector2::operator<<()'],['../classEule_1_1Vector3.html#a5705993a4489fc62d73b85f3654261cf',1,'Eule::Vector3::operator<<()'],['../classEule_1_1Vector3.html#a062adbc281326979ec3f5f71052d0deb',1,'Eule::Vector3::operator<<()'],['../classEule_1_1Vector4.html#a67f776474e56594e4973be32df68602a',1,'Eule::Vector4::operator<<()'],['../classEule_1_1Vector4.html#a111187ac1ffc14d4aa33d85a14645870',1,'Eule::Vector4::operator<<()']]] -]; diff --git a/Doxygen/build/search/search.css b/Doxygen/build/search/search.css deleted file mode 100644 index 3cf9df9..0000000 --- a/Doxygen/build/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - float: none; - margin-top: 8px; - right: 0px; - width: 170px; - height: 24px; - z-index: 102; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:115px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; - -webkit-border-radius: 0px; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:8px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; - z-index:10000; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/Doxygen/build/search/search.js b/Doxygen/build/search/search.js deleted file mode 100644 index a554ab9..0000000 --- a/Doxygen/build/search/search.js +++ /dev/null @@ -1,814 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W diff --git a/Doxygen/build/search/search_r.png b/Doxygen/build/search/search_r.png deleted file mode 100644 index 1af5d21ee13e070d7600f1c4657fde843b953a69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD diff --git a/Doxygen/build/search/searchdata.js b/Doxygen/build/search/searchdata.js deleted file mode 100644 index 6a5284d..0000000 --- a/Doxygen/build/search/searchdata.js +++ /dev/null @@ -1,39 +0,0 @@ -var indexSectionsWithContent = -{ - 0: "abcdefghijklmnopqrstuvwxyz~", - 1: "cmqrtv", - 2: "e", - 3: "cemqrtv", - 4: "acdgilmnoqrstuv~", - 5: "abcdefghijklmnoprstuvwxyz", - 6: "v", - 7: "o", - 8: "m" -}; - -var indexSectionNames = -{ - 0: "all", - 1: "classes", - 2: "namespaces", - 3: "files", - 4: "functions", - 5: "variables", - 6: "typedefs", - 7: "related", - 8: "defines" -}; - -var indexSectionLabels = -{ - 0: "All", - 1: "Classes", - 2: "Namespaces", - 3: "Files", - 4: "Functions", - 5: "Variables", - 6: "Typedefs", - 7: "Friends", - 8: "Macros" -}; - diff --git a/Doxygen/build/search/typedefs_0.html b/Doxygen/build/search/typedefs_0.html deleted file mode 100644 index 376db47..0000000 --- a/Doxygen/build/search/typedefs_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/typedefs_0.js b/Doxygen/build/search/typedefs_0.js deleted file mode 100644 index c71a595..0000000 --- a/Doxygen/build/search/typedefs_0.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['vector2d_293',['Vector2d',['../namespaceEule.html#ad2b14d99a3b97a954d09be46e86fa554',1,'Eule']]], - ['vector2i_294',['Vector2i',['../namespaceEule.html#a4b8529f841686a41ce0423f3610f0779',1,'Eule']]], - ['vector3d_295',['Vector3d',['../namespaceEule.html#afc45246550a85134cf500caa2b81061a',1,'Eule']]], - ['vector3i_296',['Vector3i',['../namespaceEule.html#a2ee0ef456d32068e4f9b8355ca47acd7',1,'Eule']]], - ['vector4d_297',['Vector4d',['../namespaceEule.html#ab1f7f26891b56b960ca6cca5cc1cc44e',1,'Eule']]], - ['vector4i_298',['Vector4i',['../namespaceEule.html#aea48fbceb33833fc808355c9eec721bb',1,'Eule']]] -]; diff --git a/Doxygen/build/search/variables_0.html b/Doxygen/build/search/variables_0.html deleted file mode 100644 index bf3eba5..0000000 --- a/Doxygen/build/search/variables_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_0.js b/Doxygen/build/search/variables_0.js deleted file mode 100644 index 48072d3..0000000 --- a/Doxygen/build/search/variables_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['a_252',['a',['../classEule_1_1Matrix4x4.html#ab3ff5bc09a2598faa76188d0cc31addb',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/variables_1.html b/Doxygen/build/search/variables_1.html deleted file mode 100644 index 49fe59a..0000000 --- a/Doxygen/build/search/variables_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_1.js b/Doxygen/build/search/variables_1.js deleted file mode 100644 index 3cad474..0000000 --- a/Doxygen/build/search/variables_1.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['b_253',['b',['../classEule_1_1Matrix4x4.html#a2258f9cce9558711c59ffcf140a39756',1,'Eule::Matrix4x4']]], - ['back_254',['BACK',['../classEule_1_1TrapazoidalPrismCollider.html#a756f4bcb931dd6381901362e51410da9',1,'Eule::TrapazoidalPrismCollider']]], - ['backward_255',['backward',['../classEule_1_1Vector3.html#a34083239eb29eaf4614d09d4d7014b06',1,'Eule::Vector3::backward()'],['../classEule_1_1Vector4.html#a59d02244dbcd06b9d3f09da75128242e',1,'Eule::Vector4::backward()']]], - ['bottom_256',['BOTTOM',['../classEule_1_1TrapazoidalPrismCollider.html#a7f7594171358bbc10680e2dc42f1b53d',1,'Eule::TrapazoidalPrismCollider']]] -]; diff --git a/Doxygen/build/search/variables_10.html b/Doxygen/build/search/variables_10.html deleted file mode 100644 index 92982ac..0000000 --- a/Doxygen/build/search/variables_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_10.js b/Doxygen/build/search/variables_10.js deleted file mode 100644 index ff30ac6..0000000 --- a/Doxygen/build/search/variables_10.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['rad2deg_282',['Rad2Deg',['../Constants_8h.html#afa51234d581318384aacb84a195c3a2b',1,'Constants.h']]], - ['right_283',['right',['../classEule_1_1Vector2.html#a594b062e78cb2e92dbb533a435258f49',1,'Eule::Vector2::right()'],['../classEule_1_1Vector3.html#a1febd6152b8964147229242630b8c8f0',1,'Eule::Vector3::right()'],['../classEule_1_1Vector4.html#a4701bae8f20522fe93575e8909478f36',1,'Eule::Vector4::right()'],['../classEule_1_1TrapazoidalPrismCollider.html#a67a468becb53ca0d50e8da3daab98b85',1,'Eule::TrapazoidalPrismCollider::RIGHT()']]] -]; diff --git a/Doxygen/build/search/variables_11.html b/Doxygen/build/search/variables_11.html deleted file mode 100644 index 94f1a8c..0000000 --- a/Doxygen/build/search/variables_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_11.js b/Doxygen/build/search/variables_11.js deleted file mode 100644 index 21d2852..0000000 --- a/Doxygen/build/search/variables_11.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['size_284',['size',['../structEule_1_1Rect.html#a330821ad2e2fbffe4575783619923f8d',1,'Eule::Rect']]] -]; diff --git a/Doxygen/build/search/variables_12.html b/Doxygen/build/search/variables_12.html deleted file mode 100644 index 61c013a..0000000 --- a/Doxygen/build/search/variables_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_12.js b/Doxygen/build/search/variables_12.js deleted file mode 100644 index f642bb8..0000000 --- a/Doxygen/build/search/variables_12.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['top_285',['TOP',['../classEule_1_1TrapazoidalPrismCollider.html#a09b3433cb41848fd166fc9c7614aff7e',1,'Eule::TrapazoidalPrismCollider']]] -]; diff --git a/Doxygen/build/search/variables_13.html b/Doxygen/build/search/variables_13.html deleted file mode 100644 index 87b7ca6..0000000 --- a/Doxygen/build/search/variables_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_13.js b/Doxygen/build/search/variables_13.js deleted file mode 100644 index 538bf84..0000000 --- a/Doxygen/build/search/variables_13.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['up_286',['up',['../classEule_1_1Vector2.html#a010bbbc9de53adcc00ffe1565c3a8208',1,'Eule::Vector2::up()'],['../classEule_1_1Vector3.html#a7508f8b060773b00cd40df94d628d7b6',1,'Eule::Vector3::up()'],['../classEule_1_1Vector4.html#a9a8c5882154587b3e34ae308466f98a5',1,'Eule::Vector4::up()']]] -]; diff --git a/Doxygen/build/search/variables_14.html b/Doxygen/build/search/variables_14.html deleted file mode 100644 index 874fe59..0000000 --- a/Doxygen/build/search/variables_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_14.js b/Doxygen/build/search/variables_14.js deleted file mode 100644 index 818d246..0000000 --- a/Doxygen/build/search/variables_14.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['v_287',['v',['../classEule_1_1Matrix4x4.html#a6cf89fe3ccd64d362a1d4c6ea77ff660',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/variables_15.html b/Doxygen/build/search/variables_15.html deleted file mode 100644 index 3ca8799..0000000 --- a/Doxygen/build/search/variables_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_15.js b/Doxygen/build/search/variables_15.js deleted file mode 100644 index c6a6a00..0000000 --- a/Doxygen/build/search/variables_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['w_288',['w',['../classEule_1_1Vector4.html#a4b2184f91a991264ddc3dae3beadf23e',1,'Eule::Vector4']]] -]; diff --git a/Doxygen/build/search/variables_16.html b/Doxygen/build/search/variables_16.html deleted file mode 100644 index 2b5a433..0000000 --- a/Doxygen/build/search/variables_16.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_16.js b/Doxygen/build/search/variables_16.js deleted file mode 100644 index 3136ef1..0000000 --- a/Doxygen/build/search/variables_16.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['x_289',['x',['../classEule_1_1Vector2.html#acca020e7957a9b7b2682f2df496bcdb7',1,'Eule::Vector2::x()'],['../classEule_1_1Vector3.html#a3d7770a583354b1dfc2f6af1092adc1b',1,'Eule::Vector3::x()'],['../classEule_1_1Vector4.html#a6abdc466a694e39b1bf5e71dd26e9fbf',1,'Eule::Vector4::x()']]] -]; diff --git a/Doxygen/build/search/variables_17.html b/Doxygen/build/search/variables_17.html deleted file mode 100644 index 16914b7..0000000 --- a/Doxygen/build/search/variables_17.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_17.js b/Doxygen/build/search/variables_17.js deleted file mode 100644 index 97b24b7..0000000 --- a/Doxygen/build/search/variables_17.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['y_290',['y',['../classEule_1_1Vector2.html#a077434c60e04b051347a43ce26fbdbc9',1,'Eule::Vector2::y()'],['../classEule_1_1Vector3.html#a716e038c7b599bc5c741dfc0a3c42146',1,'Eule::Vector3::y()'],['../classEule_1_1Vector4.html#a994773dc2da079a335f4b57153cf82c9',1,'Eule::Vector4::y()']]] -]; diff --git a/Doxygen/build/search/variables_18.html b/Doxygen/build/search/variables_18.html deleted file mode 100644 index 782b3bf..0000000 --- a/Doxygen/build/search/variables_18.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_18.js b/Doxygen/build/search/variables_18.js deleted file mode 100644 index bf252d8..0000000 --- a/Doxygen/build/search/variables_18.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['z_291',['z',['../classEule_1_1Vector3.html#a754b1a46c44a0fde99e670e174dba674',1,'Eule::Vector3::z()'],['../classEule_1_1Vector4.html#acf70d20ed586c3e168f2664f643902f0',1,'Eule::Vector4::z()']]], - ['zero_292',['zero',['../classEule_1_1Vector2.html#a44cd63661b38477ebd67c9eb20369e7c',1,'Eule::Vector2::zero()'],['../classEule_1_1Vector3.html#a1f0b4bb9f5533e3a134310d702bbfb33',1,'Eule::Vector3::zero()'],['../classEule_1_1Vector4.html#adf801d37181ff33a920f31536337ca07',1,'Eule::Vector4::zero()']]] -]; diff --git a/Doxygen/build/search/variables_2.html b/Doxygen/build/search/variables_2.html deleted file mode 100644 index 0c8a18c..0000000 --- a/Doxygen/build/search/variables_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_2.js b/Doxygen/build/search/variables_2.js deleted file mode 100644 index eefa6a0..0000000 --- a/Doxygen/build/search/variables_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['c_257',['c',['../classEule_1_1Matrix4x4.html#a68920de2728741859aa7cb3d245aa2c3',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/variables_3.html b/Doxygen/build/search/variables_3.html deleted file mode 100644 index 19a31fc..0000000 --- a/Doxygen/build/search/variables_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_3.js b/Doxygen/build/search/variables_3.js deleted file mode 100644 index f52ff39..0000000 --- a/Doxygen/build/search/variables_3.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['d_258',['d',['../classEule_1_1Matrix4x4.html#a7f21115e0597a25fbdb4d9784de0c988',1,'Eule::Matrix4x4']]], - ['deg2rad_259',['Deg2Rad',['../Constants_8h.html#a0688d82670a3ba9d40853859003c64df',1,'Constants.h']]], - ['down_260',['down',['../classEule_1_1Vector2.html#a7e60489f914c01c98839333dd41d8a49',1,'Eule::Vector2::down()'],['../classEule_1_1Vector3.html#ac44e82051be457c78f6428859482f848',1,'Eule::Vector3::down()'],['../classEule_1_1Vector4.html#a0f00c430129cb8edfb9c96693c39ab73',1,'Eule::Vector4::down()']]] -]; diff --git a/Doxygen/build/search/variables_4.html b/Doxygen/build/search/variables_4.html deleted file mode 100644 index bdc37be..0000000 --- a/Doxygen/build/search/variables_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_4.js b/Doxygen/build/search/variables_4.js deleted file mode 100644 index f11470b..0000000 --- a/Doxygen/build/search/variables_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['e_261',['e',['../classEule_1_1Matrix4x4.html#a19fb1d47aea5672da2fe1fc20500615a',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/variables_5.html b/Doxygen/build/search/variables_5.html deleted file mode 100644 index 6aa2249..0000000 --- a/Doxygen/build/search/variables_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_5.js b/Doxygen/build/search/variables_5.js deleted file mode 100644 index 684dd04..0000000 --- a/Doxygen/build/search/variables_5.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['f_262',['f',['../classEule_1_1Matrix4x4.html#a47b0d5273289c602f1ab4d3b963fe267',1,'Eule::Matrix4x4']]], - ['forward_263',['forward',['../classEule_1_1Vector3.html#a791d893f68f2aee85287ab3ab7612ff0',1,'Eule::Vector3::forward()'],['../classEule_1_1Vector4.html#a9ec10cf10c0edb934169211ad7fef821',1,'Eule::Vector4::forward()']]], - ['front_264',['FRONT',['../classEule_1_1TrapazoidalPrismCollider.html#ad8648ff086e60e5cae763c14b72cd8fd',1,'Eule::TrapazoidalPrismCollider']]], - ['future_265',['future',['../classEule_1_1Vector4.html#afefa0db0ba202f63e338506fd21a61e9',1,'Eule::Vector4']]] -]; diff --git a/Doxygen/build/search/variables_6.html b/Doxygen/build/search/variables_6.html deleted file mode 100644 index ce4a906..0000000 --- a/Doxygen/build/search/variables_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_6.js b/Doxygen/build/search/variables_6.js deleted file mode 100644 index b06a20e..0000000 --- a/Doxygen/build/search/variables_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['g_266',['g',['../classEule_1_1Matrix4x4.html#a1519f79fbfd4f33a0718ffc030fb6706',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/variables_7.html b/Doxygen/build/search/variables_7.html deleted file mode 100644 index 39ffd47..0000000 --- a/Doxygen/build/search/variables_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_7.js b/Doxygen/build/search/variables_7.js deleted file mode 100644 index b68c935..0000000 --- a/Doxygen/build/search/variables_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['h_267',['h',['../classEule_1_1Matrix4x4.html#ac48433ef3faa767919938e56803bfc41',1,'Eule::Matrix4x4']]], - ['half_5fpi_268',['HALF_PI',['../Constants_8h.html#ad0661cafa18be7ccadefb27b6b809264',1,'Constants.h']]] -]; diff --git a/Doxygen/build/search/variables_8.html b/Doxygen/build/search/variables_8.html deleted file mode 100644 index 37a2edd..0000000 --- a/Doxygen/build/search/variables_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_8.js b/Doxygen/build/search/variables_8.js deleted file mode 100644 index 76fa13c..0000000 --- a/Doxygen/build/search/variables_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['i_269',['i',['../classEule_1_1Matrix4x4.html#afb1b52d2d395e1d4a099556fac3918dc',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/variables_9.html b/Doxygen/build/search/variables_9.html deleted file mode 100644 index 21e5a4f..0000000 --- a/Doxygen/build/search/variables_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_9.js b/Doxygen/build/search/variables_9.js deleted file mode 100644 index 40318bc..0000000 --- a/Doxygen/build/search/variables_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['j_270',['j',['../classEule_1_1Matrix4x4.html#a6ad97bdfe3f070fd4d1d0ebc2ee1309a',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/variables_a.html b/Doxygen/build/search/variables_a.html deleted file mode 100644 index 1f65055..0000000 --- a/Doxygen/build/search/variables_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_a.js b/Doxygen/build/search/variables_a.js deleted file mode 100644 index 01b0687..0000000 --- a/Doxygen/build/search/variables_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['k_271',['k',['../classEule_1_1Matrix4x4.html#af93a84acffc7d5282653b7b591633874',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/variables_b.html b/Doxygen/build/search/variables_b.html deleted file mode 100644 index c02d066..0000000 --- a/Doxygen/build/search/variables_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_b.js b/Doxygen/build/search/variables_b.js deleted file mode 100644 index bac0f68..0000000 --- a/Doxygen/build/search/variables_b.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['l_272',['l',['../classEule_1_1Matrix4x4.html#a9a18b42500a1f9c551c7f27039cb6a67',1,'Eule::Matrix4x4']]], - ['left_273',['left',['../classEule_1_1Vector2.html#a4ad2191854a9fdbc8dae0967b3a48be5',1,'Eule::Vector2::left()'],['../classEule_1_1Vector3.html#a37949a2f74ceb05ea1797be34c42989a',1,'Eule::Vector3::left()'],['../classEule_1_1Vector4.html#a354e05fd3b3a38b530258b3247c544d1',1,'Eule::Vector4::left()'],['../classEule_1_1TrapazoidalPrismCollider.html#a2d1fb0b58a8562c1869a8dbef330c22b',1,'Eule::TrapazoidalPrismCollider::LEFT()']]] -]; diff --git a/Doxygen/build/search/variables_c.html b/Doxygen/build/search/variables_c.html deleted file mode 100644 index 4b866c6..0000000 --- a/Doxygen/build/search/variables_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_c.js b/Doxygen/build/search/variables_c.js deleted file mode 100644 index 0c73cd5..0000000 --- a/Doxygen/build/search/variables_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['m_274',['m',['../classEule_1_1Matrix4x4.html#a337d6bb2a36f36cd4620cdd35555893d',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/variables_d.html b/Doxygen/build/search/variables_d.html deleted file mode 100644 index 84d878b..0000000 --- a/Doxygen/build/search/variables_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_d.js b/Doxygen/build/search/variables_d.js deleted file mode 100644 index 5a64e0a..0000000 --- a/Doxygen/build/search/variables_d.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['n_275',['n',['../classEule_1_1Matrix4x4.html#a4d6df21744055ee87479591b619af33d',1,'Eule::Matrix4x4']]] -]; diff --git a/Doxygen/build/search/variables_e.html b/Doxygen/build/search/variables_e.html deleted file mode 100644 index b0d9b7b..0000000 --- a/Doxygen/build/search/variables_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_e.js b/Doxygen/build/search/variables_e.js deleted file mode 100644 index c61865f..0000000 --- a/Doxygen/build/search/variables_e.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['o_276',['o',['../classEule_1_1Matrix4x4.html#a9e813c2000f912ba2b16ea19d387565b',1,'Eule::Matrix4x4']]], - ['one_277',['one',['../classEule_1_1Vector2.html#a2651455a1339e1d61151538f986aa19b',1,'Eule::Vector2::one()'],['../classEule_1_1Vector3.html#a46a389aa258dc615650ffd7e98e3e482',1,'Eule::Vector3::one()'],['../classEule_1_1Vector4.html#a41087d79654271a580c8e5705825b2ed',1,'Eule::Vector4::one()']]] -]; diff --git a/Doxygen/build/search/variables_f.html b/Doxygen/build/search/variables_f.html deleted file mode 100644 index a708dbf..0000000 --- a/Doxygen/build/search/variables_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/Doxygen/build/search/variables_f.js b/Doxygen/build/search/variables_f.js deleted file mode 100644 index 785ded9..0000000 --- a/Doxygen/build/search/variables_f.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['p_278',['p',['../classEule_1_1Matrix4x4.html#a3fdccd317c5ea363b91f6d8096b28bd7',1,'Eule::Matrix4x4']]], - ['past_279',['past',['../classEule_1_1Vector4.html#a5533bb69dbc4714fd53aaf1e0db9bf99',1,'Eule::Vector4']]], - ['pi_280',['PI',['../Constants_8h.html#a299aabc5fc8285cbf99025330a3d0d0d',1,'Constants.h']]], - ['pos_281',['pos',['../structEule_1_1Rect.html#a8013088ed66af106df10acd7ded49bc7',1,'Eule::Rect']]] -]; diff --git a/Doxygen/build/splitbar.png b/Doxygen/build/splitbar.png deleted file mode 100644 index fe895f2c58179b471a22d8320b39a4bd7312ec8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T diff --git a/Doxygen/build/structEule_1_1Rect-members.html b/Doxygen/build/structEule_1_1Rect-members.html deleted file mode 100644 index fee6b52..0000000 --- a/Doxygen/build/structEule_1_1Rect-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -Leonetienne/Eule: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Leonetienne/Eule -
    -
    Homemade math library, mainly targetted towards computer graphics
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    Eule::Rect Member List
    -
    -
    - -

    This is the complete list of members for Eule::Rect, including all inherited members.

    - - - -
    posEule::Rect
    sizeEule::Rect
    - - - - diff --git a/Doxygen/build/structEule_1_1Rect.html b/Doxygen/build/structEule_1_1Rect.html deleted file mode 100644 index c39ac54..0000000 --- a/Doxygen/build/structEule_1_1Rect.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule::Rect Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Leonetienne/Eule -
    -
    Homemade math library, mainly targetted towards computer graphics
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    Eule::Rect Struct Reference
    -
    -
    - -

    Trivial data structure representing a rectangle. - More...

    - -

    #include <Rect.h>

    -
    -Collaboration diagram for Eule::Rect:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - - - - - - -

    -Public Attributes

    Vector2d pos
     
    Vector2d size
     
    -

    Detailed Description

    -

    Trivial data structure representing a rectangle.

    - -

    Definition at line 8 of file Rect.h.

    -

    Member Data Documentation

    - -

    ◆ pos

    - -
    -
    - - - - -
    Vector2d Eule::Rect::pos
    -
    - -

    Definition at line 10 of file Rect.h.

    - -
    -
    - -

    ◆ size

    - -
    -
    - - - - -
    Vector2d Eule::Rect::size
    -
    - -

    Definition at line 11 of file Rect.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/Doxygen/build/structEule_1_1Rect__coll__graph.map b/Doxygen/build/structEule_1_1Rect__coll__graph.map deleted file mode 100644 index 3926881..0000000 --- a/Doxygen/build/structEule_1_1Rect__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Doxygen/build/structEule_1_1Rect__coll__graph.md5 b/Doxygen/build/structEule_1_1Rect__coll__graph.md5 deleted file mode 100644 index 885022f..0000000 --- a/Doxygen/build/structEule_1_1Rect__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -58b51022f8ff2d02cc635fbfc909c27e \ No newline at end of file diff --git a/Doxygen/build/structEule_1_1Rect__coll__graph.png b/Doxygen/build/structEule_1_1Rect__coll__graph.png deleted file mode 100644 index 4131c5b3260cc97b840a8be0eb3ca8a6f29bc7e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8014 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 IZSvuN0D1S!`~Uy| diff --git a/Doxygen/build/sync_off.png b/Doxygen/build/sync_off.png deleted file mode 100644 index 3b443fc62892114406e3d399421b2a881b897acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* diff --git a/Doxygen/build/sync_on.png b/Doxygen/build/sync_on.png deleted file mode 100644 index e08320fb64e6fa33b573005ed6d8fe294e19db76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 diff --git a/Doxygen/build/tab_a.png b/Doxygen/build/tab_a.png deleted file mode 100644 index 3b725c41c5a527a3a3e40097077d0e206a681247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 diff --git a/Doxygen/build/tab_b.png b/Doxygen/build/tab_b.png deleted file mode 100644 index e2b4a8638cb3496a016eaed9e16ffc12846dea18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ diff --git a/Doxygen/build/tabs.css b/Doxygen/build/tabs.css deleted file mode 100644 index 7d45d36..0000000 --- a/Doxygen/build/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/Doxygen/build/version_8h.html b/Doxygen/build/version_8h.html deleted file mode 100644 index a948933..0000000 --- a/Doxygen/build/version_8h.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/version.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Leonetienne/Eule -
    -
    Homemade math library, mainly targetted towards computer graphics
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    version.h File Reference
    -
    - - - - - diff --git a/Doxygen/build/version_8h_source.html b/Doxygen/build/version_8h_source.html deleted file mode 100644 index 15a4602..0000000 --- a/Doxygen/build/version_8h_source.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/version.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Leonetienne/Eule -
    -
    Homemade math library, mainly targetted towards computer graphics
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    version.h
    -
    -
    -Go to the documentation of this file.
    1 #pragma once
    -
    2 #define EULE_VERSION (0.1)
    -
    - - - - diff --git a/Doxygen/build/x64_2Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html b/Doxygen/build/x64_2Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html deleted file mode 100644 index 9886e6e..0000000 --- a/Doxygen/build/x64_2Debug_2Eule_8vcxproj_8FileListAbsolute_8txt.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/x64/Debug/Eule.vcxproj.FileListAbsolute.txt File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Leonetienne/Eule -
    -
    Homemade math library, mainly targetted towards computer graphics
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Eule/x64/Debug/Eule.vcxproj.FileListAbsolute.txt File Reference
    -
    -
    -
    - - - - diff --git a/Doxygen/build/x64_2Release_2Eule_8vcxproj_8FileListAbsolute_8txt.html b/Doxygen/build/x64_2Release_2Eule_8vcxproj_8FileListAbsolute_8txt.html deleted file mode 100644 index 75a8c88..0000000 --- a/Doxygen/build/x64_2Release_2Eule_8vcxproj_8FileListAbsolute_8txt.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -Leonetienne/Eule: Eule/x64/Release/Eule.vcxproj.FileListAbsolute.txt File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Leonetienne/Eule -
    -
    Homemade math library, mainly targetted towards computer graphics
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Eule/x64/Release/Eule.vcxproj.FileListAbsolute.txt File Reference
    -
    -
    -
    - - - -