@tscircuit/rectdiff 0.0.27 → 0.0.29
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-pver-release.yml +24 -45
- package/dist/index.d.ts +0 -46
- package/dist/index.js +220 -774
- package/lib/RectDiffPipeline.ts +0 -46
- package/lib/types/srj-types.ts +0 -1
- package/package.json +1 -2
- package/pages/repro/merge-single-layer-node.page.tsx +17 -0
- package/tests/__snapshots__/board-outline.snap.svg +2 -2
- package/tests/solver/__snapshots__/rectDiffGridSolverPipeline.snap.svg +1 -1
- package/tests/solver/both-points-equivalent/__snapshots__/both-points-equivalent.snap.svg +1 -1
- package/tests/solver/bugreport01-be84eb/__snapshots__/bugreport01-be84eb.snap.svg +1 -1
- package/tests/solver/bugreport02-bc4361/__snapshots__/bugreport02-bc4361.snap.svg +1 -1
- package/tests/solver/bugreport03-fe4a17/__snapshots__/bugreport03-fe4a17.snap.svg +1 -1
- package/tests/solver/bugreport07-d3f3be/__snapshots__/bugreport07-d3f3be.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 +1 -1
- package/tests/solver/bugreport11-b2de3c/__snapshots__/bugreport11-b2de3c.snap.svg +1 -1
- package/tests/solver/bugreport12-35ce1c/__snapshots__/bugreport12-35ce1c.snap.svg +1 -1
- package/tests/solver/bugreport13-b9a758/__snapshots__/bugreport13-b9a758.snap.svg +1 -1
- package/tests/solver/bugreport16-d95f38/__snapshots__/bugreport16-d95f38.snap.svg +1 -1
- package/tests/solver/bugreport19/__snapshots__/bugreport19.snap.svg +1 -1
- package/tests/solver/bugreport20-obstacle-clipping/__snapshots__/bugreport20-obstacle-clipping.snap.svg +1 -1
- package/tests/solver/bugreport21-board-outline/__snapshots__/bugreport21-board-outline.snap.svg +2 -2
- package/tests/solver/bugreport22-2a75ce/__snapshots__/bugreport22-2a75ce.snap.svg +1 -1
- package/tests/solver/bugreport23-LGA15x4/__snapshots__/bugreport23-LGA15x4.snap.svg +1 -1
- package/tests/solver/bugreport24-05597c/__snapshots__/bugreport24-05597c.snap.svg +1 -1
- package/tests/solver/bugreport25-4b1d55/__snapshots__/bugreport25-4b1d55.snap.svg +1 -1
- package/tests/solver/bugreport36-bf8303/__snapshots__/bugreport36-bf8303.snap.svg +1 -1
- package/tests/solver/interaction/__snapshots__/interaction.snap.svg +1 -1
- 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/repros/merge-single-layer-node/merge-single-layer-node.json +861 -0
- package/tests/solver/{bugreport50-multi-support-layer-merge/bugreport50-multi-support-layer-merge.test.ts → repros/merge-single-layer-node/merge-single-layer-node.test.ts} +7 -42
- package/tests/solver/transitivity/__snapshots__/transitivity.snap.svg +2 -2
- package/tsconfig.json +5 -1
- package/vite.config.ts +4 -0
- package/lib/solvers/AdjacentLayerContainmentMergeSolver/AdjacentLayerContainmentMergeSolver.ts +0 -456
- package/lib/solvers/OuterLayerContainmentMergeSolver/OuterLayerContainmentMergeSolver.ts +0 -311
- package/pages/bugreports/bugreport50-multi-support-layer-merge.page.tsx +0 -19
- package/pages/pour.page.tsx +0 -18
- package/test-assets/bugreport49-634662.json +0 -412
- package/tests/solver/bugreport49-634662/__snapshots__/bugreport49-634662.snap.svg +0 -44
- package/tests/solver/bugreport49-634662/bugreport49-634662.test.ts +0 -134
- package/tests/solver/bugreport50-multi-support-layer-merge/__snapshots__/bugreport50-multi-support-layer-merge.snap.svg +0 -44
- package/tests/solver/bugreport50-multi-support-layer-merge/bugreport50-multi-support-layer-merge.json +0 -972
package/lib/RectDiffPipeline.ts
CHANGED
|
@@ -7,9 +7,7 @@ import type { SimpleRouteJson } from "./types/srj-types"
|
|
|
7
7
|
import type { GridFill3DOptions, XYRect } from "./rectdiff-types"
|
|
8
8
|
import type { CapacityMeshNode } from "./types/capacity-mesh-types"
|
|
9
9
|
import type { GraphicsObject } from "graphics-debug"
|
|
10
|
-
import { AdjacentLayerContainmentMergeSolver } from "./solvers/AdjacentLayerContainmentMergeSolver/AdjacentLayerContainmentMergeSolver"
|
|
11
10
|
import { GapFillSolverPipeline } from "./solvers/GapFillSolver/GapFillSolverPipeline"
|
|
12
|
-
import { OuterLayerContainmentMergeSolver } from "./solvers/OuterLayerContainmentMergeSolver/OuterLayerContainmentMergeSolver"
|
|
13
11
|
import { RectDiffGridSolverPipeline } from "./solvers/RectDiffGridSolverPipeline/RectDiffGridSolverPipeline"
|
|
14
12
|
import { createBaseVisualization } from "./rectdiff-visualization"
|
|
15
13
|
import { buildFinalRectDiffVisualization } from "./buildFinalRectDiffVisualization"
|
|
@@ -27,8 +25,6 @@ export interface RectDiffPipelineInput {
|
|
|
27
25
|
export class RectDiffPipeline extends BasePipelineSolver<RectDiffPipelineInput> {
|
|
28
26
|
rectDiffGridSolverPipeline?: RectDiffGridSolverPipeline
|
|
29
27
|
gapFillSolver?: GapFillSolverPipeline
|
|
30
|
-
outerLayerContainmentMergeSolver?: OuterLayerContainmentMergeSolver
|
|
31
|
-
adjacentLayerContainmentMergeSolver?: AdjacentLayerContainmentMergeSolver
|
|
32
28
|
boardVoidRects: XYRect[] | undefined
|
|
33
29
|
zIndexByName?: Map<string, number>
|
|
34
30
|
layerNames?: string[]
|
|
@@ -73,38 +69,6 @@ export class RectDiffPipeline extends BasePipelineSolver<RectDiffPipelineInput>
|
|
|
73
69
|
},
|
|
74
70
|
],
|
|
75
71
|
),
|
|
76
|
-
definePipelineStep(
|
|
77
|
-
"outerLayerContainmentMergeSolver",
|
|
78
|
-
OuterLayerContainmentMergeSolver,
|
|
79
|
-
(rectDiffPipeline: RectDiffPipeline) => [
|
|
80
|
-
{
|
|
81
|
-
meshNodes:
|
|
82
|
-
rectDiffPipeline.gapFillSolver?.getOutput().outputNodes ??
|
|
83
|
-
rectDiffPipeline.rectDiffGridSolverPipeline?.getOutput()
|
|
84
|
-
.meshNodes ??
|
|
85
|
-
[],
|
|
86
|
-
simpleRouteJson: rectDiffPipeline.inputProblem.simpleRouteJson,
|
|
87
|
-
zIndexByName: rectDiffPipeline.zIndexByName ?? new Map(),
|
|
88
|
-
obstacleClearance: rectDiffPipeline.inputProblem.obstacleClearance,
|
|
89
|
-
},
|
|
90
|
-
],
|
|
91
|
-
),
|
|
92
|
-
definePipelineStep(
|
|
93
|
-
"adjacentLayerContainmentMergeSolver",
|
|
94
|
-
AdjacentLayerContainmentMergeSolver,
|
|
95
|
-
(rectDiffPipeline: RectDiffPipeline) => [
|
|
96
|
-
{
|
|
97
|
-
meshNodes:
|
|
98
|
-
rectDiffPipeline.outerLayerContainmentMergeSolver?.getOutput()
|
|
99
|
-
.outputNodes ??
|
|
100
|
-
rectDiffPipeline.gapFillSolver?.getOutput().outputNodes ??
|
|
101
|
-
rectDiffPipeline.rectDiffGridSolverPipeline?.getOutput()
|
|
102
|
-
.meshNodes ??
|
|
103
|
-
[],
|
|
104
|
-
simpleRouteJson: rectDiffPipeline.inputProblem.simpleRouteJson,
|
|
105
|
-
},
|
|
106
|
-
],
|
|
107
|
-
),
|
|
108
72
|
]
|
|
109
73
|
|
|
110
74
|
override _setup(): void {
|
|
@@ -136,16 +100,6 @@ export class RectDiffPipeline extends BasePipelineSolver<RectDiffPipelineInput>
|
|
|
136
100
|
}
|
|
137
101
|
|
|
138
102
|
override getOutput(): { meshNodes: CapacityMeshNode[] } {
|
|
139
|
-
const adjacentLayerMergeOutput =
|
|
140
|
-
this.adjacentLayerContainmentMergeSolver?.getOutput()
|
|
141
|
-
if (adjacentLayerMergeOutput) {
|
|
142
|
-
return { meshNodes: adjacentLayerMergeOutput.outputNodes }
|
|
143
|
-
}
|
|
144
|
-
const outerLayerMergeOutput =
|
|
145
|
-
this.outerLayerContainmentMergeSolver?.getOutput()
|
|
146
|
-
if (outerLayerMergeOutput) {
|
|
147
|
-
return { meshNodes: outerLayerMergeOutput.outputNodes }
|
|
148
|
-
}
|
|
149
103
|
const gapFillOutput = this.gapFillSolver?.getOutput()
|
|
150
104
|
if (gapFillOutput) {
|
|
151
105
|
return { meshNodes: gapFillOutput.outputNodes }
|
package/lib/types/srj-types.ts
CHANGED
package/package.json
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import simpleRouteJson from "tests/solver/repros/merge-single-layer-node/merge-single-layer-node.json"
|
|
2
|
+
import { RectDiffPipeline } from "lib/RectDiffPipeline"
|
|
3
|
+
import { useMemo } from "react"
|
|
4
|
+
import { SolverDebugger3d } from "components/SolverDebugger3d"
|
|
5
|
+
|
|
6
|
+
export default () => {
|
|
7
|
+
const problem = simpleRouteJson[0]!
|
|
8
|
+
|
|
9
|
+
const solver = useMemo(() => new RectDiffPipeline(problem), [])
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<SolverDebugger3d
|
|
13
|
+
solver={solver}
|
|
14
|
+
simpleRouteJson={problem.simpleRouteJson}
|
|
15
|
+
/>
|
|
16
|
+
)
|
|
17
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><rect data-type="rect" data-label="node" data-x="-5" data-y="1.
|
|
1
|
+
<svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><rect data-type="rect" data-label="node" data-x="-5" data-y="1.1600000000000008" x="40" y="110" width="210" height="338.80000000000007" fill="#dbeafe" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="5" data-y="1.1600000000000008" x="390" y="110" width="210" height="338.80000000000007" fill="#dbeafe" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="0" data-y="4" x="250" y="110.00000000000006" width="140" height="140" fill="#dbeafe" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="-5.48" data-y="-5.16" x="40" y="471.20000000000005" width="176.39999999999998" height="58.799999999999955" fill="#dbeafe" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="5.48" data-y="-5.16" x="423.6" y="471.20000000000005" width="176.39999999999998" height="58.799999999999955" fill="#dbeafe" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="-2.4800000000000004" data-y="-4.84" x="216.39999999999998" y="448.80000000000007" width="33.60000000000002" height="81.19999999999993" fill="#dbeafe" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="2.4800000000000004" data-y="-4.84" x="390" y="448.80000000000007" width="33.60000000000002" height="81.19999999999993" fill="#dbeafe" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="-5.48" data-y="-4" x="40" y="448.80000000000007" width="176.39999999999998" height="22.399999999999977" fill="#fef3c7" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="5.48" data-y="-4" x="423.6" y="448.80000000000007" width="176.39999999999998" height="22.399999999999977" fill="#fef3c7" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="6.890000000000001" data-y="-4" x="522.3000000000001" y="448.80000000000007" width="77.69999999999993" height="22.399999999999977" fill="#dbeafe" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="-6.89" data-y="-4" x="40" y="448.80000000000007" width="77.70000000000002" height="22.399999999999977" fill="#dbeafe" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="-5" data-y="-4" x="136.6" y="448.80000000000007" width="16.80000000000001" height="22.399999999999977" fill="#dbeafe" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="-3.5900000000000003" data-y="-4" x="172.3" y="448.80000000000007" width="44.099999999999966" height="22.399999999999977" fill="#dbeafe" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="3.5900000000000007" data-y="-4" x="423.6" y="448.80000000000007" width="44.10000000000002" height="22.399999999999977" fill="#dbeafe" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="5" data-y="-4" x="486.6" y="448.80000000000007" width="16.799999999999955" height="22.399999999999977" fill="#dbeafe" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="-5.51" data-y="-4" x="117.70000000000002" y="448.80000000000007" width="18.899999999999977" height="22.399999999999977" fill="red" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="-4.49" data-y="-4" x="153.4" y="448.80000000000007" width="18.899999999999977" height="22.399999999999977" fill="red" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="4.49" data-y="-4" x="467.70000000000005" y="448.80000000000007" width="18.899999999999977" height="22.399999999999977" fill="red" stroke="black" stroke-width="0.02857142857142857"/></g><g><rect data-type="rect" data-label="node" data-x="5.51" data-y="-4" x="503.4" y="448.80000000000007" width="18.899999999999977" height="22.399999999999977" fill="red" stroke="black" stroke-width="0.02857142857142857"/></g><g id="crosshair" style="display: none"><line id="crosshair-h" y1="0" y2="640" 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();
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
v.setAttribute('y2', '640');
|
|
21
21
|
|
|
22
22
|
// Calculate real coordinates using inverse transformation
|
|
23
|
-
const matrix = {"a":35,"c":0,"e":320,"b":0,"d":-35,"f":320};
|
|
23
|
+
const matrix = {"a":35,"c":0,"e":320,"b":0,"d":-35,"f":320.00000000000006};
|
|
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
|