]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/qvm/doc/vector_operations_reference.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / qvm / doc / vector_operations_reference.html
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'>
4 <head>
5 <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
6 <title>vector operations</title>
7 <link href='reno.css' type='text/css' rel='stylesheet'/>
8 </head>
9 <body>
10 <div class="body-0">
11 <div class="body-1">
12 <div class="body-2">
13 <div>
14 <h1>QVM: Quaternions, Vectors, Matrices</h1>
15 </div>
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>Vector Operations</h3>
20 </div>
21 <div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink"><a href="boost_qvm_vec_operations_hpp.html">boost/qvm/vec_operations.hpp</a></span>&gt;</p>
22 <pre>namespace boost
23 {
24 namespace <span class="RenoLink"><a href="qvm.html">qvm</a></span>
25 {
26 <span class="RenoIncludeSPAN"> //*** Vector operations ***
27
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_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;B&gt;::value &amp;&amp;
30 // <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>==<span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;B&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>
31 template &lt;class A,class B&gt;
32 A &amp; <span class="RenoLink"><a href="assign_vec_vec_.html">assign</a></span>( A &amp; a, B const &amp; b );</span>
33
34 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
35 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;R&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp;
36 // <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;R&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>==<span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>
37 template &lt;class R,class A&gt;
38 R <span class="RenoLink"><a href="convert_to_vec_.html">convert_to</a></span>( A const &amp; a );</span>
39
40 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
41 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;B&gt;::value &amp;&amp;
42 // <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>==<span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;B&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>
43 template &lt;class A,class B&gt;
44 A &amp; <span class="RenoLink"><a href="operator_sub_eq_vec_vec_.html">operator-=</a></span>( A &amp; a, B const &amp; b );</span>
45
46 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>: <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value
47 template &lt;class A&gt;
48 typename <span class="RenoLink"><a href="deduce_vec.html">deduce_vec</a></span>&lt;A&gt;::type
49 <span class="RenoLink"><a href="operator_minus_vec_.html">operator-</a></span>( A const &amp; a );</span>
50
51 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
52 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;B&gt;::value &amp;&amp;
53 // <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>==<span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;B&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>
54 template &lt;class A,class B&gt;
55 typename <span class="RenoLink"><a href="deduce_vec2.html">deduce_vec2</a></span>&lt;A,B,<span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>&gt;::type
56 <span class="RenoLink"><a href="operator_minus_vec_vec_.html">operator-</a></span>( A const &amp; a, B const &amp; b );</span>
57
58 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
59 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;B&gt;::value &amp;&amp;
60 // <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>==<span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;B&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>
61 template &lt;class A,class B&gt;
62 A &amp; <span class="RenoLink"><a href="operator_add_vec_vec_.html">operator+=</a></span>( A &amp; a, B const &amp; b );</span>
63
64 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
65 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;B&gt;::value &amp;&amp;
66 // <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>==<span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;B&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>
67 template &lt;class A,class B&gt;
68 typename <span class="RenoLink"><a href="deduce_vec2.html">deduce_vec2</a></span>&lt;A,B,<span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>&gt;::type
69 <span class="RenoLink"><a href="operator_plus_vec_vec_.html">operator+</a></span>( A const &amp; a, B const &amp; b );</span>
70
71 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>: <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_scalar.html">is_scalar</a></span>&lt;B&gt;::value
72 template &lt;class A,class B&gt;
73 A &amp; <span class="RenoLink"><a href="operator_div_eq_vec_scalar_.html">operator/=</a></span>( A &amp; a, B b );</span>
74
75 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>: <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_scalar.html">is_scalar</a></span>&lt;B&gt;::value
76 template &lt;class A,class B&gt;
77 typename <span class="RenoLink"><a href="deduce_vec.html">deduce_vec</a></span>&lt;A&gt;::type
78 <span class="RenoLink"><a href="operator_over_vec_scalar_.html">operator/</a></span>( A const &amp; a, B b );</span>
79
80 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>: <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_scalar.html">is_scalar</a></span>&lt;B&gt;::value
81 template &lt;class A,class B&gt;
82 A &amp; <span class="RenoLink"><a href="operator_mul_eq_vec_scalar_.html">operator*=</a></span>( A &amp; a, B b );</span>
83
84 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>: <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_scalar.html">is_scalar</a></span>&lt;B&gt;::value
85 template &lt;class A&gt;
86 typename <span class="RenoLink"><a href="deduce_vec.html">deduce_vec</a></span>&lt;A&gt;::type
87 <span class="RenoLink"><a href="operator_times_vec_scalar_.html">operator*</a></span>( A const &amp; a, B b );</span>
88
89 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
90 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;B&gt;::value &amp;&amp;
91 // <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>==<span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;B&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>
92 template &lt;class A,class B&gt;
93 bool <span class="RenoLink"><a href="operator_eq_vec_vec_.html">operator==</a></span>( A const &amp; a, B const &amp; b );</span>
94
95 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
96 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;B&gt;::value &amp;&amp;
97 // <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>==<span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;B&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>
98 template &lt;class A,class B&gt;
99 bool <span class="RenoLink"><a href="operator_not_eq_vec_vec_.html">operator!=</a></span>( A const &amp; a, B const &amp; b );</span>
100
101 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
102 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;B&gt;::value &amp;&amp;
103 // <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>==<span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;B&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>
104 template &lt;class A,class B,class Cmp&gt;
105 bool <span class="RenoLink"><a href="cmp_mat_mat_.html">cmp</a></span>( A const &amp; a, B const &amp; b, Cmp pred );</span>
106
107 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
108 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value
109 template &lt;class A&gt;
110 typename <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_V_scalar_type.html">scalar_type</a></span>
111 <span class="RenoLink"><a href="mag_sqr_vec_.html">mag_sqr</a></span>( A const &amp; a );</span>
112
113 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
114 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value
115 template &lt;class A&gt;
116 typename <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_V_scalar_type.html">scalar_type</a></span>
117 <span class="RenoLink"><a href="mag_vec_.html">mag</a></span>( A const &amp; a );</span>
118
119 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
120 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value
121 template &lt;class A&gt;
122 typename <span class="RenoLink"><a href="deduce_vec.html">deduce_vec</a></span>&lt;A&gt;::type
123 <span class="RenoLink"><a href="normalized_vec_.html">normalized</a></span>( A const &amp; a );</span>
124
125 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
126 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value
127 template &lt;class A&gt;
128 void <span class="RenoLink"><a href="normalize_vec_.html">normalize</a></span>( A &amp; a );</span>
129
130 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
131 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;B&gt;::value &amp;&amp;
132 // <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>==<span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;B&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>
133 template &lt;class A,class B&gt;
134 typename <span class="RenoLink"><a href="deduce_scalar.html">deduce_scalar</a></span>&lt;A,B&gt;::type
135 <span class="RenoLink"><a href="dot_vec_vec_.html">dot</a></span>( A const &amp; a, B const &amp; b );</span>
136
137 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
138 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value &amp;&amp; <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;B&gt;::value &amp;&amp;
139 // <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;A&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>==3 &amp;&amp; <span class="RenoLink"><a href="vec_traits.html">vec_traits</a></span>&lt;B&gt;::<span class="RenoLink"><a href="vec_traits_Vector_dim.html">dim</a></span>==3
140 template &lt;class A,class B&gt;
141 typename <span class="RenoLink"><a href="deduce_vec2.html">deduce_vec2</a></span>&lt;A,B,3&gt;::type
142 <span class="RenoLink"><a href="cross.html">cross</a></span>( A const &amp; a, B const &amp; b );</span>
143
144 <span class="RenoIncludeSPAN">template &lt;class T,int S&gt;
145 -unspecified-return-type- <span class="RenoLink"><a href="zero_vec.html">zero_vec</a></span>();</span>
146
147 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>:
148 // <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value
149 template &lt;class A&gt;
150 void <span class="RenoLink"><a href="set_zero_vec_.html">set_zero</a></span>( A &amp; a );</span>
151
152 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>: <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value
153 template &lt;class A&gt;
154 -unspecified-return-type- <span class="RenoLink"><a href="vref.html">vref</a></span>( A &amp; a );</span>
155
156 <span class="RenoIncludeSPAN">//Only <span class="RenoLink"><a href="SFINAE_enable_if.html">enabled if</a></span>: <span class="RenoLink"><a href="is_vec.html">is_vec</a></span>&lt;A&gt;::value
157 template &lt;class Scalar,class A&gt;
158 -unspecified-return_type- <span class="RenoLink"><a href="scalar_cast_vec_.html">scalar_cast</a></span>( A const &amp; a );</span></span></span>
159 }
160 }</pre>
161 </div><p>This is a list of all vector operations implemented by Boost QVM -- click on functions for individual documentation. General notes:</p>
162 <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="vec_traits.html">vec_traits</a></span></i> template.</li>
163 <li> When objects are returned by value their type is deduced either by the <i><span class="RenoLink"><a href="deduce_vec.html">deduce_vec</a></span></i> template (for unary functions) or the <i><span class="RenoLink"><a href="deduce_vec2.html">deduce_vec2</a></span></i> template (for binary functions).</li>
164 <li> The type of scalar arguments is deduced independently from the type of the vector argument, so they are not required to match. Scalar arguments must convert implicitly to the vector scalar type.</li>
165 </ul></div>
166 </div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
167 See also: <span class="RenoPageList"><a href="index.html">Boost QVM</a>&nbsp;| <a href="Synopsis.html">Synopsis</a></span>
168 </div>
169 <!-- Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc. -->
170 <!-- Distributed under the Boost Software License, Version 1.0. (See accompanying -->
171 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
172 <div id="footer">
173 <p>
174 <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>
175 <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>
176 <small>Copyright (c) 2008-2016 by Emil Dotchevski and Reverge Studios, Inc.<br/>
177 Distributed under the <a href="http://www.boost.org/LICENSE_1_0.txt">Boost Software License, Version 1.0</a>.</small>
178 </p>
179 </div>
180 </div>
181 </div>
182 </div>
183 </body>
184 </html>