Пример #1
0
 def __init__(self, var, n, se, sw):
     self.var = var
     self.n = n
     self.se = se
     self.sw = sw
     self.edge_s = Invalid()
     self.edge_ne = Invalid()
     self.edge_nw = Invalid()
     self.point_s = Invalid()
     self.point_ne = Invalid()
     self.point_nw = Invalid()
     self.cell_n = Invalid()
     self.cell_se = Invalid()
     self.cell_sw = Invalid()
Пример #2
0
class Point(object):
    def __init__(self, var, x, y):
        self.var = var
        self.x = x
        self.y = y
        self.edge_above = Invalid()
        self.edge_below = Invalid()
        self.edge_left = Invalid()
        self.edge_right = Invalid()
        self.point_left = Invalid()
        self.point_right = Invalid()
        self.point_above = Invalid()
        self.point_below = Invalid()

    def edges(self):
        return [
            x for x in [
                self.edge_above, self.edge_below, self.edge_left,
                self.edge_right
            ] if not isinstance(x, Invalid)
        ]

    def horiz_edge(self, offs):
        assert offs != 0
        if offs == 1:
            return self.edge_right
        elif offs == -1:
            return self.edge_left
        elif offs > 0:
            return self.point_right.horiz_edge(offs - 1)
        elif offs < 0:
            return self.point_left.horiz_edge(offs + 1)

    def vert_edge(self, offs):
        assert offs != 0
        if offs == 1:
            return self.edge_below
        elif offs == -1:
            return self.edge_above
        elif offs > 0:
            return self.point_below.vert_edge(offs - 1)
        elif offs < 0:
            return self.point_above.vert_edge(offs + 1)
Пример #3
0
 def __init__(self, var, x, y):
     self.var = var
     self.edge_above = Invalid()
     self.edge_below = Invalid()
     self.edge_left = Invalid()
     self.edge_right = Invalid()
     self.cell_above = Invalid()
     self.cell_below = Invalid()
     self.cell_left = Invalid()
     self.cell_right = Invalid()
     self.x = x
     self.y = y
Пример #4
0
 def __init__(self, var, x, y):
     self.var = var
     self.x = x
     self.y = y
     self.edge_above = Invalid()
     self.edge_below = Invalid()
     self.edge_left = Invalid()
     self.edge_right = Invalid()
     self.point_left = Invalid()
     self.point_right = Invalid()
     self.point_above = Invalid()
     self.point_below = Invalid()
Пример #5
0
 def point(self, x, y):
     return self.point_array.get((x, y), Invalid())
Пример #6
0
 def vert(self, x, y):
     return self.vert_array.get((x, y), Invalid())
Пример #7
0
 def horiz(self, x, y):
     return self.horiz_array.get((x, y), Invalid())
Пример #8
0
 def cell(self, x, y):
     return self.cell_array.get((x, y), Invalid())
Пример #9
0
 def northward_point(self, n, se, sw):
     return self.northward_point_array.get(regularize_coords(n, se, sw),
                                           Invalid())
Пример #10
0
 def ne_sw(self, n, se, sw):
     n, se, sw = regularize_coords(n, se, sw)
     if n + se + sw == -1:
         n = n + 1
         se = se + 1
     return self.ne_sw_array.get((n, se, sw), Invalid())
Пример #11
0
 def nw_se(self, n, se, sw):
     n, se, sw = regularize_coords(n, se, sw)
     if n + se + sw == -1:
         n = n + 1
         sw = sw + 1
     return self.nw_se_array.get((n, se, sw), Invalid())
Пример #12
0
 def vert(self, n, se, sw):
     n, se, sw = regularize_coords(n, se, sw)
     if n + se + sw == -1:
         se = se + 1
         sw = sw + 1
     return self.vert_array.get((n, se, sw), Invalid())
Пример #13
0
 def cell(self, n, se, sw):
     return self.cell_array.get(regularize_coords(n, se, sw), Invalid())