tests.TestFindRotation   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 27
Duplicated Lines 0 %
Metric Value
dl 0
loc 27
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A test_rotated() 0 5 1
A setUp() 0 13 1
A test_perfectly_aligned() 0 4 1
1
import numpy as np
2
from patty.registration import find_rotation_xy
3
import pcl
4
5
from numpy.testing import assert_almost_equal
6
import unittest
7
8
9
class TestFindRotation(unittest.TestCase):
10
    '''Test rotation TestCase'''
11
12
    def setUp(self):
13
        '''Setup test'''
14
        angle = 0.3
15
        self.rotation = np.array([[np.cos(angle),  np.sin(angle), 0],
16
                                  [-np.sin(angle),  np.cos(angle), 0],
17
                                  [0,              0, 1]])
18
19
        data = np.random.random_sample(
20
            [200, 3]) * [5.0, 10.0, 1.0] - [2.5, 5, 0.5]
21
        self.pc1 = pcl.PointCloudXYZRGB(data.astype(np.float32))
22
23
        self.pc2 = pcl.PointCloudXYZRGB(data.astype(np.float32))
24
        self.pc2.rotate(self.rotation)
25
26
    def test_perfectly_aligned(self):
27
        '''Test find_rotation_xy function'''
28
        rotation = find_rotation_xy(self.pc1, self.pc1)
29
        assert_almost_equal(rotation, np.eye(3))
30
31
    def test_rotated(self):
32
        '''Test find_rotation_xy function'''
33
        rotation = find_rotation_xy(self.pc1, self.pc2)
34
        w1, v1 = np.linalg.eig(rotation[0:2, 0:2])
35
        w2, v2 = np.linalg.eig(self.rotation[0:2, 0:2])
36
        # assert_almost_equal( rotation, self.rotation )
37