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))])
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