Skip to content

Instantly share code, notes, and snippets.

@desmondrawls
Created April 23, 2020 02:54
Show Gist options
  • Save desmondrawls/df943a947624a982629c1325340c1ae7 to your computer and use it in GitHub Desktop.
Save desmondrawls/df943a947624a982629c1325340c1ae7 to your computer and use it in GitHub Desktop.
def eastward(level, position):
return (2**(level - 1)) * (int(position) % 2)
def southward(level, position):
if int(position) < 2:
return 0
else:
return 2**(level - 1)
def absolute_position(quadkey, x=0, y=0):
level = len(quadkey)
if level == 0:
return (x,y)
else:
next_x = x + eastward(level, quadkey[0])
next_y = y + southward(level, quadkey[0])
return absolute_position(quadkey[1:], next_x, next_y)
class TestAbsolutePosition(unittest.TestCase):
def test_absolute_position_top(self):
x_0, y_0 = absolute_position('00')
x_1, y_1 = absolute_position('01')
x_2, y_2 = absolute_position('02')
x_3, y_3 = absolute_position('03')
self.assertEqual(0, x_0)
self.assertEqual(0, y_0)
self.assertEqual(1, x_1)
self.assertEqual(0, y_1)
self.assertEqual(0, x_2)
self.assertEqual(1, y_2)
self.assertEqual(1, x_3)
self.assertEqual(1, y_3)
def test_absolute_position_children(self):
x_0, y_0 = absolute_position('003')
x_1, y_1 = absolute_position('013')
x_2, y_2 = absolute_position('022')
x_3, y_3 = absolute_position('030')
self.assertEqual(1, x_0)
self.assertEqual(1, y_0)
self.assertEqual(3, x_1)
self.assertEqual(1, y_1)
self.assertEqual(0, x_2)
self.assertEqual(3, y_2)
self.assertEqual(2, x_3)
self.assertEqual(2, y_3)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment