]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/qvm/test/rot_quat_test.cpp
1 // Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
3 // Distributed under the Boost Software License, Version 1.0. (See accompanying
4 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 #ifdef BOOST_QVM_TEST_SINGLE_HEADER
7 # include BOOST_QVM_TEST_SINGLE_HEADER
9 # include <boost/qvm/quat_operations.hpp>
10 # include <boost/qvm/mat_operations.hpp>
13 #include "test_qvm_matrix.hpp"
14 #include "test_qvm_quaternion.hpp"
15 #include "test_qvm_vector.hpp"
23 using namespace boost::qvm
;
24 test_qvm::vector
<V1
,3> axis
; axis
.a
[0]=1;
25 for( float r
=0; r
<6.28f
; r
+=0.5f
)
27 test_qvm::quaternion
<Q1
> q1
=rot_quat(axis
,r
);
28 test_qvm::matrix
<M1
,3,3> x1
=convert_to
< test_qvm::matrix
<M1
,3,3> >(q1
);
29 test_qvm::rotation_x(x1
.b
,r
);
30 BOOST_QVM_TEST_CLOSE(x1
.a
,x1
.b
,0.000001f
);
31 test_qvm::quaternion
<Q2
> q2(42,1);
33 test_qvm::matrix
<M2
,3,3> x2
=convert_to
< test_qvm::matrix
<M2
,3,3> >(q2
);
34 test_qvm::rotation_x(x2
.b
,r
);
35 BOOST_QVM_TEST_CLOSE(x2
.a
,x2
.b
,0.000001f
);
36 test_qvm::quaternion
<Q1
> q3(42,1);
37 test_qvm::quaternion
<Q1
> q4(42,1);
40 BOOST_QVM_TEST_EQ(q3
.a
,q3
.a
);
47 using namespace boost::qvm
;
48 test_qvm::vector
<V1
,3> axis
; axis
.a
[1]=1;
49 for( float r
=0; r
<6.28f
; r
+=0.5f
)
51 test_qvm::quaternion
<Q1
> q1
=rot_quat(axis
,r
);
52 test_qvm::matrix
<M1
,3,3> x1
=convert_to
< test_qvm::matrix
<M1
,3,3> >(q1
);
53 test_qvm::rotation_y(x1
.b
,r
);
54 BOOST_QVM_TEST_CLOSE(x1
.a
,x1
.b
,0.000001f
);
55 test_qvm::quaternion
<Q2
> q2(42,1);
57 test_qvm::matrix
<M2
,3,3> x2
=convert_to
< test_qvm::matrix
<M2
,3,3> >(q2
);
58 test_qvm::rotation_y(x2
.b
,r
);
59 BOOST_QVM_TEST_CLOSE(x2
.a
,x2
.b
,0.000001f
);
60 test_qvm::quaternion
<Q1
> q3(42,1);
61 test_qvm::quaternion
<Q1
> q4(42,1);
64 BOOST_QVM_TEST_EQ(q3
.a
,q3
.a
);
71 using namespace boost::qvm
;
72 test_qvm::vector
<V1
,3> axis
; axis
.a
[2]=1;
73 for( float r
=0; r
<6.28f
; r
+=0.5f
)
75 test_qvm::quaternion
<Q1
> q1
=rot_quat(axis
,r
);
76 test_qvm::matrix
<M1
,3,3> x1
=convert_to
< test_qvm::matrix
<M1
,3,3> >(q1
);
77 test_qvm::rotation_z(x1
.b
,r
);
78 BOOST_QVM_TEST_CLOSE(x1
.a
,x1
.b
,0.000001f
);
79 test_qvm::quaternion
<Q2
> q2(42,1);
81 test_qvm::matrix
<M2
,3,3> x2
=convert_to
< test_qvm::matrix
<M2
,3,3> >(q2
);
82 test_qvm::rotation_z(x2
.b
,r
);
83 BOOST_QVM_TEST_CLOSE(x2
.a
,x2
.b
,0.000001f
);
84 test_qvm::quaternion
<Q1
> q3(42,1);
85 test_qvm::quaternion
<Q1
> q4(42,1);
88 BOOST_QVM_TEST_EQ(q3
.a
,q3
.a
);
99 return boost::report_errors();