@tscircuit/rectdiff 0.0.38 → 0.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/bun-test.yml +1 -1
- package/lib/RectDiffPipeline.ts +27 -0
- package/lib/math/layers/getUnionZ.ts +6 -0
- package/lib/math/layers/getZLayerName.ts +6 -0
- package/lib/math/layers/getZSpanMask.ts +6 -0
- package/lib/math/layers/hasContiguousZSpan.ts +11 -0
- package/lib/math/rects/intersectRects.ts +28 -0
- package/lib/math/rects/mergeRects.ts +12 -0
- package/lib/math/rects/rectArea.ts +7 -0
- package/lib/math/rects/rectContainsRect.ts +18 -0
- package/lib/math/rects/rectsTouchOrOverlap.ts +12 -0
- package/lib/math/rects/subtractRects.ts +23 -0
- package/lib/solvers/OuterLayerContainmentMergeSolver/OuterLayerContainmentMergeSolver.ts +108 -4
- package/lib/solvers/SparseMultilayerPromotionSolver/SparseMultilayerPromotionSolver.ts +134 -0
- package/lib/solvers/SparseMultilayerPromotionSolver/cloneNode.ts +15 -0
- package/lib/solvers/SparseMultilayerPromotionSolver/cloneNodeWithRect.ts +34 -0
- package/lib/solvers/SparseMultilayerPromotionSolver/createResidualNodes.ts +42 -0
- package/lib/solvers/SparseMultilayerPromotionSolver/findBestCoalesceCandidate.ts +98 -0
- package/lib/solvers/SparseMultilayerPromotionSolver/findBestPromotionCandidate.ts +72 -0
- package/lib/solvers/SparseMultilayerPromotionSolver/getUsableMultilayerVolumeShare.ts +34 -0
- package/lib/solvers/SparseMultilayerPromotionSolver/isFreeNode.ts +8 -0
- package/lib/solvers/SparseMultilayerPromotionSolver/nodeToRect.ts +13 -0
- package/lib/solvers/SparseMultilayerPromotionSolver/solvers/CoalesceMultilayerTilesSolver.ts +104 -0
- package/lib/solvers/SparseMultilayerPromotionSolver/solvers/PromoteSparseMultilayerCoverageSolver.ts +148 -0
- package/lib/solvers/SparseMultilayerPromotionSolver/solvers/TrimContainedSingleLayerCoverageSolver.ts +137 -0
- package/lib/solvers/SparseMultilayerPromotionSolver/types.ts +23 -0
- package/package.json +1 -1
- package/tests/solver/__snapshots__/rectDiffGridSolverPipeline.snap.svg +3 -3
- package/tests/solver/arduino-uno-inner2-ground-bottom-power/__snapshots__/arduino-uno-inner2-ground-bottom-power.snap.svg +3 -3
- package/tests/solver/arduino-uno-inner2-ground-inner1-power/__snapshots__/arduino-uno-inner2-ground-inner1-power.snap.svg +1 -1
- package/tests/solver/both-points-equivalent/__snapshots__/both-points-equivalent.snap.svg +1 -1
- package/tests/solver/bugreport02-bc4361/__snapshots__/bugreport02-bc4361.snap.svg +3 -3
- package/tests/solver/bugreport03-fe4a17/__snapshots__/bugreport03-fe4a17.snap.svg +1 -1
- package/tests/solver/bugreport08-e3ec95/__snapshots__/bugreport08-e3ec95.snap.svg +1 -1
- package/tests/solver/bugreport09-618e09/__snapshots__/bugreport09-618e09.snap.svg +1 -1
- package/tests/solver/bugreport10-71239a/__snapshots__/bugreport10-71239a.snap.svg +3 -3
- package/tests/solver/bugreport11-b2de3c/__snapshots__/bugreport11-b2de3c.snap.svg +3 -3
- package/tests/solver/bugreport13-b9a758/__snapshots__/bugreport13-b9a758.snap.svg +2 -2
- package/tests/solver/bugreport16-d95f38/__snapshots__/bugreport16-d95f38.snap.svg +1 -1
- package/tests/solver/bugreport18-1b2d06/__snapshots__/bugreport18-1b2d06.snap.svg +3 -3
- package/tests/solver/bugreport19/__snapshots__/bugreport19.snap.svg +1 -1
- package/tests/solver/bugreport22-2a75ce/__snapshots__/bugreport22-2a75ce.snap.svg +1 -1
- package/tests/solver/bugreport23-LGA15x4/__snapshots__/bugreport23-LGA15x4.snap.svg +2 -2
- package/tests/solver/bugreport24-05597c/__snapshots__/bugreport24-05597c.snap.svg +1 -1
- package/tests/solver/bugreport25-4b1d55/__snapshots__/bugreport25-4b1d55.snap.svg +3 -3
- package/tests/solver/bugreport36-bf8303/__snapshots__/bugreport36-bf8303.snap.svg +2 -2
- package/tests/solver/interaction/__snapshots__/interaction.snap.svg +3 -3
- package/tests/solver/multi-point/__snapshots__/multi-point.snap.svg +1 -1
- package/tests/solver/no-better-path/__snapshots__/no-better-path.snap.svg +1 -1
- package/tests/solver/offboardconnects01/__snapshots__/offboardconnects01.snap.svg +1 -1
- package/tests/solver/pcb_trace_id-should-return-root-connection-name/__snapshots__/pcb_trace_id-should-return-root-connection-name.snap.svg +3 -3
- package/tests/solver/repros/merge-single-layer-node/__snapshots__/merge-single-layer-node.snap.svg +3 -3
- package/tests/solver/transitivity/__snapshots__/transitivity.snap.svg +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<svg width="640" height="
|
|
1
|
+
<svg width="640" height="1752" viewBox="0 0 640 1752" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-5,-5 5,-5 5,5 -5,5 -5,-5" data-type="line" data-label="bounds" points="40,790.8333333333334 600,790.8333333333334 600,230.83333333333337 40,230.83333333333337 40,790.8333333333334" fill="none" stroke="#111827" stroke-width="5.6000000000000005"/></g><g><polyline data-points="-5,-20.208333333333332 5,-20.208333333333332 5,-10.208333333333332 -5,-10.208333333333332 -5,-20.208333333333332" data-type="line" data-label="bounds" points="40,1642.5 600,1642.5 600,1082.5 40,1082.5 40,1642.5" fill="none" stroke="#111827" stroke-width="5.6000000000000005"/></g><g><rect data-type="rect" data-label="node" data-x="-3.1100000000000003" data-y="-2.66" x="39.999999999999986" y="528.7533333333333" width="211.67999999999998" height="262.08000000000004" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="-3.1100000000000003" data-y="2.66" x="39.999999999999986" y="230.83333333333334" width="211.67999999999998" height="262.08" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="3.11" data-y="-2.66" x="388.31999999999994" y="528.7533333333333" width="211.68" height="262.08000000000004" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="3.11" data-y="2.66" x="388.31999999999994" y="230.83333333333334" width="211.68" height="262.08" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="-3.89" data-y="0" x="40" y="492.9133333333334" width="124.32" height="35.839999999999975" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="3.8899999999999997" data-y="0" x="475.6799999999999" y="492.9133333333334" width="124.32000000000005" height="35.839999999999975" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="0" data-y="0" x="251.68" y="230.83333333333337" width="136.64" height="560" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="-1.9999999999999998" data-y="0" x="194.56" y="492.9133333333334" width="26.879999999999995" height="35.839999999999975" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="2" data-y="0" x="418.56" y="492.9133333333334" width="26.879999999999995" height="35.839999999999975" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="-2.51" data-y="0" x="164.32" y="492.9133333333334" width="30.23999999999998" height="35.839999999999975" fill="red" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="-1.49" data-y="0" x="221.44" y="492.9133333333334" width="30.24000000000001" height="35.839999999999975" fill="red" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="1.49" data-y="0" x="388.32" y="492.9133333333334" width="30.24000000000001" height="35.839999999999975" fill="red" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="2.51" data-y="0" x="445.44000000000005" y="492.9133333333334" width="30.239999999999952" height="35.839999999999975" fill="red" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="-3.1100000000000003" data-y="-17.868333333333332" x="39.999999999999986" y="1380.42" width="211.67999999999998" height="262.0799999999999" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="-3.1100000000000003" data-y="-12.548333333333332" x="39.999999999999986" y="1082.5" width="211.67999999999998" height="262.0799999999999" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="3.11" data-y="-17.868333333333332" x="388.31999999999994" y="1380.42" width="211.68" height="262.0799999999999" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="3.11" data-y="-12.548333333333332" x="388.31999999999994" y="1082.5" width="211.68" height="262.0799999999999" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="-3.89" data-y="-15.208333333333332" x="40" y="1344.58" width="124.32" height="35.840000000000146" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="3.8899999999999997" data-y="-15.208333333333332" x="475.6799999999999" y="1344.58" width="124.32000000000005" height="35.840000000000146" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="0" data-y="-15.208333333333332" x="251.68" y="1082.5" width="136.64" height="560" fill="#dbeafe" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="-2" data-y="-15.208333333333332" x="164.32" y="1344.58" width="87.35999999999999" height="35.840000000000146" fill="#fef3c7" stroke="black" stroke-width="0.017857142857142856"/></g><g><rect data-type="rect" data-label="node" data-x="2" data-y="-15.208333333333332" x="388.32000000000005" y="1344.58" width="87.35999999999996" height="35.840000000000146" fill="#fef3c7" stroke="black" stroke-width="0.017857142857142856"/></g><text data-type="text" data-label="Layer z=0" data-x="0" data-y="6.666666666666666" x="320" y="137.50000000000006" fill="black" font-size="28" font-family="sans-serif" text-anchor="end" dominant-baseline="text-before-edge">Layer z=0</text><text data-type="text" data-label="Layer z=1" data-x="0" data-y="-8.541666666666666" x="320" y="989.1666666666667" fill="black" font-size="28" font-family="sans-serif" text-anchor="end" dominant-baseline="text-before-edge">Layer z=1</text><g id="crosshair" style="display: none"><line id="crosshair-h" y1="0" y2="1752" stroke="#666" stroke-width="0.5"/><line id="crosshair-v" x1="0" x2="640" stroke="#666" stroke-width="0.5"/><text id="coordinates" font-family="monospace" font-size="12" fill="#666"></text></g><script><![CDATA[
|
|
2
2
|
document.currentScript.parentElement.addEventListener('mousemove', (e) => {
|
|
3
3
|
const svg = e.currentTarget;
|
|
4
4
|
const rect = svg.getBoundingClientRect();
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
v.setAttribute('x1', x);
|
|
18
18
|
v.setAttribute('x2', x);
|
|
19
19
|
v.setAttribute('y1', '0');
|
|
20
|
-
v.setAttribute('y2', '
|
|
20
|
+
v.setAttribute('y2', '1752');
|
|
21
21
|
|
|
22
22
|
// Calculate real coordinates using inverse transformation
|
|
23
|
-
const matrix = {"a":56,"c":0,"e":320,"b":0,"d":-56,"f":
|
|
23
|
+
const matrix = {"a":56,"c":0,"e":320,"b":0,"d":-56,"f":510.83333333333337};
|
|
24
24
|
// Manually invert and apply the affine transform
|
|
25
25
|
// Since we only use translate and scale, we can directly compute:
|
|
26
26
|
// x' = (x - tx) / sx
|