From b4d6abc57adae1b410fbd127a2eaa2d621858ef7 Mon Sep 17 00:00:00 2001 From: Tommaso Bianchi Date: Sun, 16 Aug 2026 18:26:50 +0200 Subject: [PATCH] Design: draw the mate connector as a bear face, with the disc kept behind a preference Tommaso's decision (snaporca-x0kd): face orientation is hardwired perception -- a toddler reads a face's roll and verse with no instruction -- so the connector is a face by default and the conventional disc + roll quadrant stays, selectable, for users who expect it. Preferences > Control > Camera > "Draw mate connectors as a face", default ON, key design_connector_face_glyph. Read every frame rather than latched, so toggling takes effect on the next repaint -- a look you cannot A/B without restarting will not get compared. Verified on the rig: unchecking it switches the viewport to the disc live, no restart. WHY A RELIEF AND NOT A DRAWING. A flat face in the connector's plane foreshortens by sin(elevation) and collapses at a grazing view exactly like the quadrant it replaces -- measured, the quadrant falls 89 -> 20 -> 3 -> 0 lit pixels from 47 degrees to edge-on. The relief does not: its silhouette carries the information. So the glyph is a small shaded solid, painter-sorted, lambert-shaded against a light fixed in CAMERA space so orbiting does not swing the shading. THE MUZZLE, AND THE MISTAKE THAT NEARLY LOST IT. It is the only feature standing along +Z, so it says which way the connector points and it is all that survives edge-on. Two errors on the way: 1. I built its footprint from height*tan(draft) and got a needle. The real base OVERHANGS the crest at both ends (0.062 nose, 0.034 tail) and that overhang is what makes it a wedge. Base now lifted straight off the mesh. 2. Worse, I chased fidelity. Scaled honestly the ridge is 11.3 mm on an 83.3 mm face -- 13.6 % of the width -- and at 22-48 px that is a scratch. Tommaso looked at it and could not find the muzzle at all, which is the only test that counts. A glyph is a symbol, not a scale model, so it now gets two deliberate exaggerations, and COLOUR does most of the work: muzzle share of lit pixels at 90/16/6 deg -- body tone 14.8/11.3/17.5 %, accent gold 18.3/19.2/23.9 %, accent gold at 1.8x width 23.5/25.2/31.2 %. The accent is the same gold the disc spends on its roll quadrant, so it stays this tab's "here is the direction that matters" colour. Polarity is still on the Z arrow's head; nothing collides. A connector whose ROLL COULD NOT BE DERIVED keeps the disc treatment whatever the preference says. A face asserts a definite orientation, and asserting one for a roll that was never derived is the same confident lie that got billboarding rejected. Geometry is emitted from the part by docs/design/mate-connectors/emit_glyph_table.py, not hand-drawn, so glyph and printed connector cannot drift: 12-vertex outline, two eyes, chin bar, cheek dot, and the snout wedge. Crest 29.0 mm / 6.58 mm drop / 13.1 deg against the review's 28.3 / 6.61 / 13.1 on the B-rep. Also fixes extract_outline.py, which walked w.Edges: OCC returns them in storage order, not ring order, ignoring per-edge orientation, so the outline was scrambled -- 45 points and perimeter 6.380 where a clean ring gives 31 and 3.335. Every measurement in the design notes was re-run. The correction reversed one earlier finding: handedness does NOT read on its own (5.4/8.0/9.1 % different from its mirror, not the 32-35 % the scrambled ring produced), so the cheek dot is required rather than merely nice. RIG-VERIFIED on Xvfb :12 against a 60x40x10 box with a face+edge connector: the face renders with both eyes, ears, chin bar, cheek dot and a gold muzzle standing proud; the Z arrow degenerates to its ring when viewed down the axis; and the preference switches to the disc live. Co-Authored-By: Claude Opus 5 (1M context) --- .../design/mate-connectors/bear_glyph_table.h | 30 +++ docs/design/mate-connectors/bear_outline.json | 2 +- .../mate-connectors/emit_glyph_table.py | 97 +++++++++ .../design/mate-connectors/extract_outline.py | 12 +- docs/design/mate-connectors/glyph-preview.png | Bin 0 -> 12890 bytes docs/design/mate-connectors/glyph_preview.py | 99 +++++++++ .../mate-connectors/handedness-sheet.png | Bin 42254 -> 35843 bytes .../design/mate-connectors/muzzle_variants.py | 71 ++++++ docs/design/mate-connectors/relief-sheet.png | Bin 25577 -> 24238 bytes .../design/mate-connectors/simplify-sheet.png | Bin 57608 -> 50634 bytes src/libslic3r/AppConfig.cpp | 7 + src/slic3r/GUI/DesignSketchTool.cpp | 202 ++++++++++++++++++ src/slic3r/GUI/DesignSketchTool.hpp | 6 + src/slic3r/GUI/Preferences.cpp | 6 + 14 files changed, 529 insertions(+), 3 deletions(-) create mode 100644 docs/design/mate-connectors/bear_glyph_table.h create mode 100644 docs/design/mate-connectors/emit_glyph_table.py create mode 100644 docs/design/mate-connectors/glyph-preview.png create mode 100644 docs/design/mate-connectors/glyph_preview.py create mode 100644 docs/design/mate-connectors/muzzle_variants.py diff --git a/docs/design/mate-connectors/bear_glyph_table.h b/docs/design/mate-connectors/bear_glyph_table.h new file mode 100644 index 0000000000..2ff5ed5996 --- /dev/null +++ b/docs/design/mate-connectors/bear_glyph_table.h @@ -0,0 +1,30 @@ +// Emitted by doc/design/mate-connectors/emit_glyph_table.py from bear.step — do not hand-edit. +// Normalised to the part's bounding span and centred: the renderer scales by one radius. +static const Vec2d kBearOutline[] = { // 12 verts, RDP eps 0.030, CCW + {+0.3842, +0.3294}, {+0.3156, +0.4002}, {+0.2424, +0.3294}, + {-0.2524, +0.3294}, {-0.3377, +0.3877}, {-0.3693, +0.3298}, + {-0.3256, +0.2631}, {-0.4893, -0.3337}, {-0.3960, -0.4002}, + {+0.4151, -0.4002}, {+0.5000, -0.3154}, {+0.3156, +0.2631}, +}; +static const Vec2d kBearChin[] = { // the CHIN BAR, flat. The muzzle is relief — see kBearCrest. + {-0.2682, -0.3578}, {+0.2628, -0.3578}, {+0.2237, -0.1786}, +}; +// {cx, cy, r}: two eyes, then the cheek dot that carries handedness (snaporca-wi3z). +static const Vec3d kBearMarks[] = { + {-0.1997, +0.1760, +0.0590}, + {+0.1947, +0.1760, +0.0590}, + {+0.2797, +0.0760, +0.0380}, +}; +// THE MUZZLE, lifted off the mesh: a tapered wedge, base quad + crest edge, 6 facets. +// This is the only feature standing along +Z and the only one still legible edge-on. +static const double kBearPlateZ = +0.0360; +static const Vec2d kBearSnoutBase[] = { // CCW from the nose end + {-0.0727, -0.2417}, + {+0.0630, -0.2417}, + {+0.0259, +0.1939}, + {-0.0356, +0.1939}, +}; +static const Vec3d kBearCrest[] = { // nose (tall) -> tail (short) + {-0.0048, -0.1793, +0.2073}, + {-0.0048, +0.1605, +0.1279}, +}; diff --git a/docs/design/mate-connectors/bear_outline.json b/docs/design/mate-connectors/bear_outline.json index 64167ab0fd..21b420c616 100644 --- a/docs/design/mate-connectors/bear_outline.json +++ b/docs/design/mate-connectors/bear_outline.json @@ -1 +1 @@ -{"outer": [[42.071, -7.071], [26.711, -55.263], [35.0, -0.0], [42.071, -7.071], [35.0, 0.0], [-32.575, 0.0], [-36.715, -1.715], [-35.828, -0.987], [-34.815, -0.446], [-33.717, -0.112], [-32.575, -0.0], [-36.715, -1.715], [-39.55, -4.55], [-40.988, -10.468], [-41.241, -9.215], [-41.216, -7.937], [-40.914, -6.694], [-40.35, -5.547], [-39.55, -4.55], [-40.988, -10.468], [-26.711, -55.263], [-28.828, -57.312], [-28.944, -64.382], [-29.721, -63.334], [-30.201, -62.12], [-30.35, -60.823], [-30.159, -59.532], [-29.64, -58.335], [-28.828, -57.312], [-28.944, -64.382], [-27.718, -65.649], [-25.67, -65.683], [-26.325, -66.047], [-27.075, -66.035], [-27.718, -65.649], [-25.67, -65.683], [-20.613, -60.789], [20.613, -60.789], [-20.613, -60.789], [26.711, -66.69], [20.613, -60.789], [32.421, -60.789], [26.711, -66.69], [26.711, -55.263], [32.421, -60.789]], "holes": [{"pts": [[19.052, -18.464], [16.474, -9.14], [-0.0, -9.104], [-21.926, -9.104], [-21.926, -3.535], [22.308, -3.535], [19.052, -18.464]], "cx": 4.719, "cz": -10.192, "d": 44.234}, {"pts": [[-11.493, -48.01], [-11.676, -49.341], [-12.211, -50.574], [-13.06, -51.617], [-14.158, -52.392], [-15.424, -52.842], [-16.765, -52.934], [-18.081, -52.66], [-19.274, -52.042], [-20.257, -51.124], [-20.955, -49.976], [-21.318, -48.682], [-21.318, -47.337], [-20.955, -46.043], [-20.257, -44.895], [-19.274, -43.977], [-18.081, -43.359], [-16.765, -43.085], [-15.424, -43.177], [-14.158, -43.627], [-13.06, -44.402], [-12.211, -45.445], [-11.676, -46.678], [-11.493, -48.01]], "cx": -16.223, "cz": -48.01, "d": 9.825}, {"pts": [[21.364, -48.01], [21.181, -49.341], [20.645, -50.574], [19.797, -51.617], [18.699, -52.392], [17.432, -52.842], [16.091, -52.934], [14.775, -52.66], [13.582, -52.042], [12.6, -51.124], [11.901, -49.976], [11.539, -48.682], [11.539, -47.337], [11.901, -46.043], [12.6, -44.895], [13.582, -43.977], [14.775, -43.359], [16.091, -43.085], [17.432, -43.177], [18.699, -43.627], [19.797, -44.402], [20.645, -45.445], [21.181, -46.678], [21.364, -48.01]], "cx": 16.634, "cz": -48.01, "d": 9.825}]} \ No newline at end of file +{"outer": [[26.711, -55.263], [42.071, -7.071], [35.0, -0.0], [-32.575, 0.0], [-33.717, -0.112], [-34.815, -0.446], [-35.828, -0.987], [-36.715, -1.715], [-39.55, -4.55], [-40.35, -5.547], [-40.914, -6.694], [-41.216, -7.937], [-41.241, -9.215], [-40.988, -10.468], [-26.711, -55.263], [-28.828, -57.312], [-29.64, -58.335], [-30.159, -59.532], [-30.35, -60.823], [-30.201, -62.12], [-29.721, -63.334], [-28.944, -64.382], [-27.718, -65.649], [-27.075, -66.035], [-26.325, -66.047], [-25.67, -65.683], [-20.613, -60.789], [20.613, -60.789], [26.711, -66.69], [32.421, -60.789], [26.711, -55.263]], "holes": [{"pts": [[19.052, -18.464], [16.474, -9.14], [-0.0, -9.104], [-21.926, -9.104], [-21.926, -3.535], [22.308, -3.535], [19.052, -18.464]], "cx": 4.719, "cz": -10.192, "d": 44.234}, {"pts": [[-11.493, -48.01], [-11.676, -49.341], [-12.211, -50.574], [-13.06, -51.617], [-14.158, -52.392], [-15.424, -52.842], [-16.765, -52.934], [-18.081, -52.66], [-19.274, -52.042], [-20.257, -51.124], [-20.955, -49.976], [-21.318, -48.682], [-21.318, -47.337], [-20.955, -46.043], [-20.257, -44.895], [-19.274, -43.977], [-18.081, -43.359], [-16.765, -43.085], [-15.424, -43.177], [-14.158, -43.627], [-13.06, -44.402], [-12.211, -45.445], [-11.676, -46.678], [-11.493, -48.01]], "cx": -16.223, "cz": -48.01, "d": 9.825}, {"pts": [[21.364, -48.01], [21.181, -49.341], [20.645, -50.574], [19.797, -51.617], [18.699, -52.392], [17.432, -52.842], [16.091, -52.934], [14.775, -52.66], [13.582, -52.042], [12.6, -51.124], [11.901, -49.976], [11.539, -48.682], [11.539, -47.337], [11.901, -46.043], [12.6, -44.895], [13.582, -43.977], [14.775, -43.359], [16.091, -43.085], [17.432, -43.177], [18.699, -43.627], [19.797, -44.402], [20.645, -45.445], [21.181, -46.678], [21.364, -48.01]], "cx": 16.634, "cz": -48.01, "d": 9.825}]} \ No newline at end of file diff --git a/docs/design/mate-connectors/emit_glyph_table.py b/docs/design/mate-connectors/emit_glyph_table.py new file mode 100644 index 0000000000..400263516c --- /dev/null +++ b/docs/design/mate-connectors/emit_glyph_table.py @@ -0,0 +1,97 @@ +"""Emit the simplified bear as a C++ table for the viewport glyph — snaporca-wi3z. + +Everything is normalised to the part's own bounding span and centred, so the renderer scales by +one radius R in screen pixels and nothing here carries millimetres. Emitting rather than +hand-authoring keeps the glyph and the printed part from drifting apart: rerun this and the table +follows the STEP. +""" +import json, math, os +HERE = os.path.dirname(os.path.abspath(__file__)) +D = json.load(open(os.path.join(HERE, "bear_outline.json"))) + +def unit_frame(pts_sets): + allp=[p for s in pts_sets for p in s] + xs=[p[0] for p in allp]; ys=[p[1] for p in allp] + cx,cy=(min(xs)+max(xs))/2,(min(ys)+max(ys))/2 + span=max(max(xs)-min(xs), max(ys)-min(ys)) + return cx,cy,span + +outer=[(x,-z) for x,z in D["outer"]] +holes=[[(x,-z) for x,z in h["pts"]] for h in D["holes"]] +CX,CY,SPAN = unit_frame([outer]+holes) +U=lambda pts:[((x-CX)/SPAN,(y-CY)/SPAN) for x,y in pts] +OUT=U(outer) +EYES=[U(h) for h,m in zip(holes,D["holes"]) if m["d"]<20] +MUZ =U([h for h,m in zip(holes,D["holes"]) if m["d"]>=20][0]) + +def rdp(p,eps): + if len(p)<3: return p + ax,ay=p[0]; bx,by=p[-1]; dx,dy=bx-ax,by-ay; n=math.hypot(dx,dy) + best,bi=-1.0,0 + for i in range(1,len(p)-1): + px,py=p[i] + d=abs(dx*(ay-py)-(ax-px)*dy)/n if n>1e-12 else math.hypot(px-ax,py-ay) + if d>best: best,bi=d,i + if best<=eps: return [p[0],p[-1]] + return rdp(p[:bi+1],eps)[:-1]+rdp(p[bi:],eps) +def simp(p,eps): + r=rdp(p+[p[0]],eps); return r[:-1] + +OUT_S = simp(OUT,.030) # 22 verts, the size the study settled on +# wind counter-clockwise so the renderer's normals come out facing +Z +def area2(p): return sum(p[i][0]*p[(i+1)%len(p)][1]-p[(i+1)%len(p)][0]*p[i][1] for i in range(len(p))) +if area2(OUT_S) < 0: OUT_S = OUT_S[::-1] + +def centroid(p): return (sum(q[0] for q in p)/len(p), sum(q[1] for q in p)/len(p)) +E=[] +for e in EYES: + c=centroid(e); r=(max(p[0] for p in e)-min(p[0] for p in e))/2 + E.append((c[0],c[1],r)) +E.sort() + +lo=min(p[1] for p in MUZ); hi=max(p[1] for p in MUZ) +bottom=[p for p in MUZ if p[1] < lo+0.06*(hi-lo)] +apex=max(MUZ,key=lambda p:p[1]) +TRI=[min(bottom),max(bottom),apex] +if area2(TRI)<0: TRI=TRI[::-1] + +# the cheek dot: the handedness mark adopted after the mirror-difference study +DOT=(E[1][0]+0.085, E[1][1]-0.10, 0.038) + +# THE MUZZLE. Six facets lifted straight off the mesh -- every facet touching anything above the +# 3 mm plate. Do NOT recompute the base from height*tan(draft): the first version did and produced +# a needle, because the real base OVERHANGS the crest at both ends (0.062 at the nose, 0.034 at the +# tail) and it is that overhang that makes it a tapered wedge instead of a blade. +PLATE = 0.036 # 3.00 / 83.34 +SNOUT_BASE = ((-0.0727, -0.2417), (+0.0630, -0.2417), # nose end, 0.136 wide + (+0.0259, +0.1939), (-0.0356, +0.1939)) # tail end, 0.062 wide +CREST = ((-0.0048, -0.1793, 0.2073), (-0.0048, +0.1605, 0.1279)) + +def fmt(v): return f"{v:+.4f}" +L=[] +L.append(f"// Emitted by doc/design/mate-connectors/emit_glyph_table.py from bear.step — do not hand-edit.") +L.append(f"// Normalised to the part's bounding span and centred: the renderer scales by one radius.") +L.append(f"static const Vec2d kBearOutline[] = {{ // {len(OUT_S)} verts, RDP eps 0.030, CCW") +for i in range(0,len(OUT_S),3): + row=", ".join(f"{{{fmt(x)}, {fmt(y)}}}" for x,y in OUT_S[i:i+3]) + L.append(" "+row+",") +L.append("};") +L.append(f"static const Vec2d kBearChin[] = {{ // the CHIN BAR, flat. The muzzle is relief — see kBearCrest.") +L.append(" "+", ".join(f"{{{fmt(x)}, {fmt(y)}}}" for x,y in TRI)+",") +L.append("};") +L.append("// {cx, cy, r}: two eyes, then the cheek dot that carries handedness (snaporca-wi3z).") +L.append("static const Vec3d kBearMarks[] = {") +for cx,cy,r in E: L.append(f" {{{fmt(cx)}, {fmt(cy)}, {fmt(r)}}},") +L.append(f" {{{fmt(DOT[0])}, {fmt(DOT[1])}, {fmt(DOT[2])}}},") +L.append("};") +L.append("// THE MUZZLE, lifted off the mesh: a tapered wedge, base quad + crest edge, 6 facets.") +L.append("// This is the only feature standing along +Z and the only one still legible edge-on.") +L.append(f"static const double kBearPlateZ = {PLATE:+.4f};") +L.append("static const Vec2d kBearSnoutBase[] = { // CCW from the nose end") +for x,y in SNOUT_BASE: L.append(f" {{{fmt(x)}, {fmt(y)}}},") +L.append("};") +L.append("static const Vec3d kBearCrest[] = { // nose (tall) -> tail (short)") +for x,y,z in CREST: L.append(f" {{{fmt(x)}, {fmt(y)}, {fmt(z)}}},") +L.append("};") +open(os.path.join(HERE,"bear_glyph_table.h"),"w").write("\n".join(L)+"\n") +print("\n".join(L)) diff --git a/docs/design/mate-connectors/extract_outline.py b/docs/design/mate-connectors/extract_outline.py index 1471a0fd43..720223c6b1 100644 --- a/docs/design/mate-connectors/extract_outline.py +++ b/docs/design/mate-connectors/extract_outline.py @@ -28,9 +28,17 @@ y, face = best print(f"back plate at Y={y:.3f} wires={len(face.Wires)} area={face.Area:.1f} mm2") def wire_pts(w, tol=0.05): + # ORDER MATTERS and w.Edges does not carry it: OCC hands the edges back in whatever order the + # face stored them, so concatenating their discretisations gives a scrambled ring. The first + # version of this script did exactly that and emitted an outline with 7 duplicated points and + # twice the perimeter it should have. OrderedEdges walks the wire, and each edge is reversed + # when its own orientation runs against the walk. pts = [] - for e in w.Edges: - for p in e.discretize(Deflection=tol): + for e in w.OrderedEdges: + d = e.discretize(Deflection=tol) + if e.Orientation == "Reversed": + d = list(reversed(d)) + for p in d: pts.append((round(p.x, 3), round(p.z, 3))) # drop consecutive duplicates out = [pts[0]] diff --git a/docs/design/mate-connectors/glyph-preview.png b/docs/design/mate-connectors/glyph-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..5e62c9a17f30ea871711d5e867b27cf48311bfbf GIT binary patch literal 12890 zcmeHuXH=7Gw=ED91r(7cMbIE19Yl~G3!$m7sR5)3(o3Y*5ZLZ5y@Pb3luZqxcL++A zDkXFR(tBv3C%MskzJ1R9cYoh;|71KP<0Xu-p1IbVYp(f*|DmOJgO-Dqf`a0PhPsL_ z1;v#(@;T`m75Vee#f&BjibwY~RG#VkX70>wK)H;^Kc5IlHQ+LiYxFS&7$t&t`(8iA zhp!Y;!IbT!nzwDocetCB%n05{A(y0wIzYkQH)6#1i?-Nh!w2Aq_|mnLXZf0Zyu46V zm8&?plg!?ofY|s48VL_Hgc3ImaKXQiBhR#q)X85ZxfBpUYAaqwi0*?pbv_d#F&|M{PSL0SL_Vvu}YN)zNMdOUeI z@>ejjKC%BNVEyHB%CGaOvZz1mhR;T*ws4aGV~*0F4SHLW$xr5G{?7*o1rL}_2KZO{ zOv7d)2rWtrT{}%rb6Xii#9R~68 zd)phaZL3}KKPDz7f>tpRgl4y`n|qxp^Hc-2fWisV%~E7ghvM(+S+V{2Usss*3kWEG zp1f?vDW>_$4OH7?$AcoRj&EBjZB2jseIB-tOAifPZQ;d?)q9W__xAQ7Pg`0U^h=~a zx1wn-FPA{UJIL3)@eDvS1~-{xIj5q_fQK3hNmA|q!H={^-ux}e@BS?}U%k?z%(Y%> zBVxt=DAErJjYU)Q7uW@7Aw@syBB=ti)ot?+b%#;!Y*(-TupgVb;DPgSa8vGr0;w*K z2=g-+463I2hmo0o*K01n(W5ZC|6V^h{

yop5!?__o)S6go;_vH41NZ5Tl}^sNko^ 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 the grazing silhouette + a, b = OUT[i], OUT[(i+1) % n] + F.append(([(a[0],a[1],0.0),(b[0],b[1],0.0),(b[0],b[1],PLATE),(a[0],a[1],PLATE)], "body", True)) + F.append(([(x,y,PLATE) for x,y in OUT], "body", True)) # plate top + zm = PLATE + 0.004 + for cx,cy,r in MARKS: # eyes + cheek dot + F.append(([(cx+r*math.cos(2*math.pi*i/12), cy+r*math.sin(2*math.pi*i/12), zm) for i in range(12)], "mark", False)) + F.append(([(x,y,zm) for x,y in CHIN], "mark", False)) # chin bar + A, B = CREST # THE MUZZLE: base quad + crest + nl=(SBASE[0][0],SBASE[0][1],PLATE); nr=(SBASE[1][0],SBASE[1][1],PLATE) + tr=(SBASE[2][0],SBASE[2][1],PLATE); tl=(SBASE[3][0],SBASE[3][1],PLATE) + F += [([nl,tl,B,A],"body",True), # left flank + ([nr,A,B,tr],"body",True), # right flank + ([nl,A,nr],"body",True), # nose cap, sloping because the base overhangs the crest + ([tr,B,tl],"body",True)] # tail cap + return F +FACETS = facets() + +BODY=(0.42,0.46,0.52); MARK=(0.126,0.138,0.156) +def render(px, elev_deg, ss=8): + S=px*ss; a=math.radians(elev_deg); ca,sa=math.cos(a),math.sin(a) + # camera orbits down; the connector's +Z (relief) tips toward the horizon + xf=lambda p:(p[0], p[1]*sa + p[2]*ca, -p[1]*ca + p[2]*sa) + light=(-0.70,0.30,0.45) + img=Image.new("RGB",(S,S),(24,27,32)); d=ImageDraw.Draw(img) + tris=[] + for pts,kind,shade in FACETS: + q=[xf(p) for p in pts] + tris.append((sum(v[2] for v in q)/len(q), q, kind, shade)) + tris.sort(key=lambda t:t[0]) # far first + for _,q,kind,shade in tris: + (x0,y0,z0),(x1,y1,z1),(x2,y2,z2)=q[0],q[1],q[2] + ux,uy,uz=x1-x0,y1-y0,z1-z0; vx,vy,vz=x2-x0,y2-y0,z2-z0 + nx,ny,nz=uy*vz-uz*vy, uz*vx-ux*vz, ux*vy-uy*vx + nn=math.sqrt(nx*nx+ny*ny+nz*nz) or 1.0 + nx,ny,nz=nx/nn,ny/nn,nz/nn + if nz<0: nx,ny,nz=-nx,-ny,-nz + base=BODY if kind=="body" else MARK + k=(0.42+0.58*max(0.0,nx*light[0]+ny*light[1]+nz*light[2])) if shade else 1.0 + col=tuple(min(255,int(255*c*k)) for c in base) + d.polygon([(S/2+p[0]*S*0.92, S/2-p[1]*S*0.92) for p in q], fill=col) + return img.resize((px,px), Image.LANCZOS) + +SIZES=[22,32,48]; ELEVS=[(90,"flat on"),(47,"47"),(16,"16"),(6,"6")] +pad,cell=8,58 +W=pad+len(SIZES)*len(ELEVS)*cell+pad; H=pad+cell+pad +sheet=Image.new("RGB",(W,H),(24,27,32)) +for ci,(e,_) in enumerate(ELEVS): + for si,px in enumerate(SIZES): + g=render(px,e) + sheet.paste(g, (pad+(ci*len(SIZES)+si)*cell+(cell-px)//2, pad+(cell-px)//2)) +sheet.resize((W*2,H*2), Image.NEAREST).save(os.path.join(HERE,"glyph-preview.png")) + +# how much of the glyph is the snout: render with and without the tent and diff +def render_no_tent(px, elev): + global FACETS + keep=FACETS; FACETS=FACETS[:-4] + try: return render(px, elev) + finally: FACETS=keep +print(f"{'elev':>8} {'lit px@32':>10} {'snout px':>9} {'snout share':>12}") +for e,_ in ELEVS: + a=render(32,e); b=render_no_tent(32,e) + la=sum(1 for p in a.get_flattened_data() if p!=(24,27,32)) + diff=sum(1 for p,q in zip(a.get_flattened_data(), b.get_flattened_data()) if p!=q) + print(f"{e:>8} {la:>10} {diff:>9} {100.0*diff/max(1,la):>11.1f}%") +print("WROTE glyph-preview.png") diff --git a/docs/design/mate-connectors/handedness-sheet.png b/docs/design/mate-connectors/handedness-sheet.png index a6ec4c2c52469a3db46d1e27f6b131f82a91246e..b44c37032835822a0aaab0a0ddbeff029c2e643b 100644 GIT binary patch literal 35843 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 literal 42254 zcmd?RWmME}+wVQVA5j#ME&(Z#mJ%eTLmGxI=}F!QJa%dQ0 zsQu%*{$BTWKlfhyUe9`-{buhM18Z2rtn+u~aeTj@^9WH6;x_j;JYX))Ok7`x|L(Yo(U$*T$c^_nk=$kEe#l zDm>K0Uw?qtM&IVJSh4(4cAH57-h7->H@^aQ- z0Rr`DxIA%(4LR!xH>SeU&k#|0g{1?8u z)9~aUUuFG&z!!|)^@cz^J(}#;(f+%Gv!8Udi|?|>>v=6a)I&U;iiKGJiYc?gdieY) z-ant2pVp-RYe;&4*SC;Ro(lY5Pdv`fo2}{W;6iIA%p6207Lt&!`rUYKCHS9XN~cq2qBwJAtkCrgZla`&?S*3VZc*MV0{OT~ zO$|H!rXiwxTB1@UPW+4iqYE}`I@b5A?t8$CQ2WO-%!EN@zYdw4mKZ0{`XK3zMW~P0 zIgEYz6MPS2@hEDcgz-d=_wT6DU2eWwf-adx&8UvQ|m zcke2G3}oY;rxul zLSfcBx>_yz1(bNTM74a)0mpy~6;T&xJR4h`Cj%8lp^!i4<{p0cRz?^4!GiW`SJqc? zj$rx6?!|s+@%sgCA%CuD^!{zM^A;)Z7JFfcZ@*ek@^v4sZJZ^}zh;k2``3iv%T^z6 zN9u!7ZYsP7(m%XKphbY>^tee^mq*>e-`F{ejq$f>XCq^A$Ya&HRE?Bck0F>$D3 z;|+ST_ArS3Qj+U}58GAY}Q+2O{IaaG}n^F&ht5Sh@gc+<%p$ zFrpL@qtq3y6#h-9R&YpArFNE|-bUp8u7102W^e)iXP6J{Rp)HS1=r=GBGK}(C~TwwwO8yFvk3K-Nq@SR zzIkgq@oR`AVz|Whs{Q`JW)w$i3OY5au_@Da%4t00o^*|Y6X_E=f@JQ*)G^#*qlB>I zRyLxtSt8g?p$#$YytWy)b48BC6k|x}9q9Z}7%Whd9zjUY%hdZKzR*Kve0kG`Qh0k_ zAmV^s3QQt6((T`qtoT01r5M=P{&5)a7t_(wK@`$Tc_1PBV<3^6&mzl3e42ium-2in z)V}W_qW0?t_k(Oq+cVy-=bMR~UFk6Ch`31d-WWo3a1VY>A<-?V#z2cVNe&+yB|4k& zgh(Ma!JCH|5MLHM7~0$^DAlzWG!qhkc=_fKn@>aq4SLgu?eO!6(CzfI-@Boa`}@0! zzB&tA!*no~C-9ltr*^vOFILE+Z;w5_TSmgjTjoR;FuZj z8W1$eh`X{3|F$!q0m4E(6P!cllOWMJ1f4)`12UezDb(-J*kv7EnfTKvMjcZ*7+Gy_5k$?@^NE(4%XuT8pHv$5q&AK`~By2pFhI~6}_3iHzVmF zDalX>Jw;&U?@deLijS1s0}ET6kXCXibXMage) z_XLgfu?%lhp`DflJoY{wKA3I@(bMRN+VkoR4Zop=T$0T_|8>?M5MW#I8+fqCdlyxF zZHs;!7EE~kbp^W=Sx%+fXRBpDgtn;=^&Mhzve|W}=_|;m>ARX(M77!4hR69?!z_n1 z{?r$1YT+$Ki{o3g()uFwhJ%xPIuoK&lCv3NO9Gf~dp#ItPRg%0gn7G<#0ejU)N&mu ziFkoY4r)br%pV1+VTI_N!Gg|z*t_B^#9wJdG&Gck4N*P2R9b7i{^*2WEW%8KxK|w6 z`gS9?rSn72umPm^B#LS~l`ML9pl^dJ^#_~J*EY82{s$$y4sBWQRr zq`AX3D1&ALED_XhLshe8@@$_*`ghoZbq9=q`qRx)jJtPO3RT=jGP+Uyk9$`;i9~sD zdqQCfh`GiG-&oD{p^-u|^NudNA0_+xngrbfZ#r4JFWvV8A)mecFOS2jdZb2rnj(rtnR+Y#@V1h23|uNIKn=&2BWdE&}Z zk+aSZ;NIh)PI-+@`(j%Vhj2OdCPLXazw|@&z^>5;k{F1k*R7|Q!tJ+vrjHBQ zoI0`ua*|7*^v9Rwl*wwCgr8~rd?3iAd;3u;H%f`K$Xf5+qgB3wB;{YIGK<@TM)I`* zhd*aV+7mpqGDwyQ6^D>Fh=1e!o=#r%3bn2(6(_eSE|-8OE@=Kj8`Et>{hqHUA4AI? z#@HBE=*B`N^+koL>2>>GZX2Smv1`@0JuKU1g2CCA&Rx7snv)rgrP3~gH$W^zSHzWN z6Ao)--dDejn=OB@oON3QP025%N@wFRJc)xY$1WAcNX65Vh_Lxs6_Xuxc&Z5ZY7=R_ z;P^eB9dua?d`t>#*e2P=3i>`Y8H}%Ft|Lf z2^Kn9P0W|jx;dZVib_iq9>Y$4t7cT}P)_$k!^Zn;qps)us%`oN?p5nC>H-q)zdEnZ z7u$SZ&0bdS273cLizoUbrFNr!Ik%|&Nk&$Ov7|pf7cUw=SAH!_GRK6;qc}b>TX>4U z@8{KZ{DqvrHCV@_Oo>*PN{4%)EnBbewczUCk!3apEv;kPdEWq08Oj;<%zd2`%czQo zC6KUDdH3`7U#(X&pp4q8dpolk&88F_yS&8DP$({4T7r!-4?6j-d-*d2bAu^IOC1ANhJfSKlMgm|a+h_HO@cHJ z>1@Z+ojwY+E7K$8LPC9HGeebSYo~&aS=FkuRC*g(P=_7!m^%1r7Ng2KDWbP&B3vx= zVa{s<6PZ(0PL*o~DG*q;7a^k>I}s5+3!zXxF+qgWTcjq zQ-Z%-@i)p{4n+@oQDPZ7C-TT^W+y|>2^clOhR@~Ywc}^mlB0!q>b%q_(Tgu8st*pD zjTU6q4`oi|&ZuO4MQ^-FhOI#QsN{wv`P>L)hwvc&&uSS|G0YnQFRV36E#k)6a&bFl zWNM&vSK!r)gV@>+J;jQVtfPGPFsiGp4{tPNG$O|7%{zvOKK$&(bg!B>dpQkeMsr&| zMg>8oLtoL*_MLW6OOV~0{&QkuNlLERO@^?Ln|T^+3wjvv^E#ZZUYqIAjYN$Ql{V*d zoiJxoR+`J8vwlrO@8Ylp@y&}aOj>d_>n`@sbZubd#NXHs?J^=>mqC=p6DCG_5etz@Hvn>3>qmFib6 zw44GzRz8f&_WK17X+Zjt7C=kQbWy?GT4N&KmT4rhy1b^Tx;Skzaqy%K}@Y$aXv zaAe}CQ;$>6CyCycb}^d?tD1kX^UPVeY>mV!RGvSI?qt?#jH`#kAJ5lvqCwBdFwErb zuj7JDhBD6Wuvt@Mzv!g6Vd~K976S1sBIF3(DvAVe)t<2V{VY(f=V@3Ig@13CdrX5uRP00qZZcJn_2}lc^;99AFrA&+~2*NebGctmfX?`O|La)5#o>0n5T8 z#SNUHhqaqq*C1uf>D7|yzi31+y-BEqGUWEz!{`yt1C+ZEm*>plfA>g80Y4`{Ia>kb zs-1Lwq5~|%+XG|y~uy`NVrtE_N@78xoC%WcJ4Ce z?dJ`)p)I){4^cbq*Ygx#l{N_)mn(!|8dtXckEjth=2uOjMEVtblZ7Y`AMthD^fHec z#t{+EHgVT1529Tst)S1$qR`t&_A((Kq_J+bHXfeURQX%l$Xiq{lTKGb`P7E@XT9nN z$q{tIMw9DwT9A=aZl_{G&pCN-wJZ%XmSI9}(@-+mlHt$~A(LC4)zwooNd@L)j=cBazHDzbi!QTJ?4b*QUjjqZq@McnxYPnDc@sBeBPpQ9)WNy72d=l)HlJ z%neD}gz_Y$NT>XtU0&89f8f2^^Ls>tB>#<`6& zp$5KQw-R ze%zFyvyqrG=F7w*6$ZuKzgP%pEzB#q)e6QvG%}+Uew41cMXz0)Pw)!7Gm~ayej6G_ z9>?5gGR%&al&dD0Lm3QK$t5h5#{QC=!>X#8<9;O>#;2X>CNC29w=fU^G|vj+vNL+m z;b-V4Em>%<>l+A*7FYMky?oaOg z^pzT6Q*WqYo~c2aSOpe*mIhZeDH?fQyL^IHru0U6N1n9zi*+CWaBm>f!Pq5B%iBRx zDi+GytB`nqb9b{q4bCj55IVY!jwT`1cy)Lyed7QCEt_Dq;c~>T6#>oqrBn&wJyFvn<$LfNt+D<~?21n`J#e z`Ko&bYb~9d9QRPezakq-78?BG*a$C%H|!`__R?&daO4s2rQ&(>!FxXMXk2rM?u9KA z7Dp7TXE?u*dPe7dnLr&16ZHxT5`e!yPYt`_&fXiCxkPz)E&erK ziz_|26%mCvGq@xuV`scwOS*nDgvaF2-cR^dRFI*_B9q+d@=^feSQKB6ib*eTNwtMpeia1-YaSb&%~d80>jNg6z2cM7nzF=lLjZs?N zO1O%z4tG8mYnIGno+z7<6-r2MN2~FSNouI)6Lc9(?n`Jn#|*^wwEYP%^kgKffOC6} zx&)LDw|*0=hk{RO`QaK(NIB()OuC5ZBtKky4f`RWK?I7yzg*?HG+IcJ2%CMXbM= zosHb(Qm2PDmqE({P+I51H)$WXycuu4+<60>B_oq~cqLs+*R^)bbZ`Vl9gJzl#<>kf z=yuzO;DHZRCL>^CRT57_pu7IBqt}u(nCmPs&SyAST5g2LS}(1y8~WQ_;ud}gqLtP* zVqcA5K6qKgm|M%*(TjO8ib@D#Y55$#`z8CJLH$T^q}AZKD&z4;BAZ9iVa(dYkCa-9x99yww4CU3LPFon9Fxf617RVPk`Sx>`p(8|^` zOo#Lf=*OnCN;%eF6}wQb4hRNP$)_(Psx%sGmol|1$yhqdxz(xhLb#1Whpp+D7&-%T z^3Gwj*|y~i!Nkf5DtIyfY2*VwjvL*$3iH6#JZ(S=ycaVMq5~$pDzRS{c~-ETol2}z zNX2C?*flL@{$M_Dq67Dg^LzaY;(cCP-jc1y^2VNW*^iCLcMihK-xj4-wNvC7gGz7i3NwvS#gy>yk9C#IRM0VH(~S~wUs zn6;~E2wn;#M6Dr;Bt!#Oz6odRR(gAbFy3)VBSxk&qM1xQw0(m`Vpg82rE0(aS&Pf0 z#e6f&S8r9Cvp~PNE{J0k%qyyz^M?19aHGVTiiAH3QWN?DUEjBF2B*_=$ zh~IDD4R*A^ibAx1Xi_jOY`;o|*$nc2$Z%<|Q2GxE<{ID#PINyI}xj{*n+Q*gBH|Ky8W0ddoHw|TDhB$9R3oSQ9xv?SwU15 ziu=BF96UT}ZxH^Zhb@y&X@FX)y%)D##5#b!-nO{3_^F z;c6|=HIDh+c<_Kj&hqK+4`FWDMo0pm(>F~N!pH*bz`c$6*vH<5Mw*YW*3%v&6ly|j-~>O%58|{445>IuO{TR0O}))_=cT_ zp2)juPtlfA41u)2W*Y9!(r+=3GxBS{D7OmX5%~{!f1Zt;l0qKg@8|0+hpabe~f}NLk&(4k^zc1OwYr?&0qa zUYj<=9_}P6Zbmcwy&!wjQzrr=X3m2FkM>epR z5Yl@~nM(m(QAC`_!*ViAYU`rpg$fOH_tFXR($fchXI8XI zo+|X+3*}s*toVATRWmRS(;q*$?e*V|-@moNLNc#RMp>sqLI&4V;Gy2{G>VAJM;>ORAXALkIIsFh;~k>HBc&z=Av=ZUha@yab&%qs>yJv1IO`Qx)GXB)Tn{+SZeWzHSRW&5pPBgG6mQqu{~PxMf}8S`3b zH+!L_nH${_%+mb2nVNyDKOKMX5NZqI8ehcV057KRCSusEX&LBYQL=t?8=(F)&Z_~! z+w%jkK?|1A0#?Hsb-mvlRpGK1o@u9y#xPS6Ma!D~CdT4jfVoRD-eW=^vw($fd`acY zR*%1|C5R8$-VYAWU9O8kdM*HHkRqdk!s>Jh;`GO-`*wTX0a-3yC2v8n@83H;c^;Se zpB6xc(P82 z^H$?vpCCXxy#byRQK7W zRnq6vHqrnS8oi7CL$nT?&P$#0^QMxFm82Jc&WrQ${&xeC6R}oDeKIAnc-BEwSS17q z+@^yQwB<&U$sU-i)uSRd)*Tt@T}|na#a4{x{bz%zU;C1*Ht`OH| zho29}P*&A;J|_xbo(sh7CVCU(ZTu0eSm2NI9@+gaLbIy__O0Y{txjBBsyQ;$sUlJ& zTPVcV4*q2=upl%mctdmLWq0|wt=^%oZvLjsb|Z@7V*l2|JL1!Yz}OH0?`q~I7H&oH z+K44&BtJ?s*U8dYRZLE0-WFP((f@p0{6ppnku;<3swP*Rv*=;tNtXPtMh#2Z$zuI~ z8O7q}jT_grL~W+=p%OL7&}AJ2c<%Qk@Klzk3L#l#t>nK9LZu6)L!^ln zCf}RTRhs@;>7DN=@yH5Ix1Dnf-~LX%cW}se664hg@K+}mbIXvA4w{m7I{MJ!ONU|C*HCv1AfKdY(HlfyH930| zoo`mxzu?e=X7SHg2&uN8x8Fh`)ZgtKu^X$9FtMyGX{#>hZ(OxsbzH}(^FVF%2OBR>Ypb^*s@h4@?VX= zJMw8Neyk7VdNsdpT+Td0+sQume<9?zn{lw0UR>Na0s;(_Y*X)TJK%YBEe<~v+WmUZ zv``Q~1dbX%vuz0~CA~pfMHx}DuRLmYGR5R~2Y>4KjAc9v*$1q)oXz%{ZrR?6)$BRH ziUZmH<)i`uvR#FK=JU>>qL#7957C9-UU22G8%jb|S?9sEkYk6{eirGk$i|*wUQ39C z=9+pp?ZVY^fOo|MMwo=VF()zY2YGWCn4IlXod^>j`_UlDl;4zSe#YU7GQ}&x(M({GX{T60j{gE=w!#vVyjFi59Ql~!-_dC3pENXTA)=KE4gzZIR;{zS< zn=Qp~s_XMb>=~574919HNIR)oOpJ-fEXL%17uyHmRKu(}7^NyJ=RU;VRo?k|FdvK6 zy`KJY(9Nbm^$t4NJGZ-nyHWGi3i8}|T zJ?(W#-V$;SQuf}*{Jw2&VWYy@gCfM%7x#-0-0P;3?uMp7t_n-%+?FXHLk#Fgqrfc$ zg%n)ZfDB9l9Bvm*ambS5^J%s!WLlpMx=sL-q1aTz9joVRSAuSIoAj|;(3JP7chiy( zr*dReX&;cFVHJ_TCheI{yUoP6fUqnolP}s1p>_W|1aOJMUoP#!2hLbEE}zX!DIDX~ zs)jMi%OJ@t@%W3|FWe|U3}nELLc;nfyo%9mDNM;>({;cn&H4*Rk-a=)iZl7jsJ$~< z^K6Vy{ur;(?{*@bWrk)>P{Z;#8dqg+QEB)$D^8D&A%2rO|I)(XLJN2klQ-RNDj)F# z&BRH7k7zDyAuE17>8fzN!%wBq$!2}kt!(vvn^{d#iR;p{iT->CZ=G_VbHj)u3pdLv z3gbHh#afP0QquQ*TEW*KkBoFDFN~Uv!vNNsOrqS=X1znMGb&KcRx9>Q9WN?z3^yV~ zvv)R1<8y<`d$~&CxTPCLctPy$v&i%j%Bgc*9iP)W^6yX`Y_Ed}Z!;v8?S&L1wJwV2?vn&0SF)&fB+W2-79g)H1)XjW{wXhl^Mj>8LEv0~f!$tT&PJfzDIgeRC-TfWHc>c>302#fWu5Ylf$tD z5f{fUB?l~a*RU(80aZYFKF&+D{9$9`?B%F+p^JrsYXf@HM_wK^=NJc z*6#m;0eo^d1#H^538tivaNG@@oIMg@b6?i8(#9{Fv4f*5>J6iQ^djK$oPV42C5yhYG3PKN36?)f*3VovIcmmn|1 zI`hmt^w=FzMn=Wb)$SI;I+s|=v9S~W$Cd&1h2R>N;&5|w@@7Q&f?3nZlA#)w#gOc4 zZEtW%`)wD%ft>o@9<4OM7CJ1?Fzm0)a1X+QSR}N*Dy2sc&tA+E1i|OEsB?Lt=}zAq zsl13BzF+sz>pKlTvN|mVG%bJ!D1e5PRcf(YfpG1tm((e&gG+@09N==E(|MZsMIP!aUv3aw=LY1dpo3}O@D`>c^ySGn&rQaJ3hSO zaKX7QySdT7N1V)s_0p6Q2I96pFVd;)%s+`=pTs1*D~dd)^! zZb1!Y?ByJQ;QMLBn+`Zga|!*kzq@I@kMp)$IcD!kLL?_-71cDa^hcf->qlGmDc&P@ zO4IiGZ>WHT!FpTxTW=Zo!~A=D(1r|FTY3~{-B0A1#%DtY!{%ISZ2{^s=AvHernO9L z74U~)alQ^E`gN_ol-HN%UcMEhKD)KoX1v7Jdve`n0=l(jrQayel$(A;6_+FASk%iX z%`=-G2_OKy61B$Uu&}U-@{N_eaz4Tw(oXbA_|zWslfTQ5F=$fC#Mz`{t{~=jT9c0q6(!JqX@actJYE;sIKnk9502*KCwmYM72CsD?K2B3D)kC?4WDYPp@blAQ$M`&Ncgv{c&_e(|1yA-UG(Q+#lI(puzgyuEF zfS2GjWa)d(ay9^%>O5(@7I){%t9-y!@94c65;Zs8blmM}yj{aGGA9{XTwK!U60&z! zQkI{*bZqPWwbUovK#pgfnF77`k*=6rkjX!at%QUEab)UhI0UA-B(2a2CFIoI{X@OU-y+aXuFm$+^hv;{^ z!vkin-H;QOz`@Ogk3}tggZ-;u(}-=UC}5*3d)1p&V`|DTIQ9b%FH`l)N&_eiH)S8yeOwBi*#2p@rvq-b zr0BX1Bk{*CEH8<1n`)S&F28M~&d*N+-VYQBd`eU5_Y(0|gc@2Dr%^EyBW13AL<`XN z8^1pWBE`$J-RP`gFT>~Xw3lQ=VtHQxrIl04{L;u-Q&eYaMoA2?PjlzL4!oSS&p*Fv zMbJm-8h`tWw;(mCh)WUeJnDP z5;j(~rZxj&$kGZ}nb>VqV60(c^?w1H173{FGflC0wH$ILS(`6qk~%T#hXibkuJ$Q) z<=p=^NwOwpe!Qhj)lXhzuv>+eD%dz*0SMp8wkU%sLTX%D((Y z*vD%-`->{3T2~pJ`Z7!pCUNF+qRNz1CXfis3%4?;I`>Ul2@9aNcRKR`^a$RNz`OH3 z$PSB})!T}adIICt)T@ajx4i`oj6op_p|d&m_V*k4rMA%!(saOCcdQm^`ju77G;Dxz zKF9%U(KA$`K82N8kylsZl%0#!ZiIJA2*p3!Ein2_OWS*;C22O0B}6+ak|ZF-BeAy- z7tO?%b!nvCO=%t2O3ROFOUE+4g%?x6DizOus}!LS681BgAy7-vC7iyK%B;|=66&QK zcr-XDNmTq`!z72ChSxgXximg_l_QK1k)OO8EBqf10|2kD50^L0JIgI^XAm|mdPXXY zdOh2OZbrgruj~}NJ!W_qS+-vi^qXvbMFnI}c1u&Ni{E2(U?yL1=&s~Q>tE=`) zqe>Ok0BnazW-| z=v1ts6E34<-Xt6D)Mvv)3q-M$qpiI%qG;c z)E`x1PNz-Kr5}8N{`e`z$zydD?Dc(l#?5CeMqSXrc=;4f77I7 zFmJPFScIPX-!KBOD1;MVoco~Fk#^zvk~sPE+bwpRGJ4|*+>sV#6guB z@W_24gQ3$UxLTk0)H%NtG7e^~Ch~PF5i4jQlTY7$=q@7NNp^H1s`;JdULA8<{A_dz zH%ZiEb_6F`utRnvrHZkoh#g^ln0)BzbBPIA9@s!i#8%cKM*w(z+c}4eNlB7HIuM3Y zt8t}8ayFv>&ityDu7h0^U?TR^iFekq`VNz_v7JQ_$D+j}Po?zcei&GUw(o0A0_ONF zHuY?CIa}j?yV2-BY%E@2nob71-7dj& zBXEP4SY`UL@={apL86!DnA6Rc0&b!u8Hq{Lk!6A|j4iy?T7IH+&(JK8IXsEE+O^M& zbeE1C?xatHkA&&2@=Z(vHMWbVV>GBTDSKX#GB2@Gx<+{<*ywg1YCQO;yUsceJo1r# z+*T_|S*@t7i5#b!(0j)A*i@^dCNkYft2^76?>DAM4Fj1+4qzbaWMX`9O1Bkyal4fO zc%bs(7u>P{KG5g3e~lg|GyborsS_j)G<9w@sE-Hxj<$E$*6U_n=<+8R2?e@wJ=Bk(*AQ9rx#9VUCVNN0s z;<){lDD+{BHpb%=n=Kxk#i_vBt; z5xaZW4-Q)GofSug^6 z`s3#g6sRz1)tzrggbJ-4<{uufaNqNt-MM<7EZZj7WwmUvvJ;Q!}3mP@Nw>nX+2}Ir1_Zqe? z0-Z@gk;y6OK5kITX`?8t2cMx80i7jyM?LXA*~#H`88wU^z(Mu>qZsziZeX$fwppq= zHDy|o%_ES|{%^Eo<^JlXC_$tvJI~QJcIKFzR4Ao+{4N~ER`>Jnh}?)AUMO7nDsTHz z7!WPJ3l(^6EYIHLN#a>v$^lm$i3;L<2yC}2L~ekK79b0kTmWRGH>)&jeGd1RVkw|F zz}@Q|>I-%=v~bpQJX?K`B)&?NcSBHVG7wrNu6gJ;z?)pMCi&|RM+!V-%+{|&1sq4* z{p_VZ^wZPlPg!LezvQ&+kb#^m*C#|Gzs8_DSw^0+D{g$P0}=O=-7sv0e`@%Er~Io3 zx-vx7?V6oW1R9~I0Jb~a}_#<#- z>FXrZo+Nae+-Ctx<|YD$Ua;SpiA+>Y%xcwTZ84+b3lXdltrHa0`DTN4#N_$23Cbx@ zRu@h7O^N*uc1*(zHjo~07I(V&4DgLOXVtTb`K);&sCbB}QV#&w6tI_Y(P#OG!sC&5 zmoN@FrY3xyl)9Dilnm*4b!jH-RD<#~gS{=yh&E1g%nmdE!<#ku-G=VoramU>Qrz@b z(2R!uQ`1}Y_X{{L?TH`l5=0%qOmf61<*4Q~l?cU_;LH{xRlI1EY(3o2&@<8zML86sa(G6h+!HaBCohz(88Lonwp^rdT1IcPxUH6l3Dwu zAcMM$H;8LORxE3}M+dmW)(7*&w>B7Z6nQ}>si{i*@ujPo`2N7ZdDT1}LN~{I%nn;q z>dQmWd?iiS%o-~Wmn@ye7g3y#L@dKyxzf|7bcxF9C(@mFsPN(NpE$>s`DPpF8sL=z zI<@5?$nC`^A{4+<5;SctJ7H6^;`><17NH$V~?ZLzInvyo}lpjq$K9 zR14la9feN;h>)3c65gMn_)9L!WSlo{X9XUoy_O46m*+>5I6Yl(a9=xH+=8a>67C9E%aQz5V zdg399bPg{3L;a@hB-pAl!ivwe2d~YDcNA>0Cgbkr=@E2>$=fMO$W)A5V5)_2J{ti} zt{)|25^1=I{`lPmK(7ogyEJ!yH&oPS1Q~~eb$$|e1N(lVFW(O+E>|4GnG01^NE3Q0A zuNn`6gI%XzAnhWO7B#Y{WK>La-EvrGTm2vWVKac~Sdnd z?Q4Dl&+1N6$0z2M-?$oWoFkN_|H@t1@%^(7fq#E3Ims&T7nCl0hX+iJ{#QHz{q6b| zV~b-S`5lFL3CueqA$>BBi8rPdEEJ}?G_b9TY>F1ASC2r#2B5PKFi?ssKnNs(=1%E> z`&K=}MYP|AHG6F`p3~**TrW8&%(SKZr32o@s>!8c=?;z z$(jFUaRFKjB zM9WQz4|GJjRGn~vViTdY&+#reM>@9cLHh3MkWD*F7Yv~~UbNGvvc9)9nb<&y0MY%i z#}h;mTZCCQIfr*X0*5D> zSL2}qS8ZoUJ_`1Cc))8ix)`48jj3iWmh6&akI;s}JvjidR0oo+3nw$5yV%BT;2vCG zP3~X#W+YJVK$3%g&!Y+`mT+oNX?=Zft4B{2 z)vw{&M__a?!y~}b{}5goc5Hsyn8Msb0@a{9p2b?q$!?%c8(gY^)OcpyYO(pzM!fvF z$|!9W8s!@3>4q#v`7QD1p?M)YnH?tBz-6HkX*Ck|&qGP~v;@R(h)VlZQQQ>JBiwf|gEbkvrSl-~X-&=}(B*Tt^rN0Kpu)o>fO@WvZd zmb&fE9VElAK|yz;&m{^7(29N+D9?yvND_~PC|sSn~RahB6==Le$gM`%`; z?o;*abm6!zot*m#v=H%4_@&R!Z6RCF%Ieyq$El|h zpH3TTjR&vlij*?Qh$1-E(ocVVSEp*kDe1c1UJ)r1@IAYQ0UG+J;(Wx_43h+6GhyU@ zmpVoBIMwm#UvB3;e*wGz_Cbd0TK&)6{f^FmPy@hjgBv}-w*WPwTt4I2N3-*$H(IlO zB>Hzv0jtG<50nw{hRDMGDPLRz&MU+SRkMJ;l?Dc~9fl7zeaG(?b- zo$Jd-me9-*uY&ejV}-}-D>`fAH8&BMf;_9%)kSk<{6y@ z&>bB#apk>4Qs47G*n6*lsM2*^mmtu9ibxd6h)97TAd*4J83{!cP;yd4az+u!If;al zoI#45QE~=Jk`W|Tk#j28f7#RSo^$uwYwdmZIv3~63+|y9HO4=_?|Gls$bJ0=MIhoa z?KfWUS3d0IX|?sJL4r@uOpCbd<@I4PHz{0~fdvK$8&WB)(KDylp14VygJFwmr-gG- zWEZ`_fVnDg4ou_pY9dYPk}!ooRriGaVFjUyW4f-Q!6&`-R96hi(CBSzE3OIib|Xob znfP3IxE$Us#L9i5b752*EzMt^I%`}%NXWU)00K9~1LwCs2mbC6D6XXYn2oDr5Mac> zr6oPn`STHU=wBaF@AIsuW)_ffqW?97Aaz^?LAsY~%qw?1<;zpCNJMg1ZjEhNXFF9w zV*3*sNJ`E)3U^+_wR=3sAWw`M8 zK68_PI5Y76WSX20p#2_ym;`dTFAQHvi@p4q5|P}gHXZz@MgT#S#-p@jy04V$_3o7q zngUz3zQV{-WP!nX9Ev%IlYJFnEC!CIm!yI-R>hhF^9IQrl%y1c1x(fxXc*B7ft0Py z>=@=)skH0Hb=lXIzsU`r#Ir#>9gH-iBm4r5DR(vQ@3KBI9967;)fIH%*w%=No>L~o zIXslSg@0P!rE-3O(o8O}YSj-18+Tw4u)3%v(SO!@}@tI6hgZXcBy2*=eb#9Jycyx96sdUp(S-#y}#!=NKq zhVNZ{@P7mlFjA}NPtpfl6&OB1kg0*QKd=ZCef;JFFskKKMOvZ&R-*Wp8NQ`-13zIGIt!!;d72 z>U1~`zaSu>xu_z^qDt;U8dTFW=PPQNeA1KG9wGxSf&T(M@Z=Y z2Tr%QP5wLhfq~l^^y)?Lq=Pur*241=9sm%xClP1dndOD|eTLEp+aWW1^m&Si=<8%8 zYDI0V`Rd$@2Hv)QHdFs8L9py9u>Rz^K%R7|LVCtoYe3A=;MgH%yguvAL<|)jVBOhH z6PCBLXvfPm3O)YlhdHOmr`5T1kl3Fe-Mgjz`A(aH$vEKW1kBBUozlVeEZH)I$h$~Y zTyXZRNbKP|nN&c4p$#iuesNyx(Z$gdJ{{UlLxUu(^4g;{uengz8YV!9{Z?1-@k75? zvs^W-E*6!yJ`-MknDE`V80%_eYXdRi)MfGj%5b1jj0Ng(c3cQtBHJ2BCo**^m$Bq z(qOwazZ~@7(YCuOpa*=(UXl3li57dWm}gj!Fv4vN&$wc^mVcdT(YJyPv*a?!;rC(Z zy_%O+a~tiauX)1dEN93@{~;CFKDmnmuQd_J5C5O=1NJJv_yL{GUMHsiJ*_~!vSQh8 z0#2(auR^A#{rToJ#AZN<7 z_%#!!JZy$|bs*rM-2&df-fYp)B4P7pjBzR@PstH$jg=NBI~JRl&KEJbTa$-ZBG!Go z7F<^X2|g85%(c8EsH4%GCy^5VUz-J*Wz>+?jvv6Tn0s#{Z)zZ=#ZG<6UpQruiMq9& ze_s_w5{m zJPolZrHIym2a=jn-m&G?>yfK#g>s%c-b#W~#E#F~a~9JsJOc+}DFHS34h zZ~nEm8~rG@mvK-2xnM`{>g047Ao1??9zUn z_5Ox>&qFIeO&f(WWnUf9=k`AZ3WKP29*bqzD5Ahx1*A=ky81bO3DLmfOSZrsqN1$N zmHwaO1K*PtcDpcR|NqGkygb`c-dWCg3?SUl@yo_2r=WhiI%TYc#T!Wp&#&d*BvRE; zOIkXv^j5_=M^-PEHH9Ux!Ij|}Vl~c`JxI)|(~AN9I;{MOn?W%1w2Tx|P77UOQZKL;pfzz7^>PeV zrc4+N?24LC!_Dl12PAu%^f0sTK`=-BvPyxOGT)nnTBreDRj3_gthn!_rAixN@`m}gRV0S4ydx+ zt)AR${ulk)Fj)MmwwC#|_0RcE9nC7YO+39h_&t3JNCrr1ufKzvOmJT_c(bWYH)S@zvl{bk~kw5ZgPM%&@`{l=2;p+-6GEZvtmea zmYp6rtI@@{_gM(HsN;VPJ2Ab(nAYPh1txl3OpNQ%x$2TUKW3Eh6J9aZT=@A-MQT#A zzfu4604|Pxf2I=o6tDQaKoWq7mU2@1UWn zG7}`d*H|^ILicZ?vwx?_jl7ZdV)scz?VsaO_NWFxhBnn;g6;CLtu8+_mV#UOD+}Tn z8P|P=Q|*GOI)^U}waTwZSoEHqsw-#z{ltY>Xklg~D_J_t~ zPf%en9#V!5#&vapF)l4Pq$N7e3o<3-NcSD~?E} z{a`acenqEHx14YV*1@gjA27_2X^|C}lcmfO)>ts>U$nxQ$P(@U3-$!mlFeiyMx~f8 zrn2FX&+W=R!{TBrx`w>qC1sMr-7OM)op&$y2EDgm;=CUhp&6~tE_e}<>`5n*?tTVk zN}tU=JlQMfox=uJ#8S7N<$x9c=@XCz6D4CxaGPfr^m6rGGx;nDEw-c^eODLsx#$KT zh*_p2IN!AFCt&nMMI5JR(@cM?Ru3Vqw{*vtWi*Ga@RvJFWoAEFZyRVa|M^_l3 zlc6jFiJq6#Fw)2oj8JIxcC@4GCDUw!38}5^ko3P;5jFk%!s`|}ziXVbs^EC|j z_xsoJmU?^&5~X#>?#hVQJH;N~Du*ER2YnO=Qr zZ2SZ=!GQwo^Y#hk{oO*adJ%!6T!8ta`>5_0uQw)FGn1Nx?ok@?~nr?Prl`Z=9IL?_*TZ08q#o` zOUuyneYj2(plTOZC^*#EBy#;csGum{pXCi9HF$>Wc{q49OW8pOaq?%o|Qt zp>8hLoEqD7Nc`x^5gT~xj_O1RLF}u{;NqE_4s}{@Dltw`V~m{MzW%Jh`*qRm--bzk z$`o1>=yAw+h@~`UpNDI7Aiky4H%zOC;)!!pMLs@^!xtwa&Eq@?VMD4poJYA7du$ZD^fIT_p%j?WJ4RlXK zD{k2+GMZ)#I!>~b+XVIp2NQDJFq(FiX+Ivfcpy)!)V-I*nTm_92_|b~d{fmNKhK*; zV?#e8UvB(1ojehmTZTK-e0yawzDpzB$%)8Bp46@aRtA5h`C9jwuOv$uxd6M5!h33_ zC2!^`Ev~6RZnFc?E_+jhc`;XXRu>YmY${zz1{A9itoIF`A;eVKMhh(1OvvcIJxL$e zRVMw*A9+22)~j>)+Tj-PTXH)i9eJK~Dun_D%0qczk(r=;fo2 z=OBm=cXd2=wtC1!BdQd8aj23ywmsb6OgTR7Nzb4z(-T2ipJhcY2N1GpI2%L$$~0>S zwu05@nCz6Xr!3wNywu_1kXP0OC(cP(we1gUz(cA>(kP&XhUe`?Nn@L(x1R1{($6hBRMQdj> zM_|pm&b~eql?jNwdQR4{p@UxHb6X*Pt&%^D*=v6sL28Ub*4ckt zw;(z~M})jj5rX$>ff~kKl5LDN_>tjVzk*6c4YTW}DM2}%CUwHsC#jE4XFVOkW+0j7 zRn@(voFC7OSbSUaTCBU;MvRE-kbR~ z5dpu2qI%DQ*k%z{yq5^h`I_`rze!$|NBW%HbUn+warxN9Mlp;m8Qu6=`H z`vfv|&)Z4fiQ^%ZIZTidCuJ)3vVQyf<{Pr*_fomtJM6gl6VNW_X~eRzK9Te-JQtT1Ww;}m%|NjB%@w$3~%wZBT+!Sh?4 z>My@TPk^FncnaLYKa94`fxP1KABfErFcP>ye7M5ZMp|O}{*SBke|x$9|G|!efBg(p z*-mjoRyCq7(JOT~`hT7!3=eSe4^`V7eZQ*2jIg`JoaHCel}5w<{?FB70GIJ?x9dBv zZ$rKg$iJ0X`Hukt=9%Y0Eq@{)=(dB%!%rp#1Ynv!ur?$)o3{U(e_gag2yvJd&eNF! zQtf*zG&T9myBJ}5qZn>T;Im98IGg|8HIR=>m99Sy7T>B$;M|A-1dNwx( zNVxS%o~vMiQ}pHfyx4Dn5&JpRYL}RGQ=~t?iT#7RGFc7cHJ$b4qVcT@5)fhCTCLo} z6ss=AI-4c~d;3U#jgXgR;)Mh{Zx=eoSwFeZHtjIo1V8FeTi=kP(MNK+NGzE?%=bdZ zM~STG+kmw7A!?{0a_JUx!mbpVuL|H=V1}&3j9i)9;oHOf10~>!>e#@>|Kv&36sM2B zg`SputGMLiQR}7Yb5{tnVzZa&4hq}2wi(!;2NQhl9#u@9ye@XYK6TsGYW=PKi-7Ab;{>CdGE0q|iNJ|~%S6q3 zuh!hgImg}lK1Rb?G}Tu8#f%g=tE$K1uJoU+ztvK72^@AXA3Rs_X|Gsr zWP`&U`?r4UdI&UCct2kX8uvlyQUS=PImHT8Q~q2`Qv<~S;|AWvKF|gz^iyM;oM6^i zW1zQ@Q?;xN-OKz|8>uq)U4Mm4iz$a<+2)k-cPv1n~ zERDvBoocABrIbZ5`yh;B^mTg$)JK44hca6^e|4494T15PFsw1-K~0g2APtWo*PERm z8^W6=C^#v_x zOCBweSzcazPF?Fzh71v%XpN-a3(`FZt;vg!vVPlk{KL8T(kO@WYi~Dev8_$M4Di&$ zm*7cFZy@F=A&s4suMgVJuPRlxZC#6ig7M%~G*y$e*eH&06*K0GMh7t_J#hdWnBUi> zdmfs>SPbYk;P4{l_f$Hko~|}x2zuA`ArStm_0I>(EA8|VyAp^68*!M6UsjOU&~W~! zc}%}u?>ZFT15BEv+f(w?xUQ;h&mF}nE~LcZ?++VH&9Rc45g1#1#RzOO2W)Cj4T7ni z0m+&0)h9tSPDo<-FHeEG5rb3){o-rS#YP&8nO(mZ@FBL~<;7;cua+^I1&`EewF!wy zL(M%n>vPmxI7eMD_!%-$`o?3={jZ}F`P%SV) zX-%=*z2?pb_36LJk={krmhMQoonq3uzCyDH#ZZ4S!~5cuGutFg_tV81UcMmkSUEg- zH>2OL%0fl?-KqE4!w^M_z9+Ag#Xwq?qYtlAqr*xo=Oi0Y{PWA_qLjfb`XN_@ci&=y z*`~&7ncD*pgvq#*u91bHQT0vFcihXdN8bNZOA6IrlVl>iZT+Ama-!rHV!QAuEFff< z%dzI`F!L)V?4zTbCqF$2=WA>~frAlLT|zSxbzUg3H%9_2>Ue6`Jk#X(8}Z1I`-rJX zlfU5@VUnvNw#%vcm(KmGH!i>ec{rCLt(|BXv#2T;*Jcv?KAf z@^jw9+BLgk`!WqeDs;eXl3nyyz5t7Q#dpnS3}!HlSGU%KImb)4jtSnAr)%k3$C+`M zpItuOUxWnrkJ+OQLQ^OgtfZ2nM`rjeUEpv&+?kwjn~z1fgi&{ti)y-D-b`@FNf=l5 z=(*`1lXh}q*3n2C($T1N*#5xpHUeZ-iPfWqxW+9@>?YQH_t&1D5&I6wVnU`CG}GKv z(2>L8oV?~Abd3d9J$AFG2B1o>XTb{%Fa>n?kH7Hamk85|`dTL;Oi8$keT3?E_tB&4 z)H;S$)es(iyXp2in`VgqG{bm0KJ+hQf;vQ!7yK%P<@;r#=W;&kn#<}>8j87f%kq=o zUXD_Jc54x_J-Gf**X5SkmZC;-$iXd$vV7h0_N6M+AXNfLXg~=^e#?K5la>O%e&RYG zG&rNc^@YYgI@P)l@vdMaEJCX0_;cWi2Z>4uwJfh%#DI&uDN7M0?Wx9CHs_hekyzEH zhaHUz%KqdAOlhDFwTdE}E4=t7@nC6w)=LdXbT`i6V=du_(iSupg7<)>Y79)5D2=a5 z2(mM(?HLELRgLz$S==qwuNT4l$RqM)G;lDTZdMO-V@ew{%&^GqBOVceCjTKRpnc-Z z`MacGqljSZ%g{{|=mnUCdgFQ`N$09r0GJ`Nm~=Qy-%Y5>eru_#L+BW7!C5~46wgH} zPjky`I-hpFyjmJ;XJ}R zB<7X_M2Ho9oG|y7Z53zFu2#Oc_>r`L*8y(;J90Aq!hUb zc@gNZr?j(~kmu6ukV!MHy6cxbr);u(Wsl1z-ZD%3cVDnPD9F>VyoZ!QCI%#9uVjegFFbJZLd z|Hd0|mwIk)A=!4E$Bgk`j@q&6 z49lNR-K>PN_R~?ZsiroT6k*ow^>}?O7Q;-bsd)6D(z{%Q;ncw4jYOmMIZ`oN@H#T_ zYiCwvvLPM^z?pSodsZpfLSa(84;{l6Sgrk+?=dso(M4C-tm`}AxFSBd*EBTbvKaTL zSM-ntgC>X?@q1cbQC)9EYhx&juOac}TGh(V7lY*Kl8rQnD!x#***@lhec3ndJ^${` z+m-nJ*V9dqff36DDcLG);BtcTvTyqeT+y~wtSn8~$jpn@#NhzQ3U*5fw$idMqZ@>L zrtz|}iAeivt;KdM+uKe8@wfWCH*RQ-1$O)QOCOu-N-4iDY)0d1Zi!G|B+VoD%Ij}1C3Wr&KeeRR7Ataq8! zSV0ZxbkjqKhV&TCZOk!THf)0z}hIe_C_)a1!ogvxEcP# zQ_#2`%Ioqr#_?+xZZ8uPvwUn9MWAe}+MYHWr;K}%U7X+XDcf$e!%058#Uxp>Oc-uf z<1bSgXYbVZ4@?|=an1{F$0xFx?5}D(+UYUA+F-+`Nx`Ev;+0!) zI67M2Y1{$SFK{#*D1dkJfOjavQ(tB_Il?cp+_GOlfOeiG3Z#Eq#WEg;hQzpg^7k`3 zvJqrX)uz!I_UK124_e+v#grfK&Vt>!I9yh1<_V44b0ICgu)M*wuXp5DYc6scx@QMu zH20Sq44MBdEhwWVuoQ=kz9-TJO*W49u{JLnkLv`-FNdQnjOrxg))mI$|M?StOKz^) z&T6ca(6)JE!}mBB<7}PT@##TGjPHoni2RwiM^T~;(GeQiFQq77>+paTs4HI!AuCKa zPR1xX$@yNdZ9M((iiF(-H~yH$UA#r4@D1ev>PmLz(+!Q!yA?8Q5{DozgYEKC;WT9; zU|$aAzVmqj?;oN9Wb&3!;I2;X5uJ;v!6T?Q^hFmq%}I=o%sT@W=-D74(!~5>8QNQ5 zcV5{zOJ^Q1oHvEF=--)rG333@*nNTK1(|k_nEq8*Fk_qfwT*?pO@dnDCvhOt(=p=q zB=u$_y2qfe<|lG6;v#xx@I-1FPt2Z$ZuhHV>wGm<{6W9qO$@zRPc6&MI6vnhV z1s{5%H3_BGMnW542Cs(SbQ3lvw#TCuq9Fy~jU(eb%@}`8-cR)k+DZA^{D%gEne#6m z{azbAr2Jkw*nkjRtq=`99@#PL6BVVSFWfV9e<7yRVuVZqo9tb0lxo}x%EItC+I9`Q zVJjU1nv8HinW>9w#||d%w8T1q>6y&lEZ8+t%ZJRa&A=jhCpV{4 zCNJfl1J;+N@ofX4REXD0^YgP>+Wd%p$)Brskm3=d%@DOiHj}}X3)PS{%-|MyHMBXu z?*_fP8!}rMU2@UH(vXNnxSRoy4uePJa-+G^h$rnrksz{+Ub^SWF|`KXq?7H?aQ(dM zYHstz9QJKRw(P;6Jn6d1*@nruk+3_Y-Ma=AY>i$fT}?x$nU-xjv|?C_ts?fR$g*jZ zoh9y?*;x}QdfqnQ&uB^k+YmLGUL1bQkurN%pQT-H6)`6t_GbE`WHzV|AIy2{PRELu zN>4-t4E0)TiRpMs4E9KKY_phS1Dn>Bn_<^<(Yb=fZYt(Dwdh8=41Z9#iVeGDi~jd2 zx?*|U5{NIvEDtyQS00-hG%z<$W6S^!cv+<` z-^i|vD%b^FJPQZ|@Z+uP4LY;~M{nx}{-?5o?SyHdxjX)>H7*r{v%?p^7b*3q&+Xze zcjMMu0OP)YtniWM;5G|68d@MfU?ubp6~OxmEyVZHuNdX+eJsEkxp9V$QLlr^_>QdP zTEbV+g<_$>YztUzP)oq@2PxLAR&b04kt!|r2v`R7x%CT`4kL{nx3RmLl9wj-*P=ia zx;$^EcRF0lr@K)d+iNEtuVYVCFpo_z>Plq!aR*et4B11?);d$628+p&A5zPi|Iihy zS|=HucKxKiLYb|CSvUJLJFG%Lh=hzGbLBkqBRB{)9cM3Qhib^lj(CQNLYVWbzsldr zW&az{fqCtzW%&Ag=HnW*7U;o>(6${^G+hX%VJpl4PKIP@(8D$WC>`*o%{`pG2Aru3bRH0}ZM@rCS$>q>+tF~;%$0nYXDy&+*ltzv8Lx1;=a+2HWj2$i4cQHPky}twx<8gaJoEzMSU_lB_vdX5a<;UdP zE)S3R@302VF3nXYJv4L0H8<09D=Q@Vt7ai_40>JNn0Y=V)-fs*6f1$k4{2G}8go`z zrrW0YBHY)~=+_e{7>)L{1fyEjv-*ZZyl>w8StgX(F}#bj6^nJTSSo%b8-37-*U=4VuE=_$J8AfLyPMc`TMXSQ3k zRKCZIv1iW5+J+adWG)jWG#f`4c=;ckH{@K&;&KfOWG?6r_D5RfA~8u>)!*EekYs*;`f1M-51e({yRglqeDX`LTjW?j%FzK zb=Lodp-B4;uEA4NT@8p?cPd!OTq9Q6F2|qeTN2 zADF%T3!&)9D`@yf30Xx zyQ|A;r%G9pv6a^u7TNO6mp!&%G<-An@eC+cdBgktNeJ2p(;MAaejSvMY@49GJT^7{ z@>c-In6mJZYr^*0I9d|6H45aVns7m!87&nbV330wJUGpk@*LTf@J;|2i27dI*T*;1 zV=sd*toYLJ6%9(LDka?QbFI4?q^aVg*s}lH(14r#Arft0D0E7-!ujWlhDs+pU&a56 z`~;Zj6=D6aS{mF7310S{yz1)){v90c#=3~b=!f8BHKP=<|2Wn*b+%jFIY*bYfBNx~ zKzgU~$d@M&&{u1cEN)!*{XjA=2HmQnMKxv~Su-NUcV14$#$`(`p+yb{Gz(ld+;(%V z`r3b=et{AZB+$lu+N^TRwr=-lc=*aFaA*6j=Z|5~t1;nTN?o3RFLF zLTT`IDx>vAi{QfRiilS7mZqPgk#bj;B>p(djhMk3||}p5zsKzYx1;j%zY~zbnr|;5vv7n*7_o@NfIVzwHbE zwlDnKzVL7R!oTec|F$o@|GFjq57&fW0D9pf-%Lo1KE1@e`@b%b_&>2P@R+5sFwj|~ zFT(m!RheG-Sa}shGxC}^X^Sq`TYco3 zhz;c`yf)$htX*@!uj!M*;dA-`>eDO4P)hc<0tQP`cJ1n46qRgTk+%AQ2;~r0NB;Yv zXe^kQ0^L^hDWqvue~@>N+EupoHyO5JunFf6OG?HHUdCh>gM%M#9CQf`n)}=aeQZCd zeX4ohH73l{0nC{2XfFTMr}E60@8u*@STH4zLE0N-5bx#imZ00(=y$}nZTzTA&J+m3 zgBX*C7&hav7(na{`V16&+AERfIN#tTPfurr-+UFjS0NNa9FwzmaXv2ywlP=c9OIp_ z-Q7sKx=DX!p}+s64we!cfAHb@@Pb$bDLKK&eDD2Iwe6tEQd~fvB~O z`*|%Ro8IB&@Q;@>z;PG@tz_HMQ=y?R)c~#2JIz#!I@rJVu0J7=d9N))!znzlVZ!`a zO!u)C_vJ+~q^UmfI@}{HeTf!mIYLsb)r4b*W-+REvLHI=b@0PQo^{a8z(#)Gr@LW9 zDz2GxBDF1zYh6(zsV}#F!Os!&UXVTQ3lVP19kOye2~H8j7={e!>PHN!w1+5%d;}(k zejyzYE)CP4_&9Fmx!wlZn&EU(H<)?<%MY>)><5a&CtAouO@xW0VE0AXq4)GObWVrm zK}Q{9Xlh-kaeSCl@}NxZPbtGQ4M&>L)P{ELRp=m9YP*WpnBvp*dD5fo$^+~RF9`yh z>Ez4$&p!TF>51Nj8)Ev~mlYg`eI6py3z2tr1Z!DvG&vMs4~<=JBxw~Vy%NhyV!9ag zD@OEE^2aCX`~@TE09t`UphSks%GIJVCK{VEVD1*yB9kKSFKl@hL6k8Twt*@WXPT0$ zxdgXy6@decLii#EbIz7?^)DEO%VxVG(eD^V$;lp*6rms?tE}r&!(&@u(Kz?u z8()oW-BpA4>vj8HRf?0mFV0>nTh`Xv0i34hA8i!?Xjda)jX`N%ndK5;uu)vha;DyX43wO=z5WzOV z*sLCd5bB~Mn(Sv<0n!8%wRCRhZvgP?eQrHFV9h&$ki=%1DiXLH5Q%@>5}!0g1gbcK zcR$}HgHMnFXv2y;@2I+wsBK=3f(`mNY=tJ#wrnUu%S#u#;k*>`$=DXFKr|2YXHEia zx}MIjH9!4PzBOjVLWM5&*p{(s_x%+`XclDTR%;(#l~<4N;Jq@p02*2v+>FVNN{bz$ z3m404V0`v2ZzamP=KGn!o#guzXmw;`?rsmuX`2P!K}^xJ8Uql9p=z2GBT+7L29*$B zu2u^2O8$%8!Dp>S-Y&e3Y_HI=py6nNYK!7x6zZahb#@j{HkSqX{zfk-oz7^-%*>_t zBgt3wWgKxNv->ZamAXMl@bk8}S1}R4n=0TsvfX_+>(VLS^I5z2l0Z|xm2ff$IhMQ1 ztVKs%fE!WrDaqVJx`#kHqQZ&5Mt5UueF#4Q`HpWJ`VsSMQE#H|y#uCuH01oCViP6K zw^a_i68;#-2joXdPE`z4@i;_lVP=`(`$c&!JC0Q~OYemD9av@Fm_bBxkqu zo#^^wrOVFvHAd|6efJ#S{%1!_#D&zsBM_p>u$%ehKdg`csTx9Sk-F!O;7qz&&)K&+ z9?bJ2Q^&bPV81A`A~-v^f!)OCW#HB4#MXkAJ;W^0%zxIFrEB^RDk8Ss=NmTLKv~X( zXL;}v&5ATXD&sT;?;z<46u!$%bOr&bl4upXg^19c9vAdXlS z_x!{ZL#(bA>&Z)9-vR^-%vJm6Sd=hR+;=d>m!W;GDp%lj*ILDmibCq5L4PNX#|DwR zWiE9Sy>BVk>$R4~GzzNa^D56`b4|*c%8RNJ0yLhL&|d0fCq8;bo5nZ3PodN3?sq09 zj6sQH9&Gq!%75q|?5kQOnU<-=9>(oEj(`;h$WHeYvVJvjl%eDc%}dKe2o=J_XU_h$ zKLX$Mi=1hm31q+3m5iw&^i5Fa#_VaY*9Yi@^#GB7zz(ZhW00f@=UTV&$rG5U$)iY zZnbmf^2Efy^j`cpW~nkyb8fapkv^0rvTrmZ8#+_*JCQM}GSGpvGF{f@tF`t%AI9Fl zRD~?L#E-0sv6CZb->U%SikY)3R5g8j z!Le=qjFWf#z=&<50(of^bQnoF2`&LVtK+1%%~iW#LdS!`(JwZ;sG3E;gFxhlJ8ijX zkv3@P7$SR9trn+oJEK8U{3exLZmnaGj?yH7an7vc@`q#64Vlq3x(2QEx*Hq6t~(M& z#)lO}8a)es*+dx2)U)*6z(pic62WA4wSSuy{}|X5cqc7;4;yx75NhM}JCl(LB^)@ty0jj?HKBcDJ_dU1$&nO| z^$#Y)is5V}rDR%8=W^clju?)`jZFm*cDmUl=PM>t8|H8q2DKx0{n5^;;$L*OozELB z#OaAh0k>lGWe{(GAV;7%b@L}pK z^5*YY#=h@!@5!6iTfecgX=cQpXxuQ}3Q_znICxto|0}_EIhDE2`^H9Yv6Y-g2-aQX zt+d6#(=ND3O?lFv5@~d%M@8e}mAxPP#lzZIb6Wc?Q@u6cyx4Tj?TdpUs(~RK9cCd{ zv0Za)kEIE!Pv9~NdtP^kj>i}IgdX_<)S;dq18jprhm$f@WXDDP7HE0cA!TmSn~0>~x-`T}>3$0K>i;9A#tQTU}&99LZL$xS@HvTVx?+!mcWkY zcS55h=WvKnxi_6wZPt70F>^4SVkB=cE-iDT#3^Zzmv_mR9M{Ko`U!L5Bq#z_wx42K zitPB%3HMwD)B3(&FAKooA22Ylh~zhA?*;`UwziW=gUTo?%WrK#qkXM{mt^fyvnl8+|bVmUe+di6;YQndg+ju*LI_J^&~qRQk?1{k7h11IX(!n z5JEjsrCJA(z2+rmcE0TP=jVot`^KbF*VZ==+i#?)WTUYR)QI=xezmXF;f>zU>3SpY zdVa0PyFM2#HY-IgQoqOR+8C>S`bv7KT^ z0H(`7$|WN60@x=hypv{|HGV;oSSV7*$S1Gnt-Zh2&MqcFy4*jB{hSk>h4FI7rp0YR!2=1)qaHkk% z1NB&v*^@V3bNv^E!38fq4tOC5m2YBHY{~%uvyX`p8K2$c=p25?ql`OPIphlC8C|3+ zSkY_Y3anSYx*no5*z5o2^w8=g zaXDwma^>Cqn|=yAe}nweWf=Fpy{gf*-(qr)yUTrvnktvSxiU z_i@R+!cfxBY9oW2vx8D`%f-Kq*0cr%yhT=iX1RO4-5d2aMzOkI7y#!eP)q|Hah;G! z(aj&<^SK9C$;V$yOPEaI^*Aa$RV_XI!-t6$rl)=5rEQBmVU$HAcIfuojN zHpc(lU_s+S-ul~yWq@S52< z>g+A0`;+$5Pc^b)dKv2z^sKyFx=NU=FoiR$T!VOs_g*Bt1$jTP2m}cAiMhuPzG?&}GpV>;65V+Vsvw zOK{{8G^xa{sB7X*usBUFZhxPHjih7-gS~P#&c!hvFE^ANCg3IJ1bbI6)Z1 z@@RxUw4M>-Q}&1I{!wO8TUW@FR!Qo77|-i-ap+66H3OixeQI!FO9YAUx+Y-48*VKW z|E9(Pf_+SQT?dVzjSOB?n*0W69^|W)97WsSFKe7VSP)?PS!oeR`y7cz6{ujg7ik1% zWA^^A_lZv z-cmpLe$vjOWyF(9FfDomG|)3o-fXa6;Gg}p{ySgsvcLEiku3^d=LPdhsjHcDu6XTB zjFc>0Ct1m&{ zq3Z1tgUfN@`};60fVWS64;OF%eNun6+Nr_P-10m&slcBL7TLNx*KJiIh!kU8T$0XKb z9XlNaWVJ;O7X>`X{c3)~w+RxJR+!kFUtWosJwZT81NoCUfJ@r}T7{^IsjZ7yz-YmduD zrGCJ8pNjq%200y9^|EPDMk=kTN3)c@I{c(!_E?I{rJE4ZYyc%!TBxXaL@xHe%PvuS zKKGKP42qkSSaqq9knm{WlRb=_4qyR-nkhaEB zM^iMJ7nTLi-Yj97EZYNdDSxA+s9XN>cSZ_d;A9(^3e56sdtzTq(|02j=5mow4hedU z`ND&q&U?RfglRp{EC5{OZ6{auF*}A)eX~^Mgd>!Libp-=G*9ozFytvVDtIEO*`VYL zk?IMY*B7SXx+^X>A$nrVmmJK0|wgd&!Z&C z>nI4WFO;Z*6veo3g7B}27r3RGOwOPa8U!y-KH%Q3&O{fsp&NZKBkvD#|GU@X|FvF= zigmdTZditw${rC%gqTc-B6sm{LN?uM_x1RAD7Gm`vXxF>y0VgX>Y-&-N$mwEHK+v!$ z3+3j$YIyW4G!V(YwK7UDpoi!3Q~^i3`lZYKepkeEbl#0U5jM7$bP^dpvsw`<spqAE5Hzt&sm2t}6YY}F8oHg&o^-?k77cJ$&3 zz{m+#?_p5$^5LL|L!TOHiLPHpS>T82G5v^UyO8F+;V5ROvIm}5PZ!^iew!rJnH}!r z&lVLFq+N~*nDE~V}wjRJ35F|s0%V_2-S1&L-)z{(WKU@*K);< zK6U$c$@5e#!D_f~iXQg6(qn(7?uZ>L+#bVX^f$X_o!8~>%7@lcp8im2c}aM4ym8$}Eo_6oZneD;62e z*||Fx=d62zDJQO!Ott9tPej0t>*-?}p-ik$`BXh8W)re{Asn4n@2V_mv%4(hzt&SU zQjMd!@TD;L}6z)p*W9cLnV-$=^RqN<=Q@-!Y{5nzw~x+_JThgx%xx>;H@Xh z$ic*sf#+fJ6Iw5BFdDj68}ecG?b6v5aD=(JVO!3rqNC`!$A)Z6iUL-b$NIXavXVGt zhHOX%kkgqrEXv1RPKtmrCe_JWm5Jv~r(IPlyms2x0qI+n>ztSPQwUJo;g7TPE<4M6 zP1`fxsY6^A*E1einL*(+JLLom?RRLatgm2{a7AI#oi`1J&>jyPYxK0m{ET#Sbw#S$ zmbB6D)EoMJY=nh(D6mBLU9Ld!u!ZlgyxMD0hBURbH;k%w;FTiR?i{oxONeCy!d`7o zXj3R+cKNrGub&&S#zndzUE<2pN;JPdtOK{Jgk^5YUAmdceowI0F%5xlbk5dL9}l#m z-#-koSQIqnTFK9h*w@srytP@cn0nA0#H9X#?Y_lDZSmDl&x=bXu2Qs7#|qo92WotJ z>Li~Pc7kC7tZ0%Y(WRs;%yCdm=C3s=3m%W90}9gEe>~mjcsrB$Yh4F^3(Fwavt_WM z`&yjc1Vbq&7i@^z4H~RTmb$6Z8dG}oQEr+D3l*0`Oq}yYR=u>8oS~`?_$cP{{8)PlMDDkJNG5?b7(Jt%C1cwE zs+M_edOg#yI8vvzbA_Af*E9c?f>r_RDQ$=)lTlxbjNzEfXst`l&Pn(ohO=-Ug2}c1 zlCfe&E$)E2!s{#fYIEwg8+Q-mZpWhQv~5ov_@ZZ#?Z5gu?7^SKm{RE7zg+7RtvUKX zCb3iMxQEU>bDQ`Sl}9^kt{R6PpMULQ-n&W4ZTqv9tUhw8|I>$WU-;g0XZ3Vy1VzXP z9AC%w0k|vNq1kjHmDJSVV?8cfm%x3i_an z43OL)IdSEii@{=VFI+r46VHkE_sk0X9g1XIqSb^ClkR dSd-EF-~QGG7DL&k1{w@N;OXk;vd$@?2>`sUO_Kls diff --git a/docs/design/mate-connectors/muzzle_variants.py b/docs/design/mate-connectors/muzzle_variants.py new file mode 100644 index 0000000000..06b18c5a7c --- /dev/null +++ b/docs/design/mate-connectors/muzzle_variants.py @@ -0,0 +1,71 @@ +"""The muzzle has to READ, not just be present — snaporca-wi3z. + +Faithfully scaled, the part's ridge is 11.3 mm on an 83 mm face: 13.6 % of the width. At glyph +size that is a scratch. A glyph is a symbol, not a scale model, so the question is how much +emphasis it takes before the only +Z feature actually reads. Variants, all with the same crest +geometry, differing only in width and colour. +""" +import math, os, importlib.util +from PIL import Image, ImageDraw +spec=importlib.util.spec_from_file_location("gp","glyph_preview.py") +gp=importlib.util.module_from_spec(spec); spec.loader.exec_module(gp) + +OUT, CHIN, MARKS, CREST, SBASE, PLATE = gp.OUT, gp.CHIN, gp.MARKS, gp.CREST, gp.SBASE, gp.PLATE +BODY=(0.42,0.46,0.52); MARK=(0.126,0.138,0.156); GOLD=(0.93,0.66,0.09) + +def facets(widen=1.0, muzzle_gold=False): + F=[]; n=len(OUT) + for i in range(n): + a,b=OUT[i],OUT[(i+1)%n] + F.append(([(a[0],a[1],0.0),(b[0],b[1],0.0),(b[0],b[1],PLATE),(a[0],a[1],PLATE)],BODY,True)) + F.append(([(x,y,PLATE) for x,y in OUT],BODY,True)) + zm=PLATE+0.004 + for cx,cy,r in MARKS: + F.append(([(cx+r*math.cos(2*math.pi*i/12),cy+r*math.sin(2*math.pi*i/12),zm) for i in range(12)],MARK,False)) + F.append(([(x,y,zm) for x,y in CHIN],MARK,False)) + A,B=CREST + w=lambda p:(p[0]*widen,p[1],PLATE) + nl,nr,tr,tl=(w(SBASE[0]),w(SBASE[1]),w(SBASE[2]),w(SBASE[3])) + col = GOLD if muzzle_gold else BODY + F+=[([nl,tl,B,A],col,True),([nr,A,B,tr],col,True), + ([nl,A,nr],col,True), ([tr,B,tl],col,True)] + return F + +def render(F, px, elev, ss=8): + S=px*ss; a=math.radians(elev); ca,sa=math.cos(a),math.sin(a) + xf=lambda p:(p[0],p[1]*sa+p[2]*ca,-p[1]*ca+p[2]*sa) + light=(-0.70,0.30,0.45) + img=Image.new("RGB",(S,S),(24,27,32)); d=ImageDraw.Draw(img) + tris=sorted(((sum(v[2] for v in [xf(q) for q in pts])/len(pts),[xf(q) for q in pts],c,sh) + for pts,c,sh in F), key=lambda t:t[0]) + for _,q,base,shade in tris: + (x0,y0,z0),(x1,y1,z1),(x2,y2,z2)=q[0],q[1],q[2] + ux,uy,uz=x1-x0,y1-y0,z1-z0; vx,vy,vz=x2-x0,y2-y0,z2-z0 + nx,ny,nz=uy*vz-uz*vy,uz*vx-ux*vz,ux*vy-uy*vx + L=math.sqrt(nx*nx+ny*ny+nz*nz) or 1.0; nx,ny,nz=nx/L,ny/L,nz/L + if nz<0: nx,ny,nz=-nx,-ny,-nz + k=(0.42+0.58*max(0.0,nx*light[0]+ny*light[1]+nz*light[2])) if shade else 1.0 + d.polygon([(S/2+p[0]*S*0.92,S/2-p[1]*S*0.92) for p in q], + fill=tuple(min(255,int(255*c*k)) for c in base)) + return img.resize((px,px),Image.LANCZOS) + +VAR=[("V1 faithful", 1.0, False), + ("V2 gold muzzle", 1.0, True), + ("V3 gold + 1.8x wide",1.8, True), + ("V4 body + 1.8x wide",1.8, False)] +big=Image.new("RGB",(4*250+30,4*140+30),(24,27,32)) +for r,(name,wd,gold) in enumerate(VAR): + F=facets(wd,gold) + for c,e in enumerate((90,47,16,6)): + big.paste(render(F,120,e),(15+c*250+60,15+r*140+10)) +big.save("/tmp/muzzle-variants.png") +for name,wd,gold in VAR: + F=facets(wd,gold); F0=[f for f in F][:-4] + row=[] + for e in (90,16,6): + a=render(F,32,e); b=render(F0,32,e) + la=sum(1 for p in a.get_flattened_data() if p!=(24,27,32)) + df=sum(1 for p,q in zip(a.get_flattened_data(),b.get_flattened_data()) if p!=q) + row.append(f"{100.0*df/max(1,la):5.1f}%") + print(f"{name:22} muzzle share at 90/16/6 deg: " + " ".join(row)) +print("WROTE /tmp/muzzle-variants.png") diff --git a/docs/design/mate-connectors/relief-sheet.png b/docs/design/mate-connectors/relief-sheet.png index b1a6539ce78305bd7c1ce113012b4c1e05acf68a..0c6d0d11f0b8466468221c630c5196af8cef84e0 100644 GIT binary patch literal 24238 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 E0*GbF-2eap literal 25577 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 ueld73s+DH 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 diff --git a/docs/design/mate-connectors/simplify-sheet.png b/docs/design/mate-connectors/simplify-sheet.png index 3421e29d3fc442a3adcd836890f502438cee32a3..9c05180c598898c565e68cc8813631b6e935925b 100644 GIT binary patch literal 50634 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%0DD=}CcvK452WfgiGQJ_RcnYhTPPZ&JL8 zlpMLCMEBhNtx^tVl~>`WFcE66-Y{ip^)~NPmQ|jWTfNi~V9Fz-2+}DYr@YS=VUqYi@*e z;ID+2z%i-r8ZUnz5v7uEQ)+$}no+>#H0&Y2fT=1aiitA_iIx-AWC2sIi#^Vce72&# zJsf#{=OFcPw(6YtT@jA>_PJ3u`h&H3DFTQx>xbBZOYva9-`it~*`i;)t)x5XV0P?l zbe5Iu(ro@Wv{d_#j<;?~-WQik1pyAyZKJf+Dp~kjRtV;f8*+=kaK*^8-$oS*pR@+G zT|`A#wlRVOB$cIwz-(yp_%Aei#`pYj>li2jH|rD!>wu-~1Yg=8LAg@1eVd1>>nF>bNc$XO`2c}2PDAHUiNACmj3n5sG;`Atxw%C{Z_E) zid9p(X&`YiBkRtOWh(wL0c}qgF{Z_ud)wh`{iOpzHN*i2?|6am z4?ouT#fi(}C-atTSHXFiAeQl_N*C4Sw%P^EvnryEdIBU1tzDoa7Psglf6&LU)4pBP zB2`$Vv-E18Z|)A_L|%Z2dw`jAc-cskyZ>WK=M?Uy{gW8Xcun594h?&=UI+hxYlw_4 zTM(?4s<8r+!$918D4n*=b`zyAbo=nBvLTJWH% z7pckhkb82p?NdlFj2o?iKkb}RhXwUk26sB0q}~ME^wg|(x&Jy5t~qT9E3|IoMo6== z%ligjyNZn`Rp@0? zeKOFCi%9TF{G#(wzaL7!YXu%9bP3GAY@+Bl6$4w1f>+NhU+hLi^dt`GrPizTSQKrV zEYZCx`f(%5zXI^SKsB-nAaR*g(2;zWV4xN@!bTPdbuu+;({?2kIK=1O9PQ6D{{AU7 zVqkj?zu#D_D3FzGV5h5u%nd_J?-!>$@?+N7o&30mgxtoD96{%PI){kT_Ml(*B_)j0 z{6`x;=s7-`=JL{?DB5u0@_1oqiQh&y=54;MN9N7N$MzpzQ|Cq7zw58pqMJ`vS+Ocg z#y(noT(2R&qush>lzSy_SXcw~Zb3b#&UgRW3%GF!HH|6eqOQXOc4$+E^_+R3VHwqg z=b&b;oSgZiorQ#UI%fktTYvV=&GQ+}r z&3(i;YjU->;Vp={*hqGn$$z)@@OwOZf!2}H(2YK@X4rYk*Wc$VotCqYZNjzYmhSrN z+lv(TjePnQ=>2EJrU#1*K!}|l7vQ#5|-LNNCpBQ^%JML^kZ@F`puE8^yzr zlb;@wEuTCJm3tAvM_aspK;BQ5k(~yFKh`CyCKrel4MGIUR;Sc{IjuvN@;s-rCzbe&FLrH0|s4ILNt={m#M@!-r@U3 zok_~%>?^c1pCyDAdv-d(^!K*iq$BRBXL7C&NE_I%n)co8;BXLE@>W(V&%JE-{po*a z-PH=JR2I5lDgciHHwV+!o^m%yuMaPtZ5EAp51gcVE9LMBZ?@4K!18(&%cAe~t?pi) zSTQ2e=9BjjDdyFUpZ#Lqeq535FS9Iw_Cqt}v&K1&~`G&?Kbc@S=2O4rJ$9saK!(A`eU%9uhHP_V5rj}gf^KFZ@5!hd3mKAtE2I_$ma923!_N@-zDS~zf%rx`I(a66d9 zqLB*ce#cS$hwgab`bLFDbbv^Ql&y@GOd%C+(tki(2rCNP6&50@zdhhR%B(jpYd7AF zn5bH^U)YGNJvY&I8H7>15eegR&@^=m*evwNA*B4Ex-2978Uajidw~Kxt;wj(kmKnfotC?OKJ*~@ml5i$(p~?hI|m+_C3HROY>WVyn>e?SXf>04OoaYM zRfP6dhP7Z@Vu21?F}X6N^~f3jNOm;Gs3fBJedNJ3=ftK-@$m-=?KY?A8g1@a-cpHA z*EXtjqZ>`UCiTS%VPg;vs$`%I?2#qL6x+q@dlF9eP-@P6 z`JzOY0r`v)>meq~Fsz_1><&b{(a&YLtccu9Wpkq;t{pO)vDlSykr1<6HL2@s1jA3b zVD>&IOON7C_I%`xK!AWW^EzuT;!Qldb-oiC16Uc1_VBUrB9V~j7U8$+X;sd@GG7X2 z^kbG^M8(`tBmaxL{x+X}oSvVSAcXIZyBnys46kd6IZAW7sZ zQLW$##AD+nPm8^k;9#BbetIT%*O=foi#(Gyd2a?+O4h40=RsC{l@IjCM5Bw+FC+5yGdE6oqknV`ZkX ze62R(HL&m^*p_QhZT)0Z(@cfV>HKEVsQ7frq>P<-8vZWs_2n?V+o{!N55A5K8!y$( z0$J3su((v_<@oq$!_39LLt|$gKbFsVBRp~g3X;bblnFg#YOlH)0@(e50ZMDuX}3cFzsek^Hv1%O74*<&_E-zr3GAyKNvj!CC7LVOFDOX;y&Lq z4QqT}Lk@V~e^A)xM#7|z8TQh)@3=B_(<{+9p3HcO&WpYm={}WqQXs;rub>;a39=1o z^$704&AAcQbLm|0s_-Jsv0m0{p9XP=KB-*?e@;U+alpwMi@qq73`ZH_VIY!f92p2N zNxxmNz7~zcAJUqif|M-jU6s=#=t$%N$85SKbx-Ht#j+tTNJc1d?K zT$xCK0OvJ|aWU4GU!YxbZt;+KW9fX+Q`MlhPE_^@ec0_h1tFcs=^6}@pCaY3w{-`4M&C|g?sin$$CqVEL33%qA zfIcY*Xrd6&J^cPa9U&PE0Ax6?RetXNjhSF<9huv(BK;0hn0{xbzGrDK$MY5K9eVs? zy=iGSxESqaPJ2*V7sLVNBu;^=GhH`)b?@~@u{aQbbG)2Ku^!Y%zvWP4F#W#(?oX1! zJnP*M@Tkmv2K?HS>*An>ZHWpXn*~raQ>`*>n?rQ>*2n{{^g1TuMY_#kUAEs$gEi)s z+cK*YzH)*CO&0nId-vyvIJ%aj@Rx<~vE*CT;yDv|K`Wz_^MjmP7N_xtO~VHP^d;3@ z!bB?wb2S}*bLbdIxw9r9L8bq(3^rbmZk|1bD&9`kH%=oVf9o%lPyCrUv_3^S^PBau zpWl9=oq`VM>YYoVUWmmw^AtVdC>#(b6G7zyCyE2M$QpfHq$nRuv+OoC>Y%kxROM7pm7Uk z^4bjFAx>UIwTIcfxRQ$`?M7^jN#MFMPo>!95i`^d`CWrSQ(076`S$P}8Mv;T*ogr# z*pf;0MI0q3VITaVi+f6>ujB%oHtC%VRB!t~(B-T27DiO_uVAkyloHlzv=SGn`(Qc-T(@e8SF_QvAo0eb$!8GwW(HJGDzITHHi&hel}V> z1Hj1KrrGItx?R(yuQE5j(Ed-V$CQ475#ID0=go6pumx z_}M&gc9rgpM;WX=XilZLpLJ=-TNCp+`!=Waet}$n?LjaUp~$Mb4n2Y ah5T*u`mvYAah!O-OYO;1CHP~DH~$MqeTaVm literal 57608 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

M?dW!SYB4XJA`xZIX) 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 gE&m?_rhAvfrDCSXm5BrS1iget_bool("design_connector_face_glyph") + && [] { const char* s = ::getenv("SNAPORCA_GLYPH"); + return !(s && (*s == 'D' || *s == 'd')); }(); const Camera& cam = wxGetApp().plater()->get_camera(); const Vec3d right = cam.get_dir_right().normalized(); @@ -3557,6 +3565,14 @@ void DesignSketchTool::render_mate_connectors() // dotted arc that flickered with the camera. Depth off floats it through solids, depth on and // coplanar tears it — the lift is what buys both. Scaled by upp so it stays sub-pixel at any // zoom instead of becoming a visible gap when you zoom in. + // A face asserts a definite roll. When the roll could NOT be derived, drawing one would be + // a confident lie about the very thing that is unknown — the same objection that rejected + // billboarding the quadrant — so an underived connector keeps the disc treatment and its + // hatched quadrant, whatever the preference says. + if (face_style && !g.roll_undefined) { + render_mate_face(g.origin, X, Y, Z, R, body); + } else { + SketchPlane cp; cp.origin = g.origin + Z * (0.7 * upp); cp.x_axis = X; cp.y_axis = Y; cp.normal = Z; m_plane = cp; @@ -3610,6 +3626,7 @@ void DesignSketchTool::render_mate_connectors() } draw_strokes(m_mc_stroke_model, q, lw, g.roll_undefined ? warn : gold); } + } // end of the disc treatment // ---- the axes. Billboarded at the origin: a 3D direction is projected onto the screen // frame, which is the only way an arrow keeps a readable head at any viewing angle. @@ -3666,6 +3683,191 @@ void DesignSketchTool::render_mate_connectors() m_plane = saved; } +// --------------------------------------------------------------------------------------------- +// THE FACE TREATMENT of the mate connector (snaporca-x0kd). The disc + roll quadrant answers +// "where is X" with a shape that has to be learned; a face does not. Face orientation is +// hardwired perception -- a toddler reads a face's roll and verse with no instruction at all -- +// and that is the whole reason this exists. Default ON, switchable in Preferences for users who +// expect the conventional CAD representation. +// +// WHY A RELIEF AND NOT A FLAT DRAWING, which is the non-obvious half. A flat face drawn in the +// connector's plane foreshortens by sin(elevation) and collapses at a grazing view exactly like +// the quadrant it replaces -- measured on the rig, the quadrant falls from 89 lit pixels at 47 +// degrees to 3 at 10 and 0 edge-on. A relief does not: at a grazing angle its SILHOUETTE carries +// the information. The same bear rendered flat vs in relief gives 164 vs 210 lit pixels at 16 +// degrees and 66 vs 120 at 6. So the glyph is a small shaded solid, not an outline. +// +// The geometry is EMITTED from the real part by doc/design/mate-connectors/emit_glyph_table.py, +// not hand-drawn, so the glyph and the printed connector cannot drift apart. Two vertices stand +// above the 3 mm plate in the actual B-rep, which is why the snout here is a tent with one crest +// edge and four flanks drafted at 20 degrees rather than anything more elaborate. +// +// The cheek dot is the handedness mark. Without it the glyph differs from its own mirror by only +// 5-9 % of its lit pixels, which is not enough to read; the dot roughly doubles that and, unlike +// making the eyes uneven, identifies the side from that cheek alone instead of by comparison. +// Emitted by doc/design/mate-connectors/emit_glyph_table.py from bear.step — do not hand-edit. +// Normalised to the part's bounding span and centred: the renderer scales by one radius. +static const Vec2d kBearOutline[] = { // 12 verts, RDP eps 0.030, CCW + {+0.3842, +0.3294}, {+0.3156, +0.4002}, {+0.2424, +0.3294}, + {-0.2524, +0.3294}, {-0.3377, +0.3877}, {-0.3693, +0.3298}, + {-0.3256, +0.2631}, {-0.4893, -0.3337}, {-0.3960, -0.4002}, + {+0.4151, -0.4002}, {+0.5000, -0.3154}, {+0.3156, +0.2631}, +}; +static const Vec2d kBearChin[] = { // the CHIN BAR, flat. The muzzle is relief — see kBearCrest. + {-0.2682, -0.3578}, {+0.2628, -0.3578}, {+0.2237, -0.1786}, +}; +// {cx, cy, r}: two eyes, then the cheek dot that carries handedness (snaporca-wi3z). +static const Vec3d kBearMarks[] = { + {-0.1997, +0.1760, +0.0590}, + {+0.1947, +0.1760, +0.0590}, + {+0.2797, +0.0760, +0.0380}, +}; +// THE MUZZLE, lifted off the mesh: a tapered wedge, base quad + crest edge, 6 facets. +// This is the only feature standing along +Z and the only one still legible edge-on. +static const double kBearPlateZ = +0.0360; +static const Vec2d kBearSnoutBase[] = { // CCW from the nose end + {-0.0727, -0.2417}, + {+0.0630, -0.2417}, + {+0.0259, +0.1939}, + {-0.0356, +0.1939}, +}; +static const Vec3d kBearCrest[] = { // nose (tall) -> tail (short) + {-0.0048, -0.1793, +0.2073}, + {-0.0048, +0.1605, +0.1279}, +}; + +void DesignSketchTool::render_mate_face(const Vec3d& origin, const Vec3d& X, const Vec3d& Y, + const Vec3d& Z, double R, const ColorRGBA& body) +{ + const Camera& cam = wxGetApp().plater()->get_camera(); + const Vec3d right = cam.get_dir_right().normalized(); + const Vec3d up = cam.get_dir_up().normalized(); + const Vec3d fwd = cam.get_dir_forward().normalized(); + const double S = 2.0 * R; // the table spans 1.0, the disc spans 2R + + // Light fixed in CAMERA space, so orbiting the model does not swing the shading around and + // turn a stable symbol into a flickering one. + const Vec3d light = (-0.35 * right + 0.55 * up - 0.76 * fwd).normalized(); + + auto to_world = [&](const Vec3d& p) { + return origin + X * (p.x() * S) + Y * (p.y() * S) + Z * (p.z() * S); + }; + + struct Facet { std::vector w; ColorRGBA c; double depth; }; + std::vector facets; + auto emit = [&](std::vector pts, const ColorRGBA& base, bool shade) { + if (pts.size() < 3) return; + Facet f; f.w.reserve(pts.size()); + for (const Vec3d& p : pts) f.w.push_back(to_world(p)); + const Vec3d n0 = (f.w[1] - f.w[0]).cross(f.w[2] - f.w[0]); + Vec3d n = Z; + if (n0.norm() > 1e-12) n = n0.normalized(); + if (n.dot(fwd) > 0.0) n = -n; // always take the camera-facing side + double k = 1.0; + if (shade) { + // Ambient floor so a facet turned away still reads as part of the same object rather + // than as a hole punched in it. + k = 0.42 + 0.58 * std::max(0.0, n.dot(light)); + } + f.c = ColorRGBA(float(base.r() * k), float(base.g() * k), float(base.b() * k), base.a()); + double d = 0.0; + for (const Vec3d& p : f.w) d += p.dot(fwd); + f.depth = d / double(f.w.size()); + facets.push_back(std::move(f)); + }; + + const int NO = int(sizeof(kBearOutline) / sizeof(kBearOutline[0])); + const double zp = kBearPlateZ; + + // The plate: sides first so the silhouette exists at a grazing view, then the top. + for (int i = 0; i < NO; ++i) { + const Vec2d& a = kBearOutline[i]; + const Vec2d& b = kBearOutline[(i + 1) % NO]; + emit({ Vec3d(a.x(), a.y(), 0.0), Vec3d(b.x(), b.y(), 0.0), + Vec3d(b.x(), b.y(), zp), Vec3d(a.x(), a.y(), zp) }, body, true); + } + { + std::vector top; + top.reserve(NO); + for (int i = 0; i < NO; ++i) top.emplace_back(kBearOutline[i].x(), kBearOutline[i].y(), zp); + emit(std::move(top), body, true); + } + + // The marks, a hair above the plate so they cannot z-fight it: two eyes then the cheek dot. + const ColorRGBA mark(body.r() * 0.30f, body.g() * 0.30f, body.b() * 0.30f, 1.0f); + const double zm = zp + 0.004; + for (const Vec3d& m : kBearMarks) { + std::vector disc; + const int N = 12; + for (int i = 0; i < N; ++i) { + const double a = (2.0 * M_PI * i) / N; + disc.emplace_back(m.x() + m.z() * std::cos(a), m.y() + m.z() * std::sin(a), zm); + } + emit(std::move(disc), mark, false); + } + { + std::vector chin; + for (const Vec2d& p : kBearChin) chin.emplace_back(p.x(), p.y(), zm); + emit(std::move(chin), mark, false); + } + + // THE MUZZLE, and the two decisions that make it legible rather than merely present. + // + // It is the one feature standing along +Z, so it says which way the connector points, and it + // is all that survives edge-on where a drawing in the plane has nothing left. Its geometry is + // the part's own ridge: crest 29.0 mm, 6.58 mm drop, 13.1 deg, against the 28.3 / 6.61 / 13.1 + // the review measured on the B-rep. Base taken from the mesh, NOT recomputed from + // height*tan(draft) -- that produced a needle, because the real base overhangs the crest at + // both ends and it is the overhang that makes this a wedge rather than a blade. + // + // BUT FIDELITY ALONE FAILS. Scaled honestly the ridge is 11.3 mm on an 83.3 mm face, 13.6 % + // of the width, and at 22-48 px that reads as a scratch -- Tommaso looked at the faithful + // version and could not find the muzzle at all, which is the only test that counts. A glyph + // is a symbol, not a scale model, so it gets two deliberate exaggerations: + // + // COLOUR does the work. In the body tone the muzzle is a grey sliver whichever way it is + // lit; in the accent it is the first thing the eye lands on at every elevation, and at 6 + // degrees it is the ONLY structured thing above the flat line. Measured share of lit + // pixels at 90/16/6 deg: body 14.8/11.3/17.5 %, accent 18.3/19.2/23.9 %. + // WIDTH 1.8x on top of that: 23.5/25.2/31.2 %, and it stops reading as a needle. + // + // The accent is the same gold the disc treatment spends on its roll quadrant, which is + // consistent -- it is this tab's "here is the direction that matters" colour. Polarity is + // still carried by the Z arrow's head, so nothing collides. + { + const ColorRGBA gold(0.93f, 0.66f, 0.09f, 1.0f); + const double widen = 1.8; + const Vec3d& A = kBearCrest[0]; + const Vec3d& B = kBearCrest[1]; + auto base = [&](int i) { + return Vec3d(kBearSnoutBase[i].x() * widen, kBearSnoutBase[i].y(), zp); + }; + const Vec3d nl = base(0), nr = base(1), tr = base(2), tl = base(3); + emit({ nl, tl, B, A }, gold, true); // left flank + emit({ nr, A, B, tr }, gold, true); // right flank + emit({ nl, A, nr }, gold, true); // nose cap, sloped by the base overhang + emit({ tr, B, tl }, gold, true); // tail cap + } + + // Painter's algorithm: depth testing is off for this overlay, so draw order IS the depth. + std::sort(facets.begin(), facets.end(), + [](const Facet& a, const Facet& b) { return a.depth > b.depth; }); + + // draw_fill works in m_plane, so project into a screen-aligned frame at the connector origin + // and hand it flat polygons. The relief survives because the PROJECTION is 3D, not the plane. + const SketchPlane saved = m_plane; + SketchPlane bb; bb.origin = origin; bb.x_axis = right; bb.y_axis = up; bb.normal = fwd; + m_plane = bb; + glsafe(::glDisable(GL_DEPTH_TEST)); + for (const Facet& f : facets) { + std::vector poly; + poly.reserve(f.w.size()); + for (const Vec3d& p : f.w) poly.emplace_back((p - origin).dot(right), (p - origin).dot(up)); + draw_fill(m_mc_fill_model, poly, f.c); + } + m_plane = saved; +} + void DesignSketchTool::render_extrude_gizmo() { if (!m_ex_active) return; diff --git a/src/slic3r/GUI/DesignSketchTool.hpp b/src/slic3r/GUI/DesignSketchTool.hpp index 982ed8a1cf..c236a10085 100644 --- a/src/slic3r/GUI/DesignSketchTool.hpp +++ b/src/slic3r/GUI/DesignSketchTool.hpp @@ -1079,8 +1079,14 @@ private: std::vector m_datum_planes; std::vector m_datum_sizes; // per-plane (u,v) full extent; empty -> default void render_mate_connectors(); // disc + roll quadrant + one-sided Z arrow + // The face treatment of the same connector: a shaded low-poly relief of a bear's head in the + // connector's own frame. Draws the plate, the snout tent and the marks; the caller still draws + // the Z arrow, which is shared with the disc treatment. + void render_mate_face(const Vec3d& origin, const Vec3d& X, const Vec3d& Y, const Vec3d& Z, + double R, const ColorRGBA& body); std::vector m_mate_connectors; GLModel m_mc_stroke_model; + GLModel m_mc_fill_model; // the face treatment's shaded facets GLModel m_solid_face_model; GLModel m_solid_edge_model; GLModel m_solid_vertex_model; diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 13d604fae5..4377db5f27 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -1802,6 +1802,12 @@ void PreferencesDialog::create_items() auto reverse_mouse_zoom = create_item_checkbox(_L("Reverse mouse zoom"), _L("If enabled, reverses the direction of zoom with mouse wheel."), "reverse_mouse_wheel_zoom"); g_sizer->Add(reverse_mouse_zoom); + auto item_connector_face_glyph = create_item_checkbox(_L("Draw mate connectors as a face"), + _L("In the Design tab, draw a mate connector as a small face instead of the conventional " + "disc with a roll quadrant. A face's orientation is read without being learned. " + "Turn this off for the conventional CAD representation."), "design_connector_face_glyph"); + g_sizer->Add(item_connector_face_glyph); + std::vector ButtonDragActions = {_L("None"), _L("Pan"), _L("Rotate")}; auto item_left_mouse_drag = create_item_combobox(_L("Left Mouse Drag"), _L("Set the action that dragging the left mouse button should perform."), "left_mouse_drag_action", ButtonDragActions); g_sizer->Add(item_left_mouse_drag);