Specifically...
KcNd-f2b is U=X-Y, V Kc/Nd northwest, W~T. This should always produce 2*gcd(K, N) bit tiles. Example geom-info output:
Code: Select all
Geometry: c3d-f2b
U: Vec3(1, -1, 0)
V: Vec3(-1, -1, 3)
W: Vec3(0, 0, 1)
Neighborhood sizes:
U: 3
W: 7
Unique positions (2):
#0: Vec3(0, 0, 0) => Vec3Uvw(0, 0, 0)
#1: Vec3(0, -1, 2) => Vec3Uvw(1, 1, 1)
Geometry: c4d-f2b
U: Vec3(1, -1, 0)
V: Vec3(-1, -1, 4)
W: Vec3(0, 0, 1)
Neighborhood sizes:
U: 3
W: 9
Unique positions (2):
#0: Vec3(0, 0, 0) => Vec3Uvw(0, 0, 0)
#1: Vec3(0, -1, 2) => Vec3Uvw(1, 1, 0)
Geometry: 2c8d-f2b
U: Vec3(1, -1, 0)
V: Vec3(-2, -2, 8)
W: Vec3(0, 0, 1)
Neighborhood sizes:
U: 3
W: 9
Unique positions (4):
#0: Vec3(0, 0, 0) => Vec3Uvw(0, 0, 0)
#1: Vec3(0, -1, 2) => Vec3Uvw(2, 1, 0)
#2: Vec3(-1, -1, 4) => Vec3Uvw(0, 2, 0)
#3: Vec3(-1, -2, 6) => Vec3Uvw(2, 3, 0)
Geometry: 2c5d-f2b
U: Vec3(1, -1, 0)
V: Vec3(-2, -2, 5)
W: Vec3(1, 1, -2)
Neighborhood sizes:
U: 3
W: 11
Unique positions (2):
#0: Vec3(0, 0, 0) => Vec3Uvw(0, 0, 0)
#1: Vec3(1, 0, -1) => Vec3Uvw(1, 0, 1)
Code: Select all
Geometry: c3d-b2f
U: Vec3(1, -1, 0)
V: Vec3(1, 1, 3)
W: Vec3(0, 0, -1)
Neighborhood sizes:
U: 3
W: 7
Unique positions (2):
#0: Vec3(0, 0, 0) => Vec3Uvw(0, 0, 0)
#1: Vec3(1, 0, 1) => Vec3Uvw(1, 1, 1)
Geometry: c4d-b2f
U: Vec3(1, -1, 0)
V: Vec3(1, 1, 4)
W: Vec3(0, 0, -1)
Neighborhood sizes:
U: 3
W: 9
Unique positions (2):
#0: Vec3(0, 0, 0) => Vec3Uvw(0, 0, 0)
#1: Vec3(1, 0, 2) => Vec3Uvw(1, 1, 0)
Geometry: 2c8d-b2f
U: Vec3(1, -1, 0)
V: Vec3(2, 2, 8)
W: Vec3(0, 0, -1)
Neighborhood sizes:
U: 3
W: 9
Unique positions (4):
#0: Vec3(0, 0, 0) => Vec3Uvw(0, 0, 0)
#1: Vec3(1, 0, 2) => Vec3Uvw(2, 1, 0)
#2: Vec3(1, 1, 4) => Vec3Uvw(0, 2, 0)
#3: Vec3(2, 1, 6) => Vec3Uvw(2, 3, 0)
Geometry: 2c5d-b2f
U: Vec3(1, -1, 0)
V: Vec3(2, 2, 5)
W: Vec3(1, 1, 2)
Neighborhood sizes:
U: 3
W: 11
Unique positions (2):
#0: Vec3(0, 0, 0) => Vec3Uvw(0, 0, 0)
#1: Vec3(1, 0, 1) => Vec3Uvw(1, 0, 1)
Code: Select all
Geometry: c3d-s2s
U: Vec3(1, 1, 0)
V: Vec3(-1, -1, 3)
W: Vec3(-1, 1, 0)
Neighborhood sizes:
U: 3
W: 3
Unique positions (6):
#0: Vec3(0, 0, 0) => Vec3Uvw(0, 0, 0)
#1: Vec3(0, 0, 1) => Vec3Uvw(2, 2, 0)
#2: Vec3(0, 0, 2) => Vec3Uvw(4, 4, 0)
#3: Vec3(0, 1, 0) => Vec3Uvw(3, 0, 3)
#4: Vec3(0, 1, 1) => Vec3Uvw(5, 2, 3)
#5: Vec3(-1, 0, 2) => Vec3Uvw(1, 4, 3)
Geometry: c4d-s2s
U: Vec3(1, 1, 0)
V: Vec3(-1, -1, 4)
W: Vec3(-1, 1, 0)
Neighborhood sizes:
U: 3
W: 3
Unique positions (8):
#0: Vec3(0, 0, 0) => Vec3Uvw(0, 0, 0)
#1: Vec3(0, 0, 1) => Vec3Uvw(2, 2, 0)
#2: Vec3(0, 0, 2) => Vec3Uvw(4, 4, 0)
#3: Vec3(0, 0, 3) => Vec3Uvw(6, 6, 0)
#4: Vec3(0, 1, 0) => Vec3Uvw(4, 0, 4)
#5: Vec3(0, 1, 1) => Vec3Uvw(6, 2, 4)
#6: Vec3(-1, 0, 2) => Vec3Uvw(0, 4, 4)
#7: Vec3(-1, 0, 3) => Vec3Uvw(2, 6, 4)
Geometry: 2c8d-s2s
U: Vec3(1, 1, 0)
V: Vec3(-2, -2, 8)
W: Vec3(-1, 1, 0)
Neighborhood sizes:
U: 3
W: 3
Unique positions (16):
#0: Vec3(0, 0, 0) => Vec3Uvw(0, 0, 0)
#1: Vec3(0, 0, 1) => Vec3Uvw(4, 2, 0)
#2: Vec3(0, 0, 2) => Vec3Uvw(8, 4, 0)
#3: Vec3(0, 0, 3) => Vec3Uvw(12, 6, 0)
#4: Vec3(-1, -1, 4) => Vec3Uvw(0, 8, 0)
#5: Vec3(-1, -1, 5) => Vec3Uvw(4, 10, 0)
#6: Vec3(-1, -1, 6) => Vec3Uvw(8, 12, 0)
#7: Vec3(-1, -1, 7) => Vec3Uvw(12, 14, 0)
#8: Vec3(0, 1, 0) => Vec3Uvw(8, 0, 8)
#9: Vec3(0, 1, 1) => Vec3Uvw(12, 2, 8)
#10: Vec3(-1, 0, 2) => Vec3Uvw(0, 4, 8)
#11: Vec3(-1, 0, 3) => Vec3Uvw(4, 6, 8)
#12: Vec3(-1, 0, 4) => Vec3Uvw(8, 8, 8)
#13: Vec3(-1, 0, 5) => Vec3Uvw(12, 10, 8)
#14: Vec3(-2, -1, 6) => Vec3Uvw(0, 12, 8)
#15: Vec3(-2, -1, 7) => Vec3Uvw(4, 14, 8)
Geometry: 2c5d-s2s
U: Vec3(1, 1, 0)
V: Vec3(-2, -2, 5)
W: Vec3(-1, 1, 0)
Neighborhood sizes:
U: 3
W: 3
Unique positions (10):
#0: Vec3(0, 0, 0) => Vec3Uvw(0, 0, 0)
#1: Vec3(0, 0, 1) => Vec3Uvw(4, 2, 0)
#2: Vec3(0, 0, 2) => Vec3Uvw(8, 4, 0)
#3: Vec3(-1, -1, 3) => Vec3Uvw(2, 6, 0)
#4: Vec3(-1, -1, 4) => Vec3Uvw(6, 8, 0)
#5: Vec3(0, 1, 0) => Vec3Uvw(5, 0, 5)
#6: Vec3(0, 1, 1) => Vec3Uvw(9, 2, 5)
#7: Vec3(-1, 0, 2) => Vec3Uvw(3, 4, 5)
#8: Vec3(-1, 0, 3) => Vec3Uvw(7, 6, 5)
#9: Vec3(-2, -1, 4) => Vec3Uvw(1, 8, 5)