Warning: session_start(): open(/var/lib/php/sessions/sess_thj6ifvo3rr51962k9rti989f1, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
srecord noeq G22MeshMapper_v2(G22Mesh mesh1, G22Mesh mesh2) > AbstractSteppable {
// import the important classes
delegate Anchor, Curve to G22Mesh.
// index structures
MultiMap anchorsByArity2;
// MAPPING VARS
// these are in mesh1
new LinkedHashSet curvesToLookAt;
// keys are the anchors from mesh1, values are the anchors from mesh2
new Map anchorMap;
// keys are the curves from mesh1, values are the curves from mesh2
new Map mappedCurves;
// EXCEPTIONS (e.g. meshes don't match in signature)
// set to the reason why when a mapping is deemed impossible
settable O rejectedBecause;
bool rejected() { ret rejectedBecause != null; }
// INTERNAL VARS
bool prechecksDone;
S sig1, sig2;
void searchForMapping {
prechecks(); if (rejected()) ret;
anchorsByArity2 = multiMapIndex(mesh2.anchors(), a -> a.arity());
Anchor anchor1 = first(mesh1.anchors());
Anchor anchor2 = random(anchorsByArity2.get(anchor1.arity());
assignAnchor(anchor1, anchor2);
}
void assignAnchor(Anchor anchor1, Anchor anchor2) {
anchorMap.put(anchor1, anchor2);
curvesToLookAt.addAll(anchor1.curves());
}
protected void prechecks {
set prechecksDone;
sig1 = mesh1.signature();
sig2 = mesh1.signature();
if (!eq(sig1, sig2))
ret with rejectedBecause(G22SignatureMismatch(mesh1, mesh2));
}
}