function tilingFaces (tiling) {
let {T1,T2,Seed} = tiling;
let V = {}
for (let s of Seed) {
for (let [i,j] of [[-1,0],[0,0],[1,0],[-1,-1],[0,-1],
[1,-1],[-1,1],[0,1],[1,1]]) {
let p = sum(s,sum(scale(T1,i),scale(T2,j)))
V[p] = 1
}
}
let face = (v,k,m) => {
let f = [v, sum(v,wpow[k])];
for (let i = 2; i<m; i++) {
k = (k+12/m)%12;
f.push (sum(f[i-1],wpow[k]));
}
return f
}
let faces = [];
for (let s of Seed) {
let S = [];
for (let k = 0; k<6; k++) {
let pow = wpow[k];
let sk = sum(s,pow);
if (V[sk]) S.push (k)
}
for (let i = 0; i+1 < S.length; i++) {
let h = 6 - (S[i+1]-S[i]);
let m = 12/h;
faces.push(face(s,S[i],m))
}
}
return faces
}