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>quaternion 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>Quaternion Operations
</h3>
21 <div class=
"RenoIncludeDIV"><p><span class=
"RenoEscape">#<!--<wiki>`#</wiki>--></span>include
<<span class=
"RenoLink"><a href=
"boost_qvm_quat_operations_hpp.html">boost/qvm/quat_operations.hpp
</a></span>></p>
24 namespace
<span class=
"RenoLink"><a href=
"qvm.html">qvm
</a></span>
26 <span class=
"RenoIncludeSPAN"> //*** Quaternion 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_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
30 template
<class A,class B
>
31 A
& <span class=
"RenoLink"><a href=
"assign_quat_quat_.html">assign
</a></span>( A
& a, B const
& b );
</span>
33 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
34 //
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><R
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
35 template
<class R,class A
>
36 R
<span class=
"RenoLink"><a href=
"convert_to_quat_.html">convert_to
</a></span>( A const
& a );
38 //Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
39 //
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><R
>::value
&& <span class=
"RenoLink"><a href=
"is_mat.html">is_mat
</a></span><A
>::value
&&
40 //
<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 && <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>==
3
41 template
<class R,class A
>
42 R
<span class=
"RenoLink"><a href=
"convert_to_quat_.html">convert_to
</a></span>( A const
& m );
</span>
44 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
45 //
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
46 template
<class A,class B
>
47 A
& <span class=
"RenoLink"><a href=
"operator_sub_eq_quat_quat_.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_quat.html">is_quat
</a></span><A
>::value
50 template
<class A
>
51 typename
<span class=
"RenoLink"><a href=
"deduce_quat.html">deduce_quat
</a></span><A
>::type
52 <span class=
"RenoLink"><a href=
"operator_minus_quat_.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_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
&&
56 template
<class A,class B
>
57 typename
<span class=
"RenoLink"><a href=
"deduce_quat2.html">deduce_quat2
</a></span><A,B
>::type
58 <span class=
"RenoLink"><a href=
"operator_minus_quat_quat_.html">operator-
</a></span>( A const
& a, B const
& b );
</span>
60 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
61 //
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
62 template
<class A,class B
>
63 A
& <span class=
"RenoLink"><a href=
"operator_add_quat_quat_.html">operator+=
</a></span>( A
& a, B const
& b );
</span>
65 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
66 //
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
&&
67 template
<class A,class B
>
68 typename
<span class=
"RenoLink"><a href=
"deduce_quat2.html">deduce_quat2
</a></span><A,B
>::type
69 <span class=
"RenoLink"><a href=
"operator_plus_quat_quat_.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_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
72 template
<class A,class B
>
73 A
& <span class=
"RenoLink"><a href=
"operator_div_eq_quat_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_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
76 template
<class A,class B
>
77 typename
<span class=
"RenoLink"><a href=
"deduce_quat.html">deduce_quat
</a></span><A
>::type
78 <span class=
"RenoLink"><a href=
"operator_over_quat_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>:
81 //
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
82 template
<class A,class B
>
83 A
& <span class=
"RenoLink"><a href=
"operator_mul_eq_quat_quat_.html">operator*=
</a></span>( A
& a, B const
& b );
</span>
85 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
86 template
<class A,class B
>
87 A
& <span class=
"RenoLink"><a href=
"operator_mul_eq_quat_scalar_.html">operator*=
</a></span>( A
& 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_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
91 template
<class A,class B
>
92 typename
<span class=
"RenoLink"><a href=
"deduce_quat2.html">deduce_quat2
</a></span><A,B
>::type
93 <span class=
"RenoLink"><a href=
"operator_times_quat_quat_.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>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
96 template
<class A,class B
>
97 typename
<span class=
"RenoLink"><a href=
"deduce_quat.html">deduce_quat
</a></span><A
>::type
98 <span class=
"RenoLink"><a href=
"operator_times_quat_scalar_.html">operator*
</a></span>( A const
& a, B b );
</span>
100 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
101 //
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
102 template
<class A,class B
>
103 bool
<span class=
"RenoLink"><a href=
"operator_eq_quat_quat_.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>:
106 //
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
107 template
<class A,class B
>
108 bool
<span class=
"RenoLink"><a href=
"operator_not_eq_quat_quat_.html">operator!=
</a></span>( A const
& a, B const
& 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_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
112 template
<class A,class B,class Cmp
>
113 bool
<span class=
"RenoLink"><a href=
"cmp_quat_quat_.html">cmp
</a></span>( A const
& a, B const
& b, Cmp pred );
</span>
115 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
116 template
<class A
>
117 typename
<span class=
"RenoLink"><a href=
"quat_traits.html">quat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"quat_traits_Q_scalar_type.html">scalar_type
</a></span>
118 <span class=
"RenoLink"><a href=
"mag_sqr_quat_.html">mag_sqr
</a></span>( A const
& a );
</span>
120 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
121 template
<class A
>
122 typename
<span class=
"RenoLink"><a href=
"quat_traits.html">quat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"quat_traits_Q_scalar_type.html">scalar_type
</a></span>
123 <span class=
"RenoLink"><a href=
"mag_quat_.html">mag
</a></span>( A const
& a );
</span>
125 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
126 template
<class A
>
127 typename
<span class=
"RenoLink"><a href=
"deduce_quat.html">deduce_quat
</a></span><A
>::type
128 <span class=
"RenoLink"><a href=
"normalized_quat_.html">normalized
</a></span>( A const
& a );
</span>
130 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
131 template
<class A
>
132 void
<span class=
"RenoLink"><a href=
"normalize_quat_.html">normalize
</a></span>( A
& a );
</span>
134 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
135 //
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
136 template
<class A,class B
>
137 typename
<span class=
"RenoLink"><a href=
"deduce_scalar.html">deduce_scalar
</a></span><A,B
>::type
138 <span class=
"RenoLink"><a href=
"dot_quat_quat_.html">dot
</a></span>( A const
& a, B const
& b );
</span>
140 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
141 template
<class A
>
142 typename
<span class=
"RenoLink"><a href=
"deduce_quat.html">deduce_quat
</a></span><A
>::type
143 <span class=
"RenoLink"><a href=
"conjugate.html">conjugate
</a></span>( A const
& a );
</span>
145 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
146 template
<class A
>
147 typename
<span class=
"RenoLink"><a href=
"deduce_quat.html">deduce_quat
</a></span><A
>::type
148 <span class=
"RenoLink"><a href=
"inverse_quat_.html">inverse
</a></span>( A const
& a );
</span>
150 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
151 //
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
&& <span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><B
>::value
&& <span class=
"RenoLink"><a href=
"is_scalar.html">is_scalar
</a></span><C
>
152 template
<class A,class B,class C
>
153 typename
<span class=
"RenoLink"><a href=
"deduce_quat2.html">deduce_quat2
</a></span><A,B
> >::type
154 <span class=
"RenoLink"><a href=
"slerp.html">slerp
</a></span>( A const
& a, B const
& b, C c );
</span>
156 <span class=
"RenoIncludeSPAN">template
<class T
>
157 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"zero_quat.html">zero_quat
</a></span>();
</span>
159 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
160 template
<class A
>
161 void
<span class=
"RenoLink"><a href=
"set_zero_quat_.html">set_zero
</a></span>( A
& a );
</span>
163 <span class=
"RenoIncludeSPAN">template
<class S
>
164 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"identity_quat.html">identity_quat
</a></span>();
</span>
166 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
167 template
<class A
>
168 void
<span class=
"RenoLink"><a href=
"set_identity_quat_.html">set_identity
</a></span>( A
& a );
</span>
170 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
171 //
<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
172 template
<class A
>
173 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"rot_quat.html">rot_quat
</a></span>( A const
& axis, 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> angle );
</span>
175 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
176 //
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
&&
177 //
<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
178 template
<class A
>
179 void
<span class=
"RenoLink"><a href=
"set_rot_quat_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>
181 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
182 //
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
&&
183 //
<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
184 template
<class A,class B
>
185 void
<span class=
"RenoLink"><a href=
"rotate_quat_vec_scalar_.html">rotate
</a></span>( A
& a, B const
& axis, typename
<span class=
"RenoLink"><a href=
"quat_traits.html">quat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"quat_traits_Q_scalar_type.html">scalar_type
</a></span> angle );
</span>
187 <span class=
"RenoIncludeSPAN">template
<class Angle
>
188 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"rotx_quat_scalar_.html">rotx_quat
</a></span>( Angle const
& angle );
</span>
190 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
191 template
<class A
>
192 void
<span class=
"RenoLink"><a href=
"set_rotx_quat_scalar_.html">set_rotx
</a></span>( A
& a, typename
<span class=
"RenoLink"><a href=
"quat_traits.html">quat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"quat_traits_Q_scalar_type.html">scalar_type
</a></span> angle );
</span>
194 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
195 template
<class A
>
196 void
<span class=
"RenoLink"><a href=
"rotate_x_quat_scalar_.html">rotate_x
</a></span>( A
& a, typename
<span class=
"RenoLink"><a href=
"quat_traits.html">quat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"quat_traits_Q_scalar_type.html">scalar_type
</a></span> angle );
</span>
198 <span class=
"RenoIncludeSPAN">template
<class Angle
>
199 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"roty_quat_scalar_.html">roty_quat
</a></span>( Angle const
& angle );
</span>
201 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
202 template
<class A
>
203 void
<span class=
"RenoLink"><a href=
"set_rotz_quat_scalar_.html">set_rotz
</a></span>( A
& a, typename
<span class=
"RenoLink"><a href=
"quat_traits.html">quat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"quat_traits_Q_scalar_type.html">scalar_type
</a></span> angle );
</span>
205 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
206 template
<class A
>
207 void
<span class=
"RenoLink"><a href=
"rotate_y_quat_scalar_.html">rotate_y
</a></span>( A
& a, typename
<span class=
"RenoLink"><a href=
"quat_traits.html">quat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"quat_traits_Q_scalar_type.html">scalar_type
</a></span> angle );
</span>
209 <span class=
"RenoIncludeSPAN">template
<class Angle
>
210 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"rotz_quat_scalar_.html">rotz_quat
</a></span>( Angle const
& angle );
</span>
212 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
213 template
<class A
>
214 void
<span class=
"RenoLink"><a href=
"set_rotz_quat_scalar_.html">set_rotz
</a></span>( A
& a, typename
<span class=
"RenoLink"><a href=
"quat_traits.html">quat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"quat_traits_Q_scalar_type.html">scalar_type
</a></span> angle );
</span>
216 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
217 template
<class A
>
218 void
<span class=
"RenoLink"><a href=
"rotate_z_quat_scalar_.html">rotate_z
</a></span>( A
& a, typename
<span class=
"RenoLink"><a href=
"quat_traits.html">quat_traits
</a></span><A
>::
<span class=
"RenoLink"><a href=
"quat_traits_Q_scalar_type.html">scalar_type
</a></span> angle );
</span>
220 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
221 template
<class Scalar,class A
>
222 -unspecified-return_type-
<span class=
"RenoLink"><a href=
"scalar_cast_quat_.html">scalar_cast
</a></span>( A const
& a );
</span>
224 <span class=
"RenoIncludeSPAN">//Only
<span class=
"RenoLink"><a href=
"SFINAE_enable_if.html">enabled if
</a></span>:
<span class=
"RenoLink"><a href=
"is_quat.html">is_quat
</a></span><A
>::value
225 template
<class A
>
226 -unspecified-return-type-
<span class=
"RenoLink"><a href=
"qref.html">qref
</a></span>( A
& a );
</span></span></span>
229 </div><p>This is a list of all quaternion operations implemented by Boost QVM -- click on functions for individual documentation. General notes:
</p>
230 <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=
"quat_traits.html">quat_traits
</a></span></i> template.
</li>
231 <li> When objects are returned by value their type is deduced either by the
<i><span class=
"RenoLink"><a href=
"deduce_quat.html">deduce_quat
</a></span></i> template (for unary functions) or the
<i><span class=
"RenoLink"><a href=
"deduce_quat2.html">deduce_quat2
</a></span></i> template (for binary functions).
</li>
232 <li> The type of scalar arguments is deduced independently from the type of the quaternion argument, so they are not required to match. Scalar arguments must convert implicitly to the quaternion scalar type.
</li>
234 </div><div class=
"RenoAutoDIV"><div class=
"RenoHR"><hr/></div>
235 See also:
<span class=
"RenoPageList"><a href=
"index.html">Boost QVM
</a> |
<a href=
"Synopsis.html">Synopsis
</a></span>
237 <!-- Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc. -->
238 <!-- Distributed under the Boost Software License, Version 1.0. (See accompanying -->
239 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
242 <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>
243 <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>
244 <small>Copyright (c)
2008-
2016 by Emil Dotchevski and Reverge Studios, Inc.
<br/>
245 Distributed under the
<a href=
"http://www.boost.org/LICENSE_1_0.txt">Boost Software License, Version
1.0</a>.
</small>