@tscircuit/schematic-trace-solver 0.0.33 → 0.0.35

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.
Files changed (27) hide show
  1. package/dist/index.js +36 -4
  2. package/lib/solvers/NetLabelPlacementSolver/NetLabelPlacementSolver.ts +25 -4
  3. package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/SchematicTraceSingleLineSolver2.ts +19 -0
  4. package/package.json +2 -2
  5. package/site/SchematicTraceSingleLineSolver2/SchematicTraceSingleLineSolver2_01-example17.page.tsx +324 -0
  6. package/site/examples/example15-rp2040-caps.page.tsx +623 -0
  7. package/site/examples/example16-core-repro51.page.tsx +107 -0
  8. package/site/examples/example17-straight-line-trace.page.tsx +165 -0
  9. package/site/examples/example18.page.tsx +181 -0
  10. package/site/examples/example19.page.tsx +169 -0
  11. package/tests/examples/__snapshots__/example02.snap.svg +5 -8
  12. package/tests/examples/__snapshots__/example04.snap.svg +15 -12
  13. package/tests/examples/__snapshots__/example15.snap.svg +797 -71
  14. package/tests/examples/__snapshots__/example16.snap.svg +40 -86
  15. package/tests/examples/__snapshots__/example17.snap.svg +187 -0
  16. package/tests/examples/__snapshots__/example18.snap.svg +235 -0
  17. package/tests/examples/__snapshots__/example19.snap.svg +195 -0
  18. package/tests/examples/example15.test.tsx +524 -82
  19. package/tests/examples/example16.test.tsx +56 -118
  20. package/tests/examples/example17.test.tsx +171 -0
  21. package/tests/examples/example18.test.tsx +187 -0
  22. package/tests/examples/example19.test.tsx +175 -0
  23. package/tests/fixtures/matcher.ts +17 -15
  24. package/tests/fixtures/preload.ts +1 -0
  25. package/tests/solvers/SchematicTraceSingleLineSolver/SchematicTraceSingleLineSolver_repro01.test.ts +1 -1
  26. package/tests/solvers/SchematicTraceSingleLineSolver2/SchematicTraceSingleLineSolver2_01-example17-d1_1-u1_1.test.ts +323 -0
  27. package/tests/solvers/SchematicTraceSingleLineSolver2/__snapshots__/SchematicTraceSingleLineSolver2_01-example17-d1_1-u1_1.snap.svg +160 -0
@@ -0,0 +1,165 @@
1
+ import { PipelineDebugger } from "site/components/PipelineDebugger"
2
+ import type { InputProblem } from "lib/types/InputProblem"
3
+
4
+ const inputProblem: InputProblem = {
5
+ chips: [
6
+ {
7
+ chipId: "schematic_component_0",
8
+ center: {
9
+ x: 0,
10
+ y: 0,
11
+ },
12
+ width: 2.3,
13
+ height: 1,
14
+ pins: [
15
+ {
16
+ pinId: "U1.1",
17
+ x: -1.15,
18
+ y: 0.30000000000000004,
19
+ },
20
+ {
21
+ pinId: "U1.2",
22
+ x: -1.15,
23
+ y: 0.10000000000000003,
24
+ },
25
+ {
26
+ pinId: "U1.3",
27
+ x: -1.15,
28
+ y: -0.09999999999999998,
29
+ },
30
+ {
31
+ pinId: "U1.4",
32
+ x: -1.15,
33
+ y: -0.30000000000000004,
34
+ },
35
+ {
36
+ pinId: "U1.5",
37
+ x: 1.15,
38
+ y: -0.30000000000000004,
39
+ },
40
+ {
41
+ pinId: "U1.6",
42
+ x: 1.15,
43
+ y: -0.10000000000000003,
44
+ },
45
+ {
46
+ pinId: "U1.7",
47
+ x: 1.15,
48
+ y: 0.09999999999999998,
49
+ },
50
+ {
51
+ pinId: "U1.8",
52
+ x: 1.15,
53
+ y: 0.30000000000000004,
54
+ },
55
+ ],
56
+ },
57
+ {
58
+ chipId: "schematic_component_1",
59
+ center: {
60
+ x: -1.1500000000000004,
61
+ y: 1.6700000000000002,
62
+ },
63
+ width: 1.04,
64
+ height: 1.0400000000000005,
65
+ pins: [
66
+ {
67
+ pinId: "D1.1",
68
+ x: -1.1500000000000004,
69
+ y: 1.15,
70
+ },
71
+ {
72
+ pinId: "D1.2",
73
+ x: -1.1500000000000004,
74
+ y: 2.1900000000000004,
75
+ },
76
+ ],
77
+ },
78
+ {
79
+ chipId: "schematic_component_2",
80
+ center: {
81
+ x: -2.37,
82
+ y: 0.10000000000000009,
83
+ },
84
+ width: 1.04,
85
+ height: 0.54,
86
+ pins: [
87
+ {
88
+ pinId: "D2.1",
89
+ x: -1.85,
90
+ y: 0.10000000000000002,
91
+ },
92
+ {
93
+ pinId: "D2.2",
94
+ x: -2.89,
95
+ y: 0.10000000000000016,
96
+ },
97
+ ],
98
+ },
99
+ {
100
+ chipId: "schematic_component_3",
101
+ center: {
102
+ x: 2.4,
103
+ y: -0.3000000000000007,
104
+ },
105
+ width: 1.1000000000000005,
106
+ height: 0.84,
107
+ pins: [
108
+ {
109
+ pinId: "C1.1",
110
+ x: 1.8499999999999996,
111
+ y: -0.3000000000000007,
112
+ },
113
+ {
114
+ pinId: "C1.2",
115
+ x: 2.95,
116
+ y: -0.3000000000000007,
117
+ },
118
+ ],
119
+ },
120
+ {
121
+ chipId: "schematic_component_4",
122
+ center: {
123
+ x: 4.2,
124
+ y: -0.3000000000000007,
125
+ },
126
+ width: 1.0999999999999996,
127
+ height: 0.84,
128
+ pins: [
129
+ {
130
+ pinId: "C2.1",
131
+ x: 3.6500000000000004,
132
+ y: -0.3000000000000007,
133
+ },
134
+ {
135
+ pinId: "C2.2",
136
+ x: 4.75,
137
+ y: -0.3000000000000007,
138
+ },
139
+ ],
140
+ },
141
+ ],
142
+ directConnections: [
143
+ {
144
+ pinIds: ["U1.5", "C1.1"],
145
+ netId: ".U1 .VCC to .C1 .pin1",
146
+ },
147
+ {
148
+ pinIds: ["C1.2", "C2.1"],
149
+ netId: ".C1 .pin2 to .C2 .pin1",
150
+ },
151
+ {
152
+ pinIds: ["U1.1", "D1.1"],
153
+ netId: ".U1 .OUT1 to .D1 .pin1",
154
+ },
155
+ {
156
+ pinIds: ["U1.2", "D2.1"],
157
+ netId: ".U1 .OUT2 to .D2 .pin1",
158
+ },
159
+ ],
160
+ netConnections: [],
161
+ availableNetLabelOrientations: {},
162
+ maxMspPairDistance: 2.4,
163
+ }
164
+
165
+ export default () => <PipelineDebugger inputProblem={inputProblem} />
@@ -0,0 +1,181 @@
1
+ import { PipelineDebugger } from "site/components/PipelineDebugger"
2
+ import type { InputProblem } from "lib/types/InputProblem"
3
+
4
+ const inputProblem: InputProblem = {
5
+ chips: [
6
+ {
7
+ chipId: "schematic_component_0",
8
+ center: {
9
+ x: 0,
10
+ y: 0,
11
+ },
12
+ width: 2,
13
+ height: 1.4,
14
+ pins: [
15
+ {
16
+ pinId: "U3.8",
17
+ x: -1.4,
18
+ y: 0.42500000000000004,
19
+ },
20
+ {
21
+ pinId: "U3.4",
22
+ x: -1.4,
23
+ y: -0.42500000000000004,
24
+ },
25
+ {
26
+ pinId: "U3.1",
27
+ x: 1.4,
28
+ y: 0.5,
29
+ },
30
+ {
31
+ pinId: "U3.6",
32
+ x: 1.4,
33
+ y: 0.30000000000000004,
34
+ },
35
+ {
36
+ pinId: "U3.5",
37
+ x: 1.4,
38
+ y: 0.10000000000000009,
39
+ },
40
+ {
41
+ pinId: "U3.2",
42
+ x: 1.4,
43
+ y: -0.09999999999999998,
44
+ },
45
+ {
46
+ pinId: "U3.3",
47
+ x: 1.4,
48
+ y: -0.3,
49
+ },
50
+ {
51
+ pinId: "U3.7",
52
+ x: 1.4,
53
+ y: -0.5,
54
+ },
55
+ ],
56
+ },
57
+ {
58
+ chipId: "schematic_component_1",
59
+ center: {
60
+ x: -2.3145833,
61
+ y: 0,
62
+ },
63
+ width: 0.5291665999999999,
64
+ height: 1.0583333000000001,
65
+ pins: [
66
+ {
67
+ pinId: "C20.1",
68
+ x: -2.3148566499999994,
69
+ y: 0.5512093000000002,
70
+ },
71
+ {
72
+ pinId: "C20.2",
73
+ x: -2.31430995,
74
+ y: -0.5512093000000002,
75
+ },
76
+ ],
77
+ },
78
+ {
79
+ chipId: "schematic_component_2",
80
+ center: {
81
+ x: 1.7577928249999983,
82
+ y: 1.7512907000000002,
83
+ },
84
+ width: 0.3155856499999966,
85
+ height: 1.0583332999999997,
86
+ pins: [
87
+ {
88
+ pinId: "R11.1",
89
+ x: 1.7580660749999977,
90
+ y: 2.3025814000000002,
91
+ },
92
+ {
93
+ pinId: "R11.2",
94
+ x: 1.757519574999999,
95
+ y: 1.2,
96
+ },
97
+ ],
98
+ },
99
+ {
100
+ chipId: "schematic_component_3",
101
+ center: {
102
+ x: -1.7577928249999983,
103
+ y: -2.7512907000000002,
104
+ },
105
+ width: 0.3155856499999966,
106
+ height: 1.0583332999999997,
107
+ pins: [
108
+ {
109
+ pinId: "R12.1",
110
+ x: -1.7580660749999977,
111
+ y: -3.3025814000000002,
112
+ },
113
+ {
114
+ pinId: "R12.2",
115
+ x: -1.757519574999999,
116
+ y: -2.2,
117
+ },
118
+ ],
119
+ },
120
+ {
121
+ chipId: "schematic_component_4",
122
+ center: {
123
+ x: 1.7577928249999983,
124
+ y: -2.7512907000000002,
125
+ },
126
+ width: 0.3155856499999966,
127
+ height: 1.0583332999999997,
128
+ pins: [
129
+ {
130
+ pinId: "R13.1",
131
+ x: 1.7580660749999977,
132
+ y: -3.3025814000000002,
133
+ },
134
+ {
135
+ pinId: "R13.2",
136
+ x: 1.757519574999999,
137
+ y: -2.2,
138
+ },
139
+ ],
140
+ },
141
+ ],
142
+ directConnections: [
143
+ {
144
+ pinIds: ["C20.1", "U3.8"],
145
+ netId: "capacitor.C20 > port.pin1 to .U3 > .VDD",
146
+ },
147
+ {
148
+ pinIds: ["C20.2", "U3.4"],
149
+ netId: "capacitor.C20 > port.pin2 to .U3 > .GND",
150
+ },
151
+ {
152
+ pinIds: ["R11.2", "U3.1"],
153
+ netId: "resistor.R11 > port.pin2 to .U3 > .N_CS",
154
+ },
155
+ {
156
+ pinIds: ["R13.2", "R12.2"],
157
+ netId: "resistor.R11 > port.pin1 to resistor.R12 > port.pin1",
158
+ },
159
+ ],
160
+ netConnections: [
161
+ {
162
+ netId: "V3_3",
163
+ pinIds: ["U3.8", "U3.3", "U3.7", "C20.1", "R11.1"],
164
+ },
165
+ {
166
+ netId: "GND",
167
+ pinIds: ["U3.4", "C20.2"],
168
+ },
169
+ {
170
+ netId: "FLASH_N_CS",
171
+ pinIds: ["U3.1", "R11.2"],
172
+ },
173
+ ],
174
+ availableNetLabelOrientations: {
175
+ V3_3: ["y+"],
176
+ GND: ["y-"],
177
+ },
178
+ maxMspPairDistance: 5,
179
+ }
180
+
181
+ export default () => <PipelineDebugger inputProblem={inputProblem} />
@@ -0,0 +1,169 @@
1
+ import { PipelineDebugger } from "site/components/PipelineDebugger"
2
+ import type { InputProblem } from "lib/types/InputProblem"
3
+
4
+ const inputProblem: InputProblem = {
5
+ chips: [
6
+ {
7
+ chipId: "schematic_component_0",
8
+ center: {
9
+ x: 0,
10
+ y: 0,
11
+ },
12
+ width: 0.4,
13
+ height: 0.8,
14
+ pins: [
15
+ {
16
+ pinId: "U1.6",
17
+ x: 0.6000000000000001,
18
+ y: -0.2,
19
+ },
20
+ {
21
+ pinId: "U1.8",
22
+ x: 0.6000000000000001,
23
+ y: 0,
24
+ },
25
+ {
26
+ pinId: "U1.1",
27
+ x: 0.6000000000000001,
28
+ y: 0.2,
29
+ },
30
+ ],
31
+ },
32
+ {
33
+ chipId: "schematic_component_1",
34
+ center: {
35
+ x: 1.4,
36
+ y: 0.55,
37
+ },
38
+ width: 0.5291665999999999,
39
+ height: 1.0583333000000001,
40
+ pins: [
41
+ {
42
+ pinId: "C2.1",
43
+ x: 1.4002733499999995,
44
+ y: -0.0012093000000001908,
45
+ },
46
+ {
47
+ pinId: "C2.2",
48
+ x: 1.3997266500000003,
49
+ y: 1.1012093000000003,
50
+ },
51
+ ],
52
+ },
53
+ {
54
+ chipId: "schematic_component_2",
55
+ center: {
56
+ x: 2.7,
57
+ y: 1.3,
58
+ },
59
+ width: 1.0583332999999997,
60
+ height: 0.388910699999999,
61
+ pins: [
62
+ {
63
+ pinId: "R1.1",
64
+ x: 2.1487093,
65
+ y: 1.3002732499999994,
66
+ },
67
+ {
68
+ pinId: "R1.2",
69
+ x: 3.2512907000000006,
70
+ y: 1.2997267500000007,
71
+ },
72
+ ],
73
+ },
74
+ {
75
+ chipId: "schematic_component_3",
76
+ center: {
77
+ x: 4.4,
78
+ y: 0,
79
+ },
80
+ width: 0.4,
81
+ height: 0.4,
82
+ pins: [
83
+ {
84
+ pinId: "JP5.1",
85
+ x: 3.8000000000000003,
86
+ y: 0,
87
+ },
88
+ ],
89
+ },
90
+ {
91
+ chipId: "schematic_component_4",
92
+ center: {
93
+ x: 4.4,
94
+ y: -0.9,
95
+ },
96
+ width: 0.4,
97
+ height: 0.4,
98
+ pins: [
99
+ {
100
+ pinId: "JP9.1",
101
+ x: 3.8000000000000003,
102
+ y: -0.9,
103
+ },
104
+ ],
105
+ },
106
+ {
107
+ chipId: "schematic_component_5",
108
+ center: {
109
+ x: 2,
110
+ y: -1.1,
111
+ },
112
+ width: 0.8843008999999997,
113
+ height: 0.5299361999999987,
114
+ pins: [
115
+ {
116
+ pinId: "JP8.1",
117
+ x: 2.4458007999999998,
118
+ y: -1.2015872704999997,
119
+ },
120
+ {
121
+ pinId: "JP8.2",
122
+ x: 2.0034928,
123
+ y: -0.8474009705000005,
124
+ },
125
+ {
126
+ pinId: "JP8.3",
127
+ x: 1.5541992,
128
+ y: -1.2014628704999997,
129
+ },
130
+ ],
131
+ },
132
+ ],
133
+ directConnections: [
134
+ {
135
+ pinIds: ["C2.1", "U1.8"],
136
+ netId: "capacitor.C2 > port.pin1 to .U1 > .pin8",
137
+ },
138
+ {
139
+ pinIds: ["C2.2", "R1.1"],
140
+ netId: "capacitor.C2 > port.pin2 to .R1 > .pin1",
141
+ },
142
+ {
143
+ pinIds: ["R1.1", "U1.1"],
144
+ netId: "resistor.R1 > port.pin1 to .U1 > .pin1",
145
+ },
146
+ {
147
+ pinIds: ["JP5.1", "R1.2"],
148
+ netId: "pinheader.JP5 > port.pin1 to .R1 > .pin2",
149
+ },
150
+ {
151
+ pinIds: ["JP9.1", "R1.2"],
152
+ netId: "pinheader.JP9 > port.pin1 to .R1 > .pin2",
153
+ },
154
+ {
155
+ pinIds: ["JP8.2", "U1.6"],
156
+ netId: "solderjumper.JP8 > port.pin2 to .U1 > .pin6",
157
+ },
158
+ ],
159
+ netConnections: [
160
+ {
161
+ netId: "PAD",
162
+ pinIds: ["R1.2", "JP5.1", "JP9.1"],
163
+ },
164
+ ],
165
+ availableNetLabelOrientations: {},
166
+ maxMspPairDistance: 5,
167
+ }
168
+
169
+ export default () => <PipelineDebugger inputProblem={inputProblem} />
@@ -62,10 +62,7 @@ x+" data-x="1" data-y="0.1" cx="500.20151295522464" cy="324.189420823755" r="3"
62
62
  <circle data-type="point" data-label="" data-x="1.9148566499999995" data-y="-1.0024186000000008" cx="577.6301897281687" cy="417.4923589921354" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
63
63
  </g>
64
64
  <g>
65
- <circle data-type="point" data-label="" data-x="1" data-y="0.1" cx="500.20151295522464" cy="324.189420823755" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
66
- </g>
67
- <g>
68
- <circle data-type="point" data-label="" data-x="1.9143099500000003" data-y="0.09999999999999964" cx="577.5839199026265" cy="324.189420823755" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
65
+ <circle data-type="point" data-label="" data-x="1.4571549750000001" data-y="0.29999999999999966" cx="538.8927164289255" cy="307.26246800050245" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
69
66
  </g>
70
67
  <g>
71
68
  <polyline data-points="-1,0.2 -1.9148566499999995,1.1024186000000005" data-type="line" data-label="" points="330.93198472269955,315.7259444121287 253.50330794975545,239.34995906700078" fill="none" stroke="hsl(248, 100%, 50%, 0.8)" stroke-width="1" />
@@ -175,6 +172,9 @@ x+" data-x="1" data-y="0.1" cx="500.20151295522464" cy="324.189420823755" r="3"
175
172
  <g>
176
173
  <polyline data-points="-1,0 -1.0999999999999999,0 -1.0999999999999999,-0.09999999999999995 -1.9143099500000003,-0.09999999999999995 -1.9143099500000003,0" data-type="line" data-label="" points="330.93198472269955,332.6528972353812 322.4685083110733,332.6528972353812 322.4685083110733,341.11637364700744 253.54957777529776,341.11637364700744 253.54957777529776,332.6528972353812" fill="none" stroke="purple" stroke-width="1" />
177
174
  </g>
175
+ <g>
176
+ <polyline data-points="1,0.1 1.4571549750000001,0.1 1.4571549750000001,0.29999999999999966 1.9143099500000003,0.29999999999999966 1.9143099500000003,0.09999999999999964" data-type="line" data-label="" points="500.20151295522464,324.189420823755 538.8927164289255,324.189420823755 538.8927164289255,307.26246800050245 577.5839199026265,307.26246800050245 577.5839199026265,324.189420823755" fill="none" stroke="purple" stroke-width="1" />
177
+ </g>
178
178
  <g>
179
179
  <rect data-type="rect" data-label="schematic_component_0" data-x="-1.9145832999999999" data-y="0.5512093000000002" x="231.13349767792428" y="239.34995906700078" width="44.78589036920462" height="93.30293816838042" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.011815475714285715" />
180
180
  </g>
@@ -200,10 +200,7 @@ x+" data-x="1" data-y="0.1" cx="500.20151295522464" cy="324.189420823755" r="3"
200
200
  <rect data-type="rect" data-label="" data-x="1.9148566499999995" data-y="-1.2284186000000008" x="569.1667133165424" y="417.5769937562517" width="16.926952823252577" height="38.08564385231813" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011815475714285715" />
201
201
  </g>
202
202
  <g>
203
- <rect data-type="rect" data-label="" data-x="1.226" data-y="0.1" x="500.2861477193409" y="315.7259444121287" width="38.085643852318185" height="16.92695282325252" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011815475714285715" />
204
- </g>
205
- <g>
206
- <rect data-type="rect" data-label="" data-x="1.9143099500000003" data-y="0.3259999999999996" x="569.1204434910002" y="286.01914220732056" width="16.926952823252464" height="38.085643852318185" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011815475714285715" />
203
+ <rect data-type="rect" data-label="" data-x="1.4571549750000001" data-y="0.5249999999999997" x="530.4292400172993" y="269.1768241481843" width="16.926952823252464" height="38.08564385231813" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011815475714285715" />
207
204
  </g>
208
205
  <g id="crosshair" style="display: none">
209
206
  <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
@@ -2,30 +2,33 @@
2
2
  <rect width="100%" height="100%" fill="white" />
3
3
  <g>
4
4
  <circle data-type="point" data-label="Q1.1
5
- y+" data-x="0.30397715550000004" data-y="0.5800832909999993" cx="376.82474681593334" cy="221.0795201051653" r="3" fill="hsl(315, 100%, 50%, 0.8)" />
5
+ y+" data-x="0.30397715550000004" data-y="0.5800832909999993" cx="402.5477478715151" cy="162.47313199841204" r="3" fill="hsl(315, 100%, 50%, 0.8)" />
6
6
  </g>
7
7
  <g>
8
8
  <circle data-type="point" data-label="Q1.2
9
- y-" data-x="0.31067575550000137" data-y="-0.5800832909999993" cx="378.69086877497443" cy="544.283224583026" r="3" fill="hsl(316, 100%, 50%, 0.8)" />
9
+ y-" data-x="0.31067575550000137" data-y="-0.5800832909999993" cx="404.36681333050564" cy="477.52686800158796" r="3" fill="hsl(316, 100%, 50%, 0.8)" />
10
10
  </g>
11
11
  <g>
12
12
  <circle data-type="point" data-label="Q1.3
13
- x-" data-x="-0.4467558855000001" data-y="-0.10250625000000019" cx="167.68262559843902" cy="411.2379608945266" r="3" fill="hsl(317, 100%, 50%, 0.8)" />
13
+ x-" data-x="-0.4467558855000001" data-y="-0.10250625000000019" cx="198.67939570751895" cy="347.8364999709806" r="3" fill="hsl(317, 100%, 50%, 0.8)" />
14
14
  </g>
15
15
  <g>
16
- <circle data-type="point" data-label="" data-x="0.30397715550000004" data-y="0.7800832909999994" cx="376.82474681593334" cy="165.36274468819138" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
16
+ <circle data-type="point" data-label="" data-x="0.30397715550000004" data-y="0.5800832909999993" cx="402.5477478715151" cy="162.47313199841204" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
17
17
  </g>
18
18
  <g>
19
- <polyline data-points="0.30397715550000004,0.5800832909999993 0.31067575550000137,-0.5800832909999993" data-type="line" data-label="" points="376.82474681593334,221.0795201051653 378.69086877497443,544.283224583026" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
19
+ <circle data-type="point" data-label="" data-x="0.31067575550000137" data-y="-0.5800832909999993" cx="404.36681333050564" cy="477.52686800158796" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
20
20
  </g>
21
21
  <g>
22
- <polyline data-points="0.30397715550000004,0.5800832909999993 0.30397715550000004,0.7800832909999994 0.6467558855000002,0.7800832909999994 0.6467558855000002,-0.7800832909999995 0.31067575550000137,-0.7800832909999995 0.31067575550000137,-0.5800832909999993" data-type="line" data-label="" points="376.82474681593334,221.0795201051653 376.82474681593334,165.36274468819138 472.31737440156104,165.36274468819138 472.31737440156104,600 378.69086877497443,600 378.69086877497443,544.283224583026" fill="none" stroke="purple" stroke-width="1" />
22
+ <polyline data-points="0.30397715550000004,0.5800832909999993 0.31067575550000137,-0.5800832909999993" data-type="line" data-label="" points="402.5477478715151,162.47313199841204 404.36681333050564,477.52686800158796" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
23
23
  </g>
24
24
  <g>
25
- <rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="167.68262559843902" y="221.0795201051653" width="248.9179733861481" height="323.2037044778607" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.003589583182142856" />
25
+ <rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="198.67939570751895" y="162.47313199841204" width="242.6412085849621" height="315.0537360031759" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.003682440324999998" />
26
26
  </g>
27
27
  <g>
28
- <rect data-type="rect" data-label="" data-x="0.30397715550000004" data-y="1.0050832909999994" x="348.9663591074464" y="40.000000000000114" width="55.71677541697386" height="125.36274468819127" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.003589583182142856" />
28
+ <rect data-type="rect" data-label="" data-x="0.30397715550000004" data-y="0.8060832909999993" x="375.3918427720889" y="40" width="54.311810198852356" height="122.20157294741779" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.003682440324999998" />
29
+ </g>
30
+ <g>
31
+ <rect data-type="rect" data-label="" data-x="0.31067575550000137" data-y="-0.8060832909999993" x="377.2109082310795" y="477.7984270525822" width="54.3118101988523" height="122.20157294741779" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.003682440324999998" />
29
32
  </g>
30
33
  <g id="crosshair" style="display: none">
31
34
  <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
@@ -55,12 +58,12 @@ x-" data-x="-0.4467558855000001" data-y="-0.10250625000000019" cx="167.682625598
55
58
 
56
59
  // Calculate real coordinates using inverse transformation
57
60
  const matrix = {
58
- "a": 278.58387708486947,
61
+ "a": 271.55905099426167,
59
62
  "c": 0,
60
- "e": 292.14161229151307,
63
+ "e": 320,
61
64
  "b": 0,
62
- "d": -278.58387708486947,
63
- "f": 382.6813723440957
65
+ "d": -271.55905099426167,
66
+ "f": 320
64
67
  };
65
68
  // Manually invert and apply the affine transform
66
69
  // Since we only use translate and scale, we can directly compute: