Robert Bragg
eb438dd499
[cogl-matrix] Import Mesa's matrix manipulation code
...
This pulls in code from Mesa to improve our matrix manipulation support. It
includes support for calculating the inverse of matrices based on top of a
matrix categorizing system that allows optimizing certain matrix types.
(the main thing we were after) but also adds some optimisations for
rotations.
Changes compared to the original code from Mesa:
- Coding style is consistent with the rest of Cogl
- Instead of allocating matrix->m and matrix->inv using malloc, our public
CoglMatrix typedef is large enough to directly contain the matrix, its
inverse, a type and a set of flags.
- Instead of having a _math_matrix_analyse which updates the type, flags and
inverse, we have _math_matrix_update_inverse which essentially does the
same thing (internally making use of _math_matrix_update_type_and_flags())
but with additional guards in place to bail out when the inverse matrix is
still valid.
- When initializing a matrix with the identity matrix we don't immediately
initialize the inverse matrix; rather we just set the dirty flag for the
inverse (since it's likely the user won't request the inverse of the
identity matrix)
2009-11-04 03:34:04 +00:00
..
2009-11-04 03:34:04 +00:00
2009-10-16 18:58:50 +01:00
2009-10-16 18:58:50 +01:00
2009-10-16 18:58:50 +01:00
2009-10-16 18:58:50 +01:00
2009-10-18 17:11:42 +01:00
2009-10-16 18:58:50 +01:00
2009-10-16 18:58:50 +01:00
2009-10-16 18:58:50 +01:00
2009-11-02 16:55:02 +00:00
2009-10-23 13:38:40 +01:00
2009-10-14 11:31:30 +01:00
2009-10-21 17:44:44 +01:00
2009-01-20 18:47:50 +00:00
2009-05-27 13:01:31 +01:00
2009-05-27 13:01:31 +01:00
2009-09-07 12:44:06 +01:00
2009-08-25 12:16:41 +01:00
2009-11-04 03:23:20 +00:00
2009-10-16 18:58:47 +01:00
2009-01-23 13:08:46 +00:00
2009-03-16 15:00:55 +00:00
2009-06-19 16:38:35 +01:00
2009-06-19 16:38:35 +01:00
2009-01-20 16:42:49 +00:00
2009-03-16 15:00:55 +00:00
2009-02-20 12:09:07 +00:00
2009-03-16 15:00:55 +00:00
2009-06-19 16:38:35 +01:00
2009-06-19 16:38:35 +01:00
2009-06-19 16:38:35 +01:00
2009-06-19 16:38:35 +01:00
2009-10-21 15:16:43 +01:00
2009-01-20 16:42:49 +00:00
2009-01-20 16:20:54 +00:00
2008-12-05 13:13:37 +00:00
2009-10-23 17:32:18 +01:00
2009-10-14 11:31:29 +01:00
2009-02-20 12:09:07 +00:00
2009-01-14 15:03:30 +00:00
2009-10-23 17:32:18 +01:00
2009-10-14 11:31:48 +01:00
2009-10-26 15:09:07 +00:00
2009-10-14 11:31:30 +01:00
2009-06-15 12:41:13 +01:00
2009-05-14 15:53:59 +01:00
2009-02-20 12:09:07 +00:00
2009-03-16 15:00:55 +00:00
2009-10-22 15:51:06 +01:00
2009-03-16 15:00:55 +00:00
2009-10-26 16:29:31 +00:00
2009-06-29 21:37:02 +02:00
2009-09-22 17:55:04 +01:00
2009-05-28 17:18:13 +01:00
2009-09-24 21:41:49 +01:00
2009-07-21 09:22:38 +01:00
2009-05-29 12:40:23 +01:00
2007-08-20 20:16:15 +00:00
2009-06-19 13:12:05 +01:00
2009-06-19 13:12:05 +01:00
2009-06-18 14:20:28 +01:00
2008-10-30 17:04:34 +00:00
2009-10-14 11:31:30 +01:00
2009-10-14 11:31:29 +01:00
2009-03-10 12:38:04 +00:00
2009-03-10 12:38:04 +00:00
2009-10-23 17:32:18 +01:00
2009-10-14 11:31:30 +01:00
2009-03-16 15:40:18 +00:00
2009-03-16 15:40:18 +00:00
2009-10-20 16:18:53 +01:00
2009-04-08 18:19:46 +01:00
2009-10-07 12:53:19 +01:00
2008-10-30 17:04:34 +00:00
2009-10-16 15:57:21 +01:00
2009-01-08 11:15:09 +00:00
2009-08-12 15:31:16 +01:00
2008-06-10 06:37:46 +00:00
2008-08-05 10:54:40 +00:00
2009-10-26 16:02:06 +00:00
2009-10-14 11:31:29 +01:00
2009-10-14 11:31:26 +01:00
2009-10-14 11:31:26 +01:00
2009-05-12 16:31:41 +01:00
2009-02-14 11:31:00 +00:00
2009-11-04 03:34:03 +00:00
2009-06-09 15:03:56 +01:00
2009-06-04 16:30:31 +01:00
2009-07-10 11:38:42 +01:00
2009-07-10 11:38:42 +01:00
2009-02-24 16:22:02 +00:00
2009-03-16 15:00:55 +00:00
2009-05-05 20:18:28 +01:00
2009-09-10 13:28:54 +01:00
2009-05-20 16:06:09 +01:00
2009-10-07 16:06:26 +01:00
2009-10-06 10:43:41 +01:00
2009-10-16 18:58:47 +01:00
2009-06-30 17:13:38 +01:00
2009-03-16 15:00:55 +00:00
2009-03-17 14:13:31 +00:00
2009-03-16 15:00:55 +00:00
2009-08-12 10:30:11 +01:00
2009-10-21 16:14:40 +01:00
2009-10-21 16:14:40 +01:00
2009-03-16 15:00:55 +00:00
2009-02-26 14:57:58 +00:00
2008-10-30 17:04:34 +00:00
2009-07-27 15:01:52 +01:00
2009-05-12 14:53:44 +01:00
2009-06-01 17:40:23 +01:00
2009-04-03 12:47:21 +01:00
2009-10-19 12:01:38 +01:00
2009-10-14 09:07:11 +01:00
2009-09-08 10:52:58 +01:00
2009-09-08 10:52:58 +01:00
2009-11-04 03:23:20 +00:00
2009-07-20 11:44:52 +01:00
2009-10-20 22:09:21 +01:00
2009-10-19 12:01:38 +01:00
2009-11-04 03:23:21 +00:00
2009-05-23 19:35:19 +01:00
2009-09-16 11:57:57 +01:00
2009-06-19 16:38:35 +01:00
2009-03-16 15:40:18 +00:00
2009-03-16 15:40:18 +00:00
2009-03-16 16:56:51 +00:00
2009-03-16 15:40:18 +00:00
2009-10-14 11:31:26 +01:00
2009-10-16 15:55:05 +01:00
2009-10-16 15:25:37 +01:00
2008-02-12 17:17:52 +00:00
2008-10-30 17:04:34 +00:00
2009-10-30 11:02:35 +00:00
2009-10-14 11:31:48 +01:00
2009-10-19 11:45:15 +01:00