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>boost/qvm/vec_operations.hpp
</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>boost/qvm/vec_operations.hpp
</h3>
21 <p>This header defines all available function overloads that operate on vector objects.
</p>
23 <div class=
"RenoIncludeDIV"><p><span class=
"RenoEscape">#<!--<wiki>`#</wiki>--></span>include
<<span class=
"RenoLink">boost/qvm/vec_operations.hpp
</span>></p>
26 namespace
<span class=
"RenoLink"><a href=
"qvm.html">qvm
</a></span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><B
>::value
&&
30 //
<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>==
<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>
31 template
<class A,class B
>
32 A
& <span class=
"RenoLink"><a href=
"assign_vec_vec_.html">assign
</a></span>( A
& a, B const
& b );
</span>
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><R
>::value
&& <span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><A
>::value
&&
36 //
<span class=
"RenoLink"><a href=
"vec_traits.html">vec_traits
</a></span><R
>::
<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><A
>::
<span class=
"RenoLink"><a href=
"vec_traits_Vector_dim.html">dim
</a></span>
37 template
<class R,class A
>
38 R
<span class=
"RenoLink"><a href=
"convert_to_vec_.html">convert_to
</a></span>( A const
& a );
</span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><B
>::value
&&
42 //
<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>==
<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>
43 template
<class A,class B
>
44 A
& <span class=
"RenoLink"><a href=
"operator_sub_eq_vec_vec_.html">operator-=
</a></span>( A
& a, B const
& b );
</span>
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><A
>::value
47 template
<class A
>
48 typename
<span class=
"RenoLink"><a href=
"deduce_vec.html">deduce_vec
</a></span><A
>::type
49 <span class=
"RenoLink"><a href=
"operator_minus_vec_.html">operator-
</a></span>( A const
& a );
</span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><B
>::value
&&
53 //
<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>==
<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>
54 template
<class A,class B
>
55 typename
<span class=
"RenoLink"><a href=
"deduce_vec2.html">deduce_vec2
</a></span><A,B,
<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>>::type
56 <span class=
"RenoLink"><a href=
"operator_minus_vec_vec_.html">operator-
</a></span>( A const
& a, B const
& b );
</span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><B
>::value
&&
60 //
<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>==
<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>
61 template
<class A,class B
>
62 A
& <span class=
"RenoLink"><a href=
"operator_add_vec_vec_.html">operator+=
</a></span>( A
& a, B const
& b );
</span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><B
>::value
&&
66 //
<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>==
<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>
67 template
<class A,class B
>
68 typename
<span class=
"RenoLink"><a href=
"deduce_vec2.html">deduce_vec2
</a></span><A,B,
<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>>::type
69 <span class=
"RenoLink"><a href=
"operator_plus_vec_vec_.html">operator+
</a></span>( A const
& a, B const
& b );
</span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_scalar.html">is_scalar
</a></span><B
>::value
72 template
<class A,class B
>
73 A
& <span class=
"RenoLink"><a href=
"operator_div_eq_vec_scalar_.html">operator/=
</a></span>( A
& a, B b );
</span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_scalar.html">is_scalar
</a></span><B
>::value
76 template
<class A,class B
>
77 typename
<span class=
"RenoLink"><a href=
"deduce_vec.html">deduce_vec
</a></span><A
>::type
78 <span class=
"RenoLink"><a href=
"operator_over_vec_scalar_.html">operator/
</a></span>( A const
& a, B b );
</span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_scalar.html">is_scalar
</a></span><B
>::value
81 template
<class A,class B
>
82 A
& <span class=
"RenoLink"><a href=
"operator_mul_eq_vec_scalar_.html">operator*=
</a></span>( A
& a, B b );
</span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_scalar.html">is_scalar
</a></span><B
>::value
85 template
<class A
>
86 typename
<span class=
"RenoLink"><a href=
"deduce_vec.html">deduce_vec
</a></span><A
>::type
87 <span class=
"RenoLink"><a href=
"operator_times_vec_scalar_.html">operator*
</a></span>( A const
& a, B b );
</span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><B
>::value
&&
91 //
<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>==
<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>
92 template
<class A,class B
>
93 bool
<span class=
"RenoLink"><a href=
"operator_eq_vec_vec_.html">operator==
</a></span>( A const
& a, B const
& b );
</span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><B
>::value
&&
97 //
<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>==
<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>
98 template
<class A,class B
>
99 bool
<span class=
"RenoLink"><a href=
"operator_not_eq_vec_vec_.html">operator!=
</a></span>( A const
& a, B const
& b );
</span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><B
>::value
&&
103 //
<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>==
<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>
104 template
<class A,class B,class Cmp
>
105 bool
<span class=
"RenoLink"><a href=
"cmp_mat_mat_.html">cmp
</a></span>( A const
& a, B const
& b, Cmp pred );
</span>
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><A
>::value
109 template
<class A
>
110 typename
<span class=
"RenoLink"><a href=
"vec_traits.html">vec_traits
</a></span><A
>::
<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
& a );
</span>
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><A
>::value
115 template
<class A
>
116 typename
<span class=
"RenoLink"><a href=
"vec_traits.html">vec_traits
</a></span><A
>::
<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
& a );
</span>
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><A
>::value
121 template
<class A
>
122 typename
<span class=
"RenoLink"><a href=
"deduce_vec.html">deduce_vec
</a></span><A
>::type
123 <span class=
"RenoLink"><a href=
"normalized_vec_.html">normalized
</a></span>( A const
& a );
</span>
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><A
>::value
127 template
<class A
>
128 void
<span class=
"RenoLink"><a href=
"normalize_vec_.html">normalize
</a></span>( A
& a );
</span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><B
>::value
&&
132 //
<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>==
<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>
133 template
<class A,class B
>
134 typename
<span class=
"RenoLink"><a href=
"deduce_scalar.html">deduce_scalar
</a></span><A,B
>::type
135 <span class=
"RenoLink"><a href=
"dot_vec_vec_.html">dot
</a></span>( A const
& a, B const
& b );
</span>
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><A
>::value
&& <span class=
"RenoLink"><a href=
"is_vec.html">is_vec
</a></span><B
>::value
&&
139 //
<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 && <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
140 template
<class A,class B
>
141 typename
<span class=
"RenoLink"><a href=
"deduce_vec2.html">deduce_vec2
</a></span><A,B,
3>::type
142 <span class=
"RenoLink"><a href=
"cross.html">cross
</a></span>( A const
& a, B const
& b );
</span>
144 <span class=
"RenoIncludeSPAN">template
<class T,int S
>
145 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"zero_vec.html">zero_vec
</a></span>();
</span>
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><A
>::value
149 template
<class A
>
150 void
<span class=
"RenoLink"><a href=
"set_zero_vec_.html">set_zero
</a></span>( A
& a );
</span>
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><A
>::value
153 template
<class A
>
154 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"vref.html">vref
</a></span>( A
& a );
</span>
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><A
>::value
157 template
<class Scalar,class A
>
158 -unspecified-return_type-
<span class=
"RenoLink"><a href=
"scalar_cast_vec_.html">scalar_cast
</a></span>( A const
& a );
</span></span>
161 </div></div><div class=
"RenoAutoDIV"><div class=
"RenoHR"><hr/></div>
162 See also:
<span class=
"RenoPageList"><a href=
"assign_vec_vec_.html">assign(vec,vec)
</a> |
<a href=
"boost_qvm_operations_hpp.html">boost/qvm/operations.hpp
</a> |
<a href=
"boost_qvm_vec_operations2_hpp.html">boost/qvm/vec_operations2.hpp
</a> |
<a href=
"boost_qvm_vec_operations3_hpp.html">boost/qvm/vec_operations3.hpp
</a> |
<a href=
"boost_qvm_vec_operations4_hpp.html">boost/qvm/vec_operations4.hpp
</a> |
<a href=
"code_generator.html">Code Generator
</a> |
<a href=
"cmp_vec_vec_.html">cmp(vec,vec)
</a> |
<a href=
"convert_to_vec_.html">convert_to(vec)
</a> |
<a href=
"cross.html">cross
</a> |
<a href=
"dot_vec_vec_.html">dot(vec,vec)
</a> |
<a href=
"mag_vec_.html">mag(vec)
</a> |
<a href=
"mag_sqr_vec_.html">mag_sqr(vec)
</a> |
<a href=
"normalize_vec_.html">normalize(vec)
</a> |
<a href=
"normalized_vec_.html">normalized(vec)
</a> |
<a href=
"operator_not_eq_vec_vec_.html">operator!=(vec,vec)
</a> |
<a href=
"operator_times_vec_scalar_.html">operator*(vec,scalar)
</a> |
<a href=
"operator_mul_eq_vec_scalar_.html">operator*=(vec,scalar)
</a> |
<a href=
"operator_plus_vec_vec_.html">operator+(vec,vec)
</a> |
<a href=
"operator_add_vec_vec_.html">operator+=(vec,vec)
</a> |
<a href=
"operator_minus_vec_.html">operator-(vec)
</a> |
<a href=
"operator_minus_vec_vec_.html">operator-(vec,vec)
</a> |
<a href=
"operator_sub_eq_vec_vec_.html">operator-=(vec,vec)
</a> |
<a href=
"operator_over_vec_scalar_.html">operator/(vec,scalar)
</a> |
<a href=
"operator_div_eq_vec_scalar_.html">operator/=(vec,scalar)
</a> |
<a href=
"operator_eq_vec_vec_.html">operator==(vec,vec)
</a> |
<a href=
"scalar_cast_vec_.html">scalar_cast(vec)
</a> |
<a href=
"set_zero_vec_.html">set_zero(vec)
</a> |
<a href=
"vref.html">vref
</a> |
<a href=
"zero_vec.html">zero_vec
</a></span>
164 <!-- Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc. -->
165 <!-- Distributed under the Boost Software License, Version 1.0. (See accompanying -->
166 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
169 <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>
170 <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>
171 <small>Copyright (c)
2008-
2016 by Emil Dotchevski and Reverge Studios, Inc.
<br/>
172 Distributed under the
<a href=
"http://www.boost.org/LICENSE_1_0.txt">Boost Software License, Version
1.0</a>.
</small>