示例#1
0
    def test_nearest_naive(self):
        funs = [g.trimesh.proximity.closest_point_naive,
                g.trimesh.proximity.closest_point]

        data_points = g.deque()
        data_dist = g.deque()

        tic = [g.time.time()]
        for i in funs:
            p, d = self.check_nearest_point_function(i)
            data_points.append(p)
            data_dist.append(d)
            tic.append(g.time.time())

        self.assertTrue(g.np.ptp(data_points, axis=0).max() < g.tol.merge)
        self.assertTrue(g.np.ptp(data_dist,   axis=0).max() < g.tol.merge)

        log_msg = '\n'.join("{}: {}s".format(i, j) for i, j in zip([i.__name__ for i in funs],
                                                                   g.np.diff(tic)))
        g.log.info('Compared the following nearest point functions:\n' + log_msg)
示例#2
0
    def test_identifier(self):
        count = 25
        meshes = g.np.append(list(g.get_meshes(10)),
                             g.get_mesh('fixed_top.ply'))
        for mesh in meshes:
            if not mesh.is_volume:
                g.log.warning('Mesh %s is not watertight!',
                              mesh.metadata['file_name'])
                continue

            g.log.info('Trying hash at %d random transforms', count)
            md5 = g.deque()
            idf = g.deque()
            for i in range(count):
                permutated = mesh.permutate.transform()
                permutated = permutated.permutate.tessellation()

                md5.append(permutated.identifier_md5)
                idf.append(permutated.identifier)

            result = g.np.array(md5)
            ok = (result[0] == result[1:]).all()

            if not ok:
                debug = []
                for a in idf:
                    as_int, exp = g.trimesh.util.sigfig_int(
                        a, g.trimesh.comparison.id_sigfig)

                    debug.append(as_int * (10**exp))
                g.log.error(
                    'Hashes on %s differ after transform! diffs:\n %s\n',
                    mesh.metadata['file_name'],
                    str(g.np.array(debug, dtype=g.np.int)))

                raise ValueError('values differ after transform!')

            if md5[-1] == permutated.permutate.noise(mesh.scale /
                                                     100.0).identifier_md5:
                raise ValueError('Hashes on %s didn\'t change after noise!',
                                 mesh.metadata['file_name'])
示例#3
0
    def test_identifier(self):
        count = 25
        meshes = g.np.append(list(g.get_meshes(10)),
                             g.get_mesh('fixed_top.ply'))
        for mesh in meshes:
            if not mesh.is_volume:
                g.log.warning('Mesh %s is not watertight!',
                              mesh.metadata['file_name'])
                continue

            g.log.info('Trying hash at %d random transforms', count)
            md5 = g.deque()
            idf = g.deque()
            for i in range(count):
                permutated = mesh.permutate.transform()
                permutated = permutated.permutate.tessellation()

                md5.append(permutated.identifier_md5)
                idf.append(permutated.identifier)

            result = g.np.array(md5)
            ok = (result[0] == result[1:]).all()

            if not ok:
                debug = []
                for a in idf:
                    as_int, exp = g.trimesh.util.sigfig_int(
                        a, g.trimesh.comparison.id_sigfig)

                    debug.append(as_int * (10**exp))
                g.log.error('Hashes on %s differ after transform! diffs:\n %s\n',
                            mesh.metadata['file_name'],
                            str(g.np.array(debug, dtype=g.np.int)))

                raise ValueError('values differ after transform!')

            if md5[-1] == permutated.permutate.noise(
                    mesh.scale / 100.0).identifier_md5:
                raise ValueError('Hashes on %s didn\'t change after noise!',
                                 mesh.metadata['file_name'])
示例#4
0
    def test_identifier(self):
        count = 25
        for mesh in g.get_meshes(10):
            if not (mesh.is_watertight and mesh.is_winding_consistent):
                g.log.warning('Mesh %s is not watertight!',
                              mesh.metadata['file_name'])
                continue
            self.assertTrue(mesh.is_watertight)
            g.log.info('Trying hash at %d random transforms', count)
            md5 = g.deque()
            idf = g.deque()
            for i in range(count):
                permutated = mesh.permutate.transform()
                permutated = permutated.permutate.tesselation()

                md5.append(permutated.identifier_md5)
                idf.append(permutated.identifier)

            result = g.np.array(md5)
            ok = (result[0] == result[1:]).all()

            if not ok:
                debug = []
                for a in idf:
                    as_int, exp = g.trimesh.util.sigfig_int(
                        a, g.trimesh.comparison.identifier_sigfig)

                    debug.append(as_int * (10**exp))
                g.log.error(
                    'Hashes on %s differ after transform! diffs:\n %s\n',
                    mesh.metadata['file_name'],
                    str(g.np.array(debug, dtype=g.np.int)))
                self.assertTrue(False)

            if md5[-1] == permutated.permutate.noise(mesh.scale /
                                                     100.0).identifier_md5:
                g.log.error('Hashes on %s didn\'t change after noise!',
                            mesh.metadata['file_name'])
                self.assertTrue(False)
示例#5
0
    def test_nearest_naive(self):
        funs = [g.trimesh.proximity.closest_point_naive,
                g.trimesh.proximity.closest_point]

        data_points = g.deque()
        data_dist = g.deque()

        tic = [g.time.time()]
        for i in funs:
            p, d = self.check_nearest_point_function(i)
            data_points.append(p)
            data_dist.append(d)
            tic.append(g.time.time())

        assert g.np.ptp(data_points, axis=0).max() < g.tol.merge
        assert g.np.ptp(data_dist, axis=0).max() < g.tol.merge

        log_msg = '\n'.join("{}: {}s".format(i, j)
                            for i, j in zip(
            [i.__name__ for i in funs],
            g.np.diff(tic)))
        g.log.info(
            'Compared the following nearest point functions:\n' +
            log_msg)
示例#6
0
 def test_identifier(self):
     count = 100
     for mesh in g.get_meshes(5):
         if not mesh.is_watertight:
             g.log.warning('Mesh %s is not watertight!',
                           mesh.metadata['file_name'])
             continue
         self.assertTrue(mesh.is_watertight)
         g.log.info('Trying hash at %d random transforms', count)
         result = g.deque()
         for i in range(count):
             permutated = mesh.permutate.transform()
             result.append(permutated.identifier)
         ok = (g.np.abs(g.np.diff(result, axis=0)) < 1e-3).all()
         if not ok:
             g.log.error(
                 'Hashes on %s differ after transform! diffs:\n %s\n',
                 mesh.metadata['file_name'], str(g.np.diff(result, axis=0)))
         self.assertTrue(ok)
示例#7
0
 def test_identifier(self):
     count = 100
     for mesh in g.get_meshes(5):
         if not mesh.is_watertight:
             g.log.warning('Mesh %s is not watertight!',
                           mesh.metadata['file_name'])
             continue
         self.assertTrue(mesh.is_watertight)
         g.log.info('Trying hash at %d random transforms', count)
         result = g.deque()
         for i in range(count):
             permutated = mesh.permutate.transform()
             result.append(permutated.identifier)
         ok = (g.np.abs(g.np.diff(result, axis=0)) < 1e-3).all()
         if not ok:
             g.log.error('Hashes on %s differ after transform! diffs:\n %s\n', 
                       mesh.metadata['file_name'],
                       str(g.np.diff(result, axis=0)))
         self.assertTrue(ok)