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()
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)
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
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 point(self, x, y): return self.point_array.get((x, y), Invalid())
def vert(self, x, y): return self.vert_array.get((x, y), Invalid())
def horiz(self, x, y): return self.horiz_array.get((x, y), Invalid())
def cell(self, x, y): return self.cell_array.get((x, y), Invalid())
def northward_point(self, n, se, sw): return self.northward_point_array.get(regularize_coords(n, se, sw), Invalid())
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())
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())
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())
def cell(self, n, se, sw): return self.cell_array.get(regularize_coords(n, se, sw), Invalid())