1 <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML
1.0 Strict//EN'
2 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'
>
3 <html xmlns='http://www.w3.org/
1999/xhtml' xml:lang='en' lang='en'
>
5 <meta http-equiv='Content-Type' content='text/html; charset=utf-
8'
/>
6 <title>matrix operations
</title>
7 <link href='reno.css' type='text/css' rel='stylesheet'
/>
14 <h1>QVM: Quaternions, Vectors, Matrices
</h1>
16 <!-- Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc. -->
17 <!-- Distributed under the Boost Software License, Version 1.0. (See accompanying -->
18 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
19 <div class=
"RenoIncludeDIV"><div class=
"RenoAutoDIV"><h3>Matrix Operations
</h3>
21 <div class=
"RenoIncludeDIV"><p><span class=
"RenoEscape">#<!--<wiki>`#</wiki>--></span>include
<<span class=
"RenoLink"><a href=
"boost_qvm_mat_operations_hpp.html">boost/qvm/mat_operations.hpp
</a></span>></p>
24 namespace
<span class=
"RenoLink"><a href=
"qvm.html">qvm
</a></span>
26 <span class=
"RenoIncludeSPAN"> //*** Matrix operations ***
28 <span class=
"RenoIncludeSPAN"><span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
29 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><B
>::value
&&
30 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span> &&
31 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
32 template
<class A,class B
>
33 A
& <span class=
"RenoLink"><a href=
"assign_mat_mat_.html">assign
</a></span>( A
& a, B const
& b );
</span>
35 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
36 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><R
>::value
&& <span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&&
37 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><R
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span> &&
38 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><R
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
39 template
<class R,class A
>
40 R
<span class=
"RenoLink"><a href=
"convert_to_mat_.html">convert_to
</a></span>( A const
& a );
</span>
42 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
43 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><B
>::value
&&
44 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span> &&
45 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
46 template
<class A,class B
>
47 A
& <span class=
"RenoLink"><a href=
"operator_sub_eq_mat_mat_.html">operator-=
</a></span>( A
& a, B const
& b );
</span>
49 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
50 template
<class A
>
51 typename
<span class=
"RenoLink"><a href=
"deduce_mat.html">deduce_mat
</a></span><A
>::type
52 <span class=
"RenoLink"><a href=
"operator_minus_mat_.html">operator-
</a></span>( A const
& a );
</span>
54 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
55 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><B
>::value
&&
56 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span> &&
57 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
58 template
<class A,class B
>
59 typename
<span class=
"RenoLink"><a href=
"deduce_mat2.html">deduce_mat2
</a></span><A,B,
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>,
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>>::type
60 <span class=
"RenoLink"><a href=
"operator_minus_mat_mat_.html">operator-
</a></span>( A const
& a, B const
& b );
</span>
62 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
63 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><B
>::value
&&
64 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span> &&
65 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
66 template
<class A,class B
>
67 A
& <span class=
"RenoLink"><a href=
"operator_add_mat_mat_.html">operator+=
</a></span>( A
& a, B const
& b );
</span>
69 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
70 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><B
>::value
&&
71 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span> &&
72 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
73 template
<class A,class B
>
74 typename
<span class=
"RenoLink"><a href=
"deduce_mat2.html">deduce_mat2
</a></span><A,B,
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>,
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>>::type
75 <span class=
"RenoLink"><a href=
"operator_plus_mat_mat_.html">operator+
</a></span>( A const
& a, B const
& b );
</span>
77 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_scalar.html">is_scalar
</a></span><B
>::value
78 template
<class A,class B
>
79 A
& <span class=
"RenoLink"><a href=
"operator_div_eq_mat_scalar_.html">operator/=
</a></span>( A
& a, B b );
</span>
81 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_scalar.html">is_scalar
</a></span><B
>::value
82 template
<class A,class B
>
83 typename
<span class=
"RenoLink"><a href=
"deduce_mat.html">deduce_mat
</a></span><A
>::type
84 <span class=
"RenoLink"><a href=
"operator_over_mat_scalar_.html">operator/
</a></span>( A const
& a, B b );
</span>
86 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
87 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><B
>::value
&&
88 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span> &&
89 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span> &&
90 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
91 template
<class A,class B
>
92 A
& <span class=
"RenoLink"><a href=
"operator_mul_eq_mat_mat_.html">operator*=
</a></span>( A
& a, B const
& b );
</span>
94 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_scalar.html">is_scalar
</a></span><B
>::value
95 template
<class A,class B
>
96 A
& <span class=
"RenoLink"><a href=
"operator_mul_eq_mat_scalar_.html">operator*=
</a></span>( A
& a, B b );
</span>
98 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
99 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><B
>::value
&&
100 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>
101 template
<class A,class B
>
102 typename
<span class=
"RenoLink"><a href=
"deduce_mat2.html">deduce_mat2
</a></span><A,B,
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>,
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>>::type
103 <span class=
"RenoLink"><a href=
"operator_times_mat_mat_.html">operator*
</a></span>( A const
& a, B const
& b );
</span>
105 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_scalar.html">is_scalar
</a></span><B
>::value
106 template
<class A,class B
>
107 typename
<span class=
"RenoLink"><a href=
"deduce_mat.html">deduce_mat
</a></span><A
>::type
108 <span class=
"RenoLink"><a href=
"operator_times_mat_scalar_.html">operator*
</a></span>( A const
& a, B b );
</span>
110 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
111 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><B
>::value
&&
112 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span> &&
113 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
114 template
<class A,class B
>
115 bool
<span class=
"RenoLink"><a href=
"operator_eq_mat_mat_.html">operator==
</a></span>( A const
& a, B const
& b );
</span>
117 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
118 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><B
>::value
&&
119 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span> &&
120 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
121 template
<class A,class B
>
122 bool
<span class=
"RenoLink"><a href=
"operator_not_eq_mat_mat_.html">operator!=
</a></span>( A const
& a, B const
& b );
</span>
124 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
125 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><B
>::value
&&
126 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span> &&
127 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
128 template
<class A,class B,class Cmp
>
129 bool
<span class=
"RenoLink"><a href=
"cmp_mat_mat_.html">cmp
</a></span>( A const
& a, B const
& b, Cmp pred );
</span>
131 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
132 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_scalar.html">is_scalar
</a></span><B
>::value
133 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
135 template
<class A,class B
>
136 typename
<span class=
"RenoLink"><a href=
"deduce_mat.html">deduce_mat
</a></span><A
>::type
137 <span class=
"RenoLink"><a href=
"inverse_mat_.html">inverse
</a></span>( A const
& a, B det );
139 template
<class A
>
140 typename
<span class=
"RenoLink"><a href=
"deduce_mat.html">deduce_mat
</a></span><A
>::type
141 <span class=
"RenoLink"><a href=
"inverse_mat_.html">inverse
</a></span>( A const
& a );
</span>
143 <span class=
"RenoIncludeSPAN">template
<class T,int D
>
144 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"zero_mat.html">zero_mat
</a></span>();
146 template
<class T,int R,int C
>
147 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"zero_mat.html">zero_mat
</a></span>();
</span>
149 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
150 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
151 template
<class A
>
152 void
<span class=
"RenoLink"><a href=
"set_zero_mat_.html">set_zero
</a></span>( A
& a );
</span>
154 <span class=
"RenoIncludeSPAN">template
<class S,int D
>
155 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"identity_mat.html">identity_mat
</a></span>();
</span>
157 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
158 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&&
159 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>
160 template
<class A
>
161 void
<span class=
"RenoLink"><a href=
"set_identity_mat_.html">set_identity
</a></span>( A
& a );
</span>
163 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
164 //
<span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"vec_traits.html">vec_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"vec_traits_Vector_dim.html">dim
</a></span>==
3
165 template
<int Dim,class A,class Angle
>
166 -unspecified-return-type
167 <span class=
"RenoLink"><a href=
"rot_mat.html">rot_mat
</a></span>( A const
& axis, Angle angle );
</span>
169 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
170 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>>=
3 &&
171 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span> &&
172 //
<span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><B
>::value
&& <span class=
"RenoLink"><a href=
"vec_traits.html">vec_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"vec_traits_Vector_dim.html">dim
</a></span>==
3
173 template
<class A
>
174 void
<span class=
"RenoLink"><a href=
"set_rot_mat_vec_scalar_.html">set_rot
</a></span>( A
& a, B const
& axis, typename
<span class=
"RenoLink"><a href=
"vec_traits.html">vec_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"vec_traits_V_scalar_type.html">scalar_type
</a></span> angle );
</span>
176 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
177 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>>=
3 &&
178 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span> &&
179 //
<span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><B
>::value
&& <span class=
"RenoLink"><a href=
"vec_traits.html">vec_traits
</a></span><B
>::
<span class=
"RenoLink"><a href=
"vec_traits_Vector_dim.html">dim
</a></span>==
3
180 template
<class A,class B
>
181 void
<span class=
"RenoLink"><a href=
"rotate_mat_vec_scalar_.html">rotate
</a></span>( A
& a, B const
& axis, typename
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_M_scalar_type.html">scalar_type
</a></span> angle );
</span>
183 <span class=
"RenoIncludeSPAN">template
<int Dim,class Angle
>
184 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"rotx_mat_scalar_.html">rotx_mat
</a></span>( Angle const
& angle );
</span>
186 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
187 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>>=
3 &&
188 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
189 template
<class A
>
190 void
<span class=
"RenoLink"><a href=
"set_rotx_mat_scalar_.html">set_rotx
</a></span>( A
& a, typename
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_M_scalar_type.html">scalar_type
</a></span> angle );
</span>
192 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
193 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>>=
3 &&
194 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
195 template
<class A
>
196 void
<span class=
"RenoLink"><a href=
"rotate_x_mat_scalar_.html">rotate_x
</a></span>( A
& a, typename
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_M_scalar_type.html">scalar_type
</a></span> angle );
</span>
198 <span class=
"RenoIncludeSPAN">template
<int Dim,class Angle
>
199 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"roty_mat_scalar_.html">roty_mat
</a></span>( Angle const
& angle );
</span>
201 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
202 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>>=
3 &&
203 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
204 template
<class A
>
205 void
<span class=
"RenoLink"><a href=
"set_roty_mat_scalar_.html">set_roty
</a></span>( A
& a, typename
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_M_scalar_type.html">scalar_type
</a></span> angle );
</span>
207 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
208 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>>=
3 &&
209 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
210 template
<class A
>
211 void
<span class=
"RenoLink"><a href=
"rotate_y_mat_scalar_.html">rotate_y
</a></span>( A
& a, typename
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_M_scalar_type.html">scalar_type
</a></span> angle );
</span>
213 <span class=
"RenoIncludeSPAN">template
<int Dim,class Angle
>
214 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"rotz_mat_scalar_.html">rotz_mat
</a></span>( Angle const
& angle );
</span>
216 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
217 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>>=
3 &&
218 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
219 template
<class A
>
220 void
<span class=
"RenoLink"><a href=
"set_rotz_mat_scalar_.html">set_rotz
</a></span>( A
& a, typename
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_M_scalar_type.html">scalar_type
</a></span> angle );
</span>
222 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
223 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>>=
3 &&
224 //
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
225 template
<class A
>
226 void
<span class=
"RenoLink"><a href=
"rotate_z_mat_scalar_.html">rotate_z
</a></span>( A
& a, typename
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_M_scalar_type.html">scalar_type
</a></span> angle );
</span>
228 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
229 //
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_rows.html">rows
</a></span>==
<span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_Matrix_cols.html">cols
</a></span>
230 template
<class A
>
231 <span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"mat_traits_M_scalar_type.html">scalar_type
</a></span>
232 <span class=
"RenoLink"><a href=
"determinant.html">determinant
</a></span>( A const
& a );
</span>
234 <span class=
"RenoIncludeSPAN">template
<class T
>
235 -unspecified-return-type
236 <span class=
"RenoLink"><a href=
"perspective_lh.html">perspective_lh
</a></span>( T fov_y, T aspect, T zn, T zf );
</span>
238 <span class=
"RenoIncludeSPAN">template
<class T
>
239 -unspecified-return-type
240 <span class=
"RenoLink"><a href=
"perspective_rh.html">perspective_rh
</a></span>( T fov_y, T aspect, T zn, T zf );
</span>
242 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
243 template
<class A
>
244 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"mref.html">mref
</a></span>( A
& a );
</span>
246 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
247 template
<class Scalar,class A
>
248 -unspecified-return_type-
<span class=
"RenoLink"><a href=
"scalar_cast_mat_.html">scalar_cast
</a></span>( A const
& a );
</span></span></span>
251 </div><p>This is a list of all matrix operations implemented by Boost QVM -- click on functions for individual documentation. General notes:
</p>
252 <div><ul><li> All functions use
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">SFINAE/enable_if
</a></span>. They are available for any C++ type but only if it has been registered through the
<i><span class=
"RenoLink"><a href=
"mat_traits.html">mat_traits
</a></span></i> template.
</li>
253 <li> When objects are returned by value their type is deduced either by the
<i><span class=
"RenoLink"><a href=
"deduce_mat.html">deduce_mat
</a></span></i> template (for unary functions) or the
<i><span class=
"RenoLink"><a href=
"deduce_mat2.html">deduce_mat2
</a></span></i> template (for binary functions).
</li>
254 <li> The type of scalar arguments is deduced independently from the type of the matrix argument, so they are not required to match. Scalar arguments must convert implicitly to the matrix scalar type.
</li>
256 </div><div class=
"RenoAutoDIV"><div class=
"RenoHR"><hr/></div>
257 See also:
<span class=
"RenoPageList"><a href=
"index.html">Boost QVM
</a> |
<a href=
"Synopsis.html">Synopsis
</a></span>
259 <!-- Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc. -->
260 <!-- Distributed under the Boost Software License, Version 1.0. (See accompanying -->
261 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
264 <a class=
"logo" href=
"http://jigsaw.w3.org/css-validator/check/referer"><img class=
"logo_pic" src=
"valid-css.png" alt=
"Valid CSS" height=
"31" width=
"88"/></a>
265 <a class=
"logo" href=
"http://validator.w3.org/check?uri=referer"><img class=
"logo_pic" src=
"valid-xhtml.png" alt=
"Valid XHTML 1.0" height=
"31" width=
"88"/></a>
266 <small>Copyright (c)
2008-
2016 by Emil Dotchevski and Reverge Studios, Inc.
<br/>
267 Distributed under the
<a href=
"http://www.boost.org/LICENSE_1_0.txt">Boost Software License, Version
1.0</a>.
</small>