PageRenderTime 50ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 1ms

/deps/glm-0.9.4.0/test/gtc/gtc_matrix_access.cpp

https://bitbucket.org/sturmh/dirtygraphics
C++ | 382 lines | 271 code | 103 blank | 8 comment | 62 complexity | bb5db3c5ea9b93b3cbd24714b1c5791a MD5 | raw file
  1. ///////////////////////////////////////////////////////////////////////////////////////////////////
  2. // OpenGL Mathematics Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net)
  3. ///////////////////////////////////////////////////////////////////////////////////////////////////
  4. // Created : 2010-09-16
  5. // Updated : 2011-05-07
  6. // Licence : This source is under MIT licence
  7. // File : test/gtc/matrix_access.cpp
  8. ///////////////////////////////////////////////////////////////////////////////////////////////////
  9. #include <glm/glm.hpp>
  10. #include <glm/gtc/matrix_access.hpp>
  11. int test_mat2x2_row_set()
  12. {
  13. int Error = 0;
  14. glm::mat2x2 m(1);
  15. m = glm::row(m, 0, glm::vec2( 0, 1));
  16. m = glm::row(m, 1, glm::vec2( 4, 5));
  17. Error += glm::row(m, 0) == glm::vec2( 0, 1) ? 0 : 1;
  18. Error += glm::row(m, 1) == glm::vec2( 4, 5) ? 0 : 1;
  19. return Error;
  20. }
  21. int test_mat2x2_col_set()
  22. {
  23. int Error = 0;
  24. glm::mat2x2 m(1);
  25. m = glm::column(m, 0, glm::vec2( 0, 1));
  26. m = glm::column(m, 1, glm::vec2( 4, 5));
  27. Error += glm::column(m, 0) == glm::vec2( 0, 1) ? 0 : 1;
  28. Error += glm::column(m, 1) == glm::vec2( 4, 5) ? 0 : 1;
  29. return Error;
  30. }
  31. int test_mat2x3_row_set()
  32. {
  33. int Error = 0;
  34. glm::mat2x3 m(1);
  35. m = glm::row(m, 0, glm::vec2( 0, 1));
  36. m = glm::row(m, 1, glm::vec2( 4, 5));
  37. m = glm::row(m, 2, glm::vec2( 8, 9));
  38. Error += glm::row(m, 0) == glm::vec2( 0, 1) ? 0 : 1;
  39. Error += glm::row(m, 1) == glm::vec2( 4, 5) ? 0 : 1;
  40. Error += glm::row(m, 2) == glm::vec2( 8, 9) ? 0 : 1;
  41. return Error;
  42. }
  43. int test_mat2x3_col_set()
  44. {
  45. int Error = 0;
  46. glm::mat2x3 m(1);
  47. m = glm::column(m, 0, glm::vec3( 0, 1, 2));
  48. m = glm::column(m, 1, glm::vec3( 4, 5, 6));
  49. Error += glm::column(m, 0) == glm::vec3( 0, 1, 2) ? 0 : 1;
  50. Error += glm::column(m, 1) == glm::vec3( 4, 5, 6) ? 0 : 1;
  51. return Error;
  52. }
  53. int test_mat2x4_row_set()
  54. {
  55. int Error = 0;
  56. glm::mat2x4 m(1);
  57. m = glm::row(m, 0, glm::vec2( 0, 1));
  58. m = glm::row(m, 1, glm::vec2( 4, 5));
  59. m = glm::row(m, 2, glm::vec2( 8, 9));
  60. m = glm::row(m, 3, glm::vec2(12, 13));
  61. Error += glm::row(m, 0) == glm::vec2( 0, 1) ? 0 : 1;
  62. Error += glm::row(m, 1) == glm::vec2( 4, 5) ? 0 : 1;
  63. Error += glm::row(m, 2) == glm::vec2( 8, 9) ? 0 : 1;
  64. Error += glm::row(m, 3) == glm::vec2(12, 13) ? 0 : 1;
  65. return Error;
  66. }
  67. int test_mat2x4_col_set()
  68. {
  69. int Error = 0;
  70. glm::mat2x4 m(1);
  71. m = glm::column(m, 0, glm::vec4( 0, 1, 2, 3));
  72. m = glm::column(m, 1, glm::vec4( 4, 5, 6, 7));
  73. Error += glm::column(m, 0) == glm::vec4( 0, 1, 2, 3) ? 0 : 1;
  74. Error += glm::column(m, 1) == glm::vec4( 4, 5, 6, 7) ? 0 : 1;
  75. return Error;
  76. }
  77. int test_mat3x2_row_set()
  78. {
  79. int Error = 0;
  80. glm::mat3x2 m(1);
  81. m = glm::row(m, 0, glm::vec3( 0, 1, 2));
  82. m = glm::row(m, 1, glm::vec3( 4, 5, 6));
  83. Error += glm::row(m, 0) == glm::vec3( 0, 1, 2) ? 0 : 1;
  84. Error += glm::row(m, 1) == glm::vec3( 4, 5, 6) ? 0 : 1;
  85. return Error;
  86. }
  87. int test_mat3x2_col_set()
  88. {
  89. int Error = 0;
  90. glm::mat3x2 m(1);
  91. m = glm::column(m, 0, glm::vec2( 0, 1));
  92. m = glm::column(m, 1, glm::vec2( 4, 5));
  93. m = glm::column(m, 2, glm::vec2( 8, 9));
  94. Error += glm::column(m, 0) == glm::vec2( 0, 1) ? 0 : 1;
  95. Error += glm::column(m, 1) == glm::vec2( 4, 5) ? 0 : 1;
  96. Error += glm::column(m, 2) == glm::vec2( 8, 9) ? 0 : 1;
  97. return Error;
  98. }
  99. int test_mat3x3_row_set()
  100. {
  101. int Error = 0;
  102. glm::mat3x3 m(1);
  103. m = glm::row(m, 0, glm::vec3( 0, 1, 2));
  104. m = glm::row(m, 1, glm::vec3( 4, 5, 6));
  105. m = glm::row(m, 2, glm::vec3( 8, 9, 10));
  106. Error += glm::row(m, 0) == glm::vec3( 0, 1, 2) ? 0 : 1;
  107. Error += glm::row(m, 1) == glm::vec3( 4, 5, 6) ? 0 : 1;
  108. Error += glm::row(m, 2) == glm::vec3( 8, 9, 10) ? 0 : 1;
  109. return Error;
  110. }
  111. int test_mat3x3_col_set()
  112. {
  113. int Error = 0;
  114. glm::mat3x3 m(1);
  115. m = glm::column(m, 0, glm::vec3( 0, 1, 2));
  116. m = glm::column(m, 1, glm::vec3( 4, 5, 6));
  117. m = glm::column(m, 2, glm::vec3( 8, 9, 10));
  118. Error += glm::column(m, 0) == glm::vec3( 0, 1, 2) ? 0 : 1;
  119. Error += glm::column(m, 1) == glm::vec3( 4, 5, 6) ? 0 : 1;
  120. Error += glm::column(m, 2) == glm::vec3( 8, 9, 10) ? 0 : 1;
  121. return Error;
  122. }
  123. int test_mat3x4_row_set()
  124. {
  125. int Error = 0;
  126. glm::mat3x4 m(1);
  127. m = glm::row(m, 0, glm::vec3( 0, 1, 2));
  128. m = glm::row(m, 1, glm::vec3( 4, 5, 6));
  129. m = glm::row(m, 2, glm::vec3( 8, 9, 10));
  130. m = glm::row(m, 3, glm::vec3(12, 13, 14));
  131. Error += glm::row(m, 0) == glm::vec3( 0, 1, 2) ? 0 : 1;
  132. Error += glm::row(m, 1) == glm::vec3( 4, 5, 6) ? 0 : 1;
  133. Error += glm::row(m, 2) == glm::vec3( 8, 9, 10) ? 0 : 1;
  134. Error += glm::row(m, 3) == glm::vec3(12, 13, 14) ? 0 : 1;
  135. return Error;
  136. }
  137. int test_mat3x4_col_set()
  138. {
  139. int Error = 0;
  140. glm::mat3x4 m(1);
  141. m = glm::column(m, 0, glm::vec4( 0, 1, 2, 3));
  142. m = glm::column(m, 1, glm::vec4( 4, 5, 6, 7));
  143. m = glm::column(m, 2, glm::vec4( 8, 9, 10, 11));
  144. Error += glm::column(m, 0) == glm::vec4( 0, 1, 2, 3) ? 0 : 1;
  145. Error += glm::column(m, 1) == glm::vec4( 4, 5, 6, 7) ? 0 : 1;
  146. Error += glm::column(m, 2) == glm::vec4( 8, 9, 10, 11) ? 0 : 1;
  147. return Error;
  148. }
  149. int test_mat4x2_row_set()
  150. {
  151. int Error = 0;
  152. glm::mat4x2 m(1);
  153. m = glm::row(m, 0, glm::vec4( 0, 1, 2, 3));
  154. m = glm::row(m, 1, glm::vec4( 4, 5, 6, 7));
  155. Error += glm::row(m, 0) == glm::vec4( 0, 1, 2, 3) ? 0 : 1;
  156. Error += glm::row(m, 1) == glm::vec4( 4, 5, 6, 7) ? 0 : 1;
  157. return Error;
  158. }
  159. int test_mat4x2_col_set()
  160. {
  161. int Error = 0;
  162. glm::mat4x2 m(1);
  163. m = glm::column(m, 0, glm::vec2( 0, 1));
  164. m = glm::column(m, 1, glm::vec2( 4, 5));
  165. m = glm::column(m, 2, glm::vec2( 8, 9));
  166. m = glm::column(m, 3, glm::vec2(12, 13));
  167. Error += glm::column(m, 0) == glm::vec2( 0, 1) ? 0 : 1;
  168. Error += glm::column(m, 1) == glm::vec2( 4, 5) ? 0 : 1;
  169. Error += glm::column(m, 2) == glm::vec2( 8, 9) ? 0 : 1;
  170. Error += glm::column(m, 3) == glm::vec2(12, 13) ? 0 : 1;
  171. return Error;
  172. }
  173. int test_mat4x3_row_set()
  174. {
  175. int Error = 0;
  176. glm::mat4x3 m(1);
  177. m = glm::row(m, 0, glm::vec4( 0, 1, 2, 3));
  178. m = glm::row(m, 1, glm::vec4( 4, 5, 6, 7));
  179. m = glm::row(m, 2, glm::vec4( 8, 9, 10, 11));
  180. Error += glm::row(m, 0) == glm::vec4( 0, 1, 2, 3) ? 0 : 1;
  181. Error += glm::row(m, 1) == glm::vec4( 4, 5, 6, 7) ? 0 : 1;
  182. Error += glm::row(m, 2) == glm::vec4( 8, 9, 10, 11) ? 0 : 1;
  183. return Error;
  184. }
  185. int test_mat4x3_col_set()
  186. {
  187. int Error = 0;
  188. glm::mat4x3 m(1);
  189. m = glm::column(m, 0, glm::vec3( 0, 1, 2));
  190. m = glm::column(m, 1, glm::vec3( 4, 5, 6));
  191. m = glm::column(m, 2, glm::vec3( 8, 9, 10));
  192. m = glm::column(m, 3, glm::vec3(12, 13, 14));
  193. Error += glm::column(m, 0) == glm::vec3( 0, 1, 2) ? 0 : 1;
  194. Error += glm::column(m, 1) == glm::vec3( 4, 5, 6) ? 0 : 1;
  195. Error += glm::column(m, 2) == glm::vec3( 8, 9, 10) ? 0 : 1;
  196. Error += glm::column(m, 3) == glm::vec3(12, 13, 14) ? 0 : 1;
  197. return Error;
  198. }
  199. int test_mat4x4_row_set()
  200. {
  201. int Error = 0;
  202. glm::mat4 m(1);
  203. m = glm::row(m, 0, glm::vec4( 0, 1, 2, 3));
  204. m = glm::row(m, 1, glm::vec4( 4, 5, 6, 7));
  205. m = glm::row(m, 2, glm::vec4( 8, 9, 10, 11));
  206. m = glm::row(m, 3, glm::vec4(12, 13, 14, 15));
  207. Error += glm::row(m, 0) == glm::vec4( 0, 1, 2, 3) ? 0 : 1;
  208. Error += glm::row(m, 1) == glm::vec4( 4, 5, 6, 7) ? 0 : 1;
  209. Error += glm::row(m, 2) == glm::vec4( 8, 9, 10, 11) ? 0 : 1;
  210. Error += glm::row(m, 3) == glm::vec4(12, 13, 14, 15) ? 0 : 1;
  211. return Error;
  212. }
  213. int test_mat4x4_col_set()
  214. {
  215. int Error = 0;
  216. glm::mat4 m(1);
  217. m = glm::column(m, 0, glm::vec4( 0, 1, 2, 3));
  218. m = glm::column(m, 1, glm::vec4( 4, 5, 6, 7));
  219. m = glm::column(m, 2, glm::vec4( 8, 9, 10, 11));
  220. m = glm::column(m, 3, glm::vec4(12, 13, 14, 15));
  221. Error += glm::column(m, 0) == glm::vec4( 0, 1, 2, 3) ? 0 : 1;
  222. Error += glm::column(m, 1) == glm::vec4( 4, 5, 6, 7) ? 0 : 1;
  223. Error += glm::column(m, 2) == glm::vec4( 8, 9, 10, 11) ? 0 : 1;
  224. Error += glm::column(m, 3) == glm::vec4(12, 13, 14, 15) ? 0 : 1;
  225. return Error;
  226. }
  227. int test_mat4x4_row_get()
  228. {
  229. int Error = 0;
  230. glm::mat4 m(1);
  231. glm::vec4 A = glm::row(m, 0);
  232. Error += A == glm::vec4(1, 0, 0, 0) ? 0 : 1;
  233. glm::vec4 B = glm::row(m, 1);
  234. Error += B == glm::vec4(0, 1, 0, 0) ? 0 : 1;
  235. glm::vec4 C = glm::row(m, 2);
  236. Error += C == glm::vec4(0, 0, 1, 0) ? 0 : 1;
  237. glm::vec4 D = glm::row(m, 3);
  238. Error += D == glm::vec4(0, 0, 0, 1) ? 0 : 1;
  239. return Error;
  240. }
  241. int test_mat4x4_col_get()
  242. {
  243. int Error = 0;
  244. glm::mat4 m(1);
  245. glm::vec4 A = glm::column(m, 0);
  246. Error += A == glm::vec4(1, 0, 0, 0) ? 0 : 1;
  247. glm::vec4 B = glm::column(m, 1);
  248. Error += B == glm::vec4(0, 1, 0, 0) ? 0 : 1;
  249. glm::vec4 C = glm::column(m, 2);
  250. Error += C == glm::vec4(0, 0, 1, 0) ? 0 : 1;
  251. glm::vec4 D = glm::column(m, 3);
  252. Error += D == glm::vec4(0, 0, 0, 1) ? 0 : 1;
  253. return Error;
  254. }
  255. int main()
  256. {
  257. int Error = 0;
  258. Error += test_mat2x2_row_set();
  259. Error += test_mat2x2_col_set();
  260. Error += test_mat2x3_row_set();
  261. Error += test_mat2x3_col_set();
  262. Error += test_mat2x4_row_set();
  263. Error += test_mat2x4_col_set();
  264. Error += test_mat3x2_row_set();
  265. Error += test_mat3x2_col_set();
  266. Error += test_mat3x3_row_set();
  267. Error += test_mat3x3_col_set();
  268. Error += test_mat3x4_row_set();
  269. Error += test_mat3x4_col_set();
  270. Error += test_mat4x2_row_set();
  271. Error += test_mat4x2_col_set();
  272. Error += test_mat4x3_row_set();
  273. Error += test_mat4x3_col_set();
  274. Error += test_mat4x4_row_set();
  275. Error += test_mat4x4_col_set();
  276. Error += test_mat4x4_row_get();
  277. Error += test_mat4x4_col_get();
  278. return Error;
  279. }