]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/qvm/test/convert_to_test.cpp
1 //Copyright (c) 2008-2016 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 #include <boost/qvm/operations.hpp>
7 #include <boost/qvm/map_mat_mat.hpp>
8 #include "test_qvm_matrix.hpp"
9 #include "test_qvm_quaternion.hpp"
10 #include "test_qvm_vector.hpp"
15 template <int Rows
,int Cols
>
19 using namespace boost::qvm::sfinae
;
20 test_qvm::matrix
<M1
,Rows
,Cols
> const x(42,1);
21 test_qvm::matrix
<M2
,Rows
,Cols
> const y
=convert_to
< test_qvm::matrix
<M2
,Rows
,Cols
> >(x
);
22 BOOST_QVM_TEST_EQ(x
.a
,y
.a
);
29 using namespace boost::qvm::sfinae
;
30 test_qvm::vector
<V1
,Dim
> const x(42,1);
31 test_qvm::vector
<V2
,Dim
> const y
=convert_to
< test_qvm::vector
<V2
,Dim
> >(x
);
32 BOOST_QVM_TEST_EQ(x
.a
,y
.a
);
38 using namespace boost::qvm
;
39 test_qvm::quaternion
<Q1
> x(42,1);
42 test_qvm::quaternion
<Q2
> const y
=convert_to
< test_qvm::quaternion
<Q2
> >(x
);
43 BOOST_QVM_TEST_EQ(x
.a
,y
.a
);
46 test_qvm::matrix
<M1
,3,3> const my
=convert_to
< test_qvm::matrix
<M1
,3,3> >(x
);
47 test_qvm::quaternion
<Q1
> const qy
=convert_to
< test_qvm::quaternion
<Q1
> >(my
);
48 BOOST_QVM_TEST_CLOSE(x
.a
,qy
.a
,0.00001f
);
51 test_qvm::matrix
<M1
,4,4> const my
=convert_to
< test_qvm::matrix
<M1
,4,4> >(x
);
52 BOOST_TEST(my
.a
[0][3]==0);
53 BOOST_TEST(my
.a
[1][3]==0);
54 BOOST_TEST(my
.a
[2][3]==0);
55 BOOST_TEST(my
.a
[3][0]==0);
56 BOOST_TEST(my
.a
[3][1]==0);
57 BOOST_TEST(my
.a
[3][2]==0);
58 BOOST_TEST(my
.a
[3][3]==1);
59 test_qvm::quaternion
<Q1
> const qy
=convert_to
< test_qvm::quaternion
<Q1
> >(del_row_col
<3,3>(my
));
60 BOOST_QVM_TEST_CLOSE(x
.a
,qy
.a
,0.00001f
);
85 return boost::report_errors();