Beispiel #1
0
 def test_cclockise(self):
     start = Vertex(2,1)
     base_vector = Vector(start, Vertex(3,1))
     cclockwise = ((1,0),(2,0),(3,0))
     not_cclockwise = ((1,1),(3,2),(2,2),(1,2),(3,1))
     self.assertListEqual([base_vector.is_cclockwise(Vector(start, Vertex(v[0],v[1]))) for v in cclockwise], [True for x in range(len(cclockwise))])
     self.assertListEqual([base_vector.is_cclockwise(Vector(start, Vertex(v[0],v[1]))) for v in not_cclockwise], [False for x in range(len(not_cclockwise))])
Beispiel #2
0
    def right_iter(self, around, left):
        base_vec = Vector(around, left)
        start_index, i, max_cos = None, 0, -2
        edges = []
        for edge in filter(lambda x: base_vec.is_cclockwise(x), self.vertices[around]):
            edges.append(edge)
            angle_cos = base_vec.cos_angle(edge)
            if angle_cos > max_cos:
                start_index, max_cos = i, angle_cos
            i = i + 1

        i, start_index = start_index, start_index - len(edges)
        while ( start_index < i):
            yield edges[i].end
            i = i - 1