@tscircuit/schematic-trace-solver 0.0.90 → 0.0.91

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 (22) hide show
  1. package/dist/index.js +12 -0
  2. package/lib/solvers/SchematicTracePipelineSolver/correctPinsInsideChip.ts +19 -0
  3. package/package.json +1 -1
  4. package/site/bug-reports/bug-report-20260707T230831Z.page.tsx +4 -0
  5. package/site/bug-reports/bug-report-20260708T053736Z.page.tsx +4 -0
  6. package/site/bug-reports/bug-report-20260708T055430Z.page.tsx +4 -0
  7. package/site/bug-reports/bug-report-20260708T095725Z.page.tsx +4 -0
  8. package/tests/bug-reports/bug-report-20260707T230831Z/__snapshots__/bug-report-20260707T230831Z.snap.svg +94 -0
  9. package/tests/bug-reports/bug-report-20260707T230831Z/bug-report-20260707T230831Z.json +347 -0
  10. package/tests/bug-reports/bug-report-20260707T230831Z/bug-report-20260707T230831Z.test.ts +12 -0
  11. package/tests/bug-reports/bug-report-20260708T053736Z/__snapshots__/bug-report-20260708T053736Z.snap.svg +52 -0
  12. package/tests/bug-reports/bug-report-20260708T053736Z/bug-report-20260708T053736Z.json +59 -0
  13. package/tests/bug-reports/bug-report-20260708T053736Z/bug-report-20260708T053736Z.test.ts +12 -0
  14. package/tests/bug-reports/bug-report-20260708T055430Z/__snapshots__/bug-report-20260708T055430Z.snap.svg +88 -0
  15. package/tests/bug-reports/bug-report-20260708T055430Z/bug-report-20260708T055430Z.json +263 -0
  16. package/tests/bug-reports/bug-report-20260708T055430Z/bug-report-20260708T055430Z.test.ts +12 -0
  17. package/tests/bug-reports/bug-report-20260708T095725Z/__snapshots__/bug-report-20260708T095725Z.snap.svg +87 -0
  18. package/tests/bug-reports/bug-report-20260708T095725Z/bug-report-20260708T095725Z.json +277 -0
  19. package/tests/bug-reports/bug-report-20260708T095725Z/bug-report-20260708T095725Z.test.ts +12 -0
  20. package/tests/repros/__snapshots__/small-variant-resistor-facing-direction.snap.svg +86 -0
  21. package/tests/repros/assets/small-variant-resistor-facing-direction.input.json +297 -0
  22. package/tests/repros/small-variant-resistor-facing-direction.test.ts +35 -0
@@ -0,0 +1,277 @@
1
+ {
2
+ "chips": [
3
+ {
4
+ "chipId": "schematic_component_0",
5
+ "center": {
6
+ "x": 0,
7
+ "y": 0
8
+ },
9
+ "width": 2.1,
10
+ "height": 1.7999999999999998,
11
+ "pins": [
12
+ {
13
+ "pinId": "U1.1",
14
+ "x": -1.05,
15
+ "y": 0.7
16
+ },
17
+ {
18
+ "pinId": "U1.2",
19
+ "x": -1.05,
20
+ "y": 0.49999999999999994
21
+ },
22
+ {
23
+ "pinId": "U1.3",
24
+ "x": -1.05,
25
+ "y": 0.29999999999999993
26
+ },
27
+ {
28
+ "pinId": "U1.4",
29
+ "x": -1.05,
30
+ "y": 0.09999999999999987
31
+ },
32
+ {
33
+ "pinId": "U1.5",
34
+ "x": -1.05,
35
+ "y": -0.10000000000000009
36
+ },
37
+ {
38
+ "pinId": "U1.6",
39
+ "x": -1.05,
40
+ "y": -0.30000000000000004
41
+ },
42
+ {
43
+ "pinId": "U1.7",
44
+ "x": -1.05,
45
+ "y": -0.5
46
+ },
47
+ {
48
+ "pinId": "U1.8",
49
+ "x": -1.05,
50
+ "y": -0.7
51
+ },
52
+ {
53
+ "pinId": "U1.9",
54
+ "x": 1.05,
55
+ "y": -0.6
56
+ },
57
+ {
58
+ "pinId": "U1.10",
59
+ "x": 1.05,
60
+ "y": -0.39999999999999997
61
+ },
62
+ {
63
+ "pinId": "U1.11",
64
+ "x": 1.05,
65
+ "y": -0.19999999999999996
66
+ },
67
+ {
68
+ "pinId": "U1.12",
69
+ "x": 1.05,
70
+ "y": 1.1102230246251565e-16
71
+ },
72
+ {
73
+ "pinId": "U1.13",
74
+ "x": 1.05,
75
+ "y": 0.20000000000000007
76
+ },
77
+ {
78
+ "pinId": "U1.14",
79
+ "x": 1.05,
80
+ "y": 0.4
81
+ },
82
+ {
83
+ "pinId": "U1.15",
84
+ "x": 1.05,
85
+ "y": 0.6
86
+ }
87
+ ]
88
+ },
89
+ {
90
+ "chipId": "schematic_component_1",
91
+ "center": {
92
+ "x": -11.782499999999999,
93
+ "y": -2
94
+ },
95
+ "width": 1.084999999999999,
96
+ "height": 0.6000000000000014,
97
+ "pins": [
98
+ {
99
+ "pinId": "RFSET.1",
100
+ "x": -12,
101
+ "y": -1.6999999999999993
102
+ },
103
+ {
104
+ "pinId": "RFSET.2",
105
+ "x": -12,
106
+ "y": -2.3000000000000007
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "chipId": "schematic_component_2",
112
+ "center": {
113
+ "x": -11.782499999999999,
114
+ "y": -0.18999999999999861
115
+ },
116
+ "width": 1.084999999999999,
117
+ "height": 0.6000000000000014,
118
+ "pins": [
119
+ {
120
+ "pinId": "RTEMP.1",
121
+ "x": -12,
122
+ "y": 0.1100000000000021
123
+ },
124
+ {
125
+ "pinId": "RTEMP.2",
126
+ "x": -12,
127
+ "y": -0.4899999999999993
128
+ }
129
+ ]
130
+ },
131
+ {
132
+ "chipId": "schematic_component_3",
133
+ "center": {
134
+ "x": -11.7225,
135
+ "y": 1.6750000000000007
136
+ },
137
+ "width": 1.205,
138
+ "height": 0.6000000000000014,
139
+ "pins": [
140
+ {
141
+ "pinId": "RFAULT.1",
142
+ "x": -12,
143
+ "y": 1.9750000000000014
144
+ },
145
+ {
146
+ "pinId": "RFAULT.2",
147
+ "x": -12,
148
+ "y": 1.375
149
+ }
150
+ ]
151
+ },
152
+ {
153
+ "chipId": "schematic_component_4",
154
+ "center": {
155
+ "x": 12,
156
+ "y": -1
157
+ },
158
+ "width": 0.6000000000000014,
159
+ "height": 0.8399999999999999,
160
+ "pins": [
161
+ {
162
+ "pinId": "CCOMP.1",
163
+ "x": 11.7,
164
+ "y": -1
165
+ },
166
+ {
167
+ "pinId": "CCOMP.2",
168
+ "x": 12.3,
169
+ "y": -1
170
+ }
171
+ ]
172
+ },
173
+ {
174
+ "chipId": "schematic_component_5",
175
+ "center": {
176
+ "x": 13.517500000000002,
177
+ "y": -1.3000000000000003
178
+ },
179
+ "width": 1.084999999999999,
180
+ "height": 0.6000000000000014,
181
+ "pins": [
182
+ {
183
+ "pinId": "RCOMP.1",
184
+ "x": 13.3,
185
+ "y": -0.9999999999999996
186
+ },
187
+ {
188
+ "pinId": "RCOMP.2",
189
+ "x": 13.3,
190
+ "y": -1.600000000000001
191
+ }
192
+ ]
193
+ }
194
+ ],
195
+ "directConnections": [
196
+ {
197
+ "pinIds": [
198
+ "U1.13",
199
+ "RFSET.1"
200
+ ],
201
+ "netId": "U1.FSET to RFSET.pin1",
202
+ "netLabelWidth": 2.05
203
+ },
204
+ {
205
+ "pinIds": [
206
+ "U1.14",
207
+ "RTEMP.1"
208
+ ],
209
+ "netId": "U1.TEMP to RTEMP.pin1",
210
+ "netLabelWidth": 2.05
211
+ },
212
+ {
213
+ "pinIds": [
214
+ "U1.7",
215
+ "RFAULT.1"
216
+ ],
217
+ "netId": "U1.FAULT to RFAULT.pin1",
218
+ "netLabelWidth": 2.24
219
+ },
220
+ {
221
+ "pinIds": [
222
+ "U1.12",
223
+ "CCOMP.1"
224
+ ],
225
+ "netId": "U1.COMP to CCOMP.pos",
226
+ "netLabelWidth": 1.96
227
+ },
228
+ {
229
+ "pinIds": [
230
+ "CCOMP.2",
231
+ "RCOMP.1"
232
+ ],
233
+ "netId": "CCOMP.neg to RCOMP.pin1"
234
+ }
235
+ ],
236
+ "netConnections": [
237
+ {
238
+ "netId": "GND",
239
+ "pinIds": [
240
+ "RFSET.2",
241
+ "RTEMP.2",
242
+ "RFAULT.2",
243
+ "RCOMP.2"
244
+ ],
245
+ "netLabelWidth": 0.42,
246
+ "netLabelHeight": 0.48
247
+ }
248
+ ],
249
+ "textBoxes": [
250
+ {
251
+ "chipId": "schematic_component_0",
252
+ "center": {
253
+ "x": 0.13,
254
+ "y": -1.0299999999999998
255
+ },
256
+ "width": 1.56,
257
+ "height": 0.18000000000000005,
258
+ "text": "TPS923655DMTR"
259
+ },
260
+ {
261
+ "chipId": "schematic_component_0",
262
+ "center": {
263
+ "x": -0.53,
264
+ "y": 1.0150000000000001
265
+ },
266
+ "width": 0.35999999999999993,
267
+ "height": 0.2500000000000002,
268
+ "text": "U1"
269
+ }
270
+ ],
271
+ "availableNetLabelOrientations": {
272
+ "GND": [
273
+ "y-"
274
+ ]
275
+ },
276
+ "maxMspPairDistance": 2.4
277
+ }
@@ -0,0 +1,12 @@
1
+ import { expect, test } from "bun:test"
2
+ import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
3
+ import inputProblem from "./bug-report-20260708T095725Z.json"
4
+ import "tests/fixtures/matcher"
5
+
6
+ test("bug-report-20260708T095725Z", () => {
7
+ const solver = new SchematicTracePipelineSolver(inputProblem as any)
8
+
9
+ solver.solve()
10
+
11
+ expect(solver).toMatchSolverSnapshot(import.meta.path)
12
+ })
@@ -0,0 +1,86 @@
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><polyline data-points="8.9,15.1 8.9,14.7" data-type="line" data-label="" points="100.44213263979202,152.50975292587782 100.44213263979202,181.63849154746435" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,15.1 11.1,13.3" data-type="line" data-label="" points="100.44213263979202,152.50975292587782 260.6501950585176,283.5890767230169" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.7 11.1,13.3" data-type="line" data-label="" points="100.44213263979202,181.63849154746435 260.6501950585176,283.5890767230169" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 8.9,14.5" data-type="line" data-label="" points="100.44213263979202,167.07412223667097 100.44213263979202,196.2028608582575" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 11.1,12.7" data-type="line" data-label="" points="100.44213263979202,167.07412223667097 260.6501950585176,327.2821846553967" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 13.16,10" data-type="line" data-label="" points="100.44213263979202,167.07412223667097 410.663198959688,523.9011703511054" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.5 11.1,12.7" data-type="line" data-label="" points="100.44213263979202,196.2028608582575 260.6501950585176,327.2821846553967" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.5 13.16,10" data-type="line" data-label="" points="100.44213263979202,196.2028608582575 410.663198959688,523.9011703511054" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,12.7 13.16,10" data-type="line" data-label="" points="260.6501950585176,327.2821846553967 410.663198959688,523.9011703511054" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,15.5 14.84,10" data-type="line" data-label="" points="260.6501950585176,123.38101430429128 533.0039011703514,523.9011703511054" fill="none" stroke="hsl(50, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.7 8.600000000000001,14.7 8.600000000000001,15.1 8.9,15.1" data-type="line" data-label="" points="100.44213263979202,181.63849154746435 78.59557867360218,181.63849154746435 78.59557867360218,152.50975292587782 100.44213263979202,152.50975292587782" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="8.9,14.5 8.8,14.5 8.8,14.9 8.9,14.9" data-type="line" data-label="" points="100.44213263979202,196.2028608582575 93.15994798439544,196.2028608582575 93.15994798439544,167.07412223667097 100.44213263979202,167.07412223667097" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11.1,12.7 12.129999999999999,12.7 12.129999999999999,10 13.16,10" data-type="line" data-label="" points="260.6501950585176,327.2821846553967 335.6566970091028,327.2821846553967 335.6566970091028,523.9011703511054 410.663198959688,523.9011703511054" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11.1,15.5 15.04,15.5 15.04,10 14.84,10" data-type="line" data-label="" points="260.6501950585176,123.38101430429128 547.5682704811445,123.38101430429128 547.5682704811445,523.9011703511054 533.0039011703514,523.9011703511054" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="8.600000000000001,14.7 8.31,14.7 8.31,14.699" data-type="line" data-label="" points="78.59557867360218,181.63849154746435 57.477243172951944,181.63849154746435 57.477243172951944,181.71131339401813" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11.1,13.3 12.341,13.3 12.341,13.249" data-type="line" data-label="" points="260.6501950585176,283.5890767230169 351.0221066319897,283.5890767230169 351.0221066319897,287.3029908972692" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="10" data-y="14" x="100.44213263979202" y="108.81664499349813" width="160.2080624187256" height="247.59427828348498" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="14" data-y="10" x="410.6631989596879" y="499.1417425227569" width="122.34070221066338" height="49.51885565669704" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="ATMEGA328P_AU" data-x="10.080000000000002" data-y="12.17" x="129.57087126137844" y="359.3237971391418" width="113.60208062418747" height="13.10793237971393" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="U_MCU" data-x="9.600000000000001" data-y="15.815" x="125.2015604681406" y="91.33940182054607" width="52.431729518855605" height="18.20546163849167" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="netId: GND
2
+ globalConnNetId: connectivity_net0" data-x="8.31" data-y="14.488999999999999" x="40" y="181.71131339401813" width="34.95448634590389" height="30.585175552665987" fill="#00000066" stroke="#000000" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="netId: GND
3
+ globalConnNetId: connectivity_net0" data-x="12.341" data-y="13.039" x="333.5448634590378" y="287.30299089726924" width="34.954486345903774" height="30.585175552665874" fill="#00000066" stroke="#000000" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="netId: VCC_3V3
4
+ globalConnNetId: connectivity_net1" data-x="11.614999999999998" data-y="12.91" x="263.1989596879063" y="296.69700910273076" width="69.90897269180766" height="30.585175552665874" fill="#ef444466" stroke="#ef4444" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="netId: FAULT
5
+ globalConnNetId: connectivity_net2" data-x="15.399999999999999" data-y="15.5" x="547.5682704811444" y="116.09882964889471" width="52.43172951885549" height="14.564369310793154" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.013732142857142852"/></g><g><circle data-type="point" data-label="U_MCU.1
6
+ x-" data-x="8.9" data-y="15.5" cx="100.44213263979202" cy="123.38101430429128" r="3" fill="hsl(144, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.2
7
+ x-" data-x="8.9" data-y="15.3" cx="100.44213263979202" cy="137.94538361508444" r="3" fill="hsl(145, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.3
8
+ x-" data-x="8.9" data-y="15.1" cx="100.44213263979202" cy="152.50975292587782" r="3" fill="hsl(146, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.4
9
+ x-" data-x="8.9" data-y="14.9" cx="100.44213263979202" cy="167.07412223667097" r="3" fill="hsl(147, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.5
10
+ x-" data-x="8.9" data-y="14.7" cx="100.44213263979202" cy="181.63849154746435" r="3" fill="hsl(148, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.6
11
+ x-" data-x="8.9" data-y="14.5" cx="100.44213263979202" cy="196.2028608582575" r="3" fill="hsl(149, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.7
12
+ x-" data-x="8.9" data-y="14.3" cx="100.44213263979202" cy="210.76723016905066" r="3" fill="hsl(150, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.8
13
+ x-" data-x="8.9" data-y="14.1" cx="100.44213263979202" cy="225.33159947984404" r="3" fill="hsl(151, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.9
14
+ x-" data-x="8.9" data-y="13.9" cx="100.44213263979202" cy="239.8959687906372" r="3" fill="hsl(152, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.10
15
+ x-" data-x="8.9" data-y="13.700000000000001" cx="100.44213263979202" cy="254.46033810143035" r="3" fill="hsl(192, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.11
16
+ x-" data-x="8.9" data-y="13.5" cx="100.44213263979202" cy="269.02470741222373" r="3" fill="hsl(193, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.12
17
+ x-" data-x="8.9" data-y="13.3" cx="100.44213263979202" cy="283.5890767230169" r="3" fill="hsl(194, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.13
18
+ x-" data-x="8.9" data-y="13.1" cx="100.44213263979202" cy="298.15344603381016" r="3" fill="hsl(195, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.14
19
+ x-" data-x="8.9" data-y="12.9" cx="100.44213263979202" cy="312.7178153446034" r="3" fill="hsl(196, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.15
20
+ x-" data-x="8.9" data-y="12.7" cx="100.44213263979202" cy="327.2821846553967" r="3" fill="hsl(197, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.16
21
+ x-" data-x="8.9" data-y="12.5" cx="100.44213263979202" cy="341.84655396618996" r="3" fill="hsl(198, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.17
22
+ x+" data-x="11.1" data-y="12.5" cx="260.6501950585176" cy="341.84655396618996" r="3" fill="hsl(199, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.18
23
+ x+" data-x="11.1" data-y="12.7" cx="260.6501950585176" cy="327.2821846553967" r="3" fill="hsl(200, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.19
24
+ x+" data-x="11.1" data-y="12.9" cx="260.6501950585176" cy="312.7178153446034" r="3" fill="hsl(201, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.20
25
+ x+" data-x="11.1" data-y="13.1" cx="260.6501950585176" cy="298.15344603381016" r="3" fill="hsl(223, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.21
26
+ x+" data-x="11.1" data-y="13.3" cx="260.6501950585176" cy="283.5890767230169" r="3" fill="hsl(224, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.22
27
+ x+" data-x="11.1" data-y="13.5" cx="260.6501950585176" cy="269.02470741222373" r="3" fill="hsl(225, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.23
28
+ x+" data-x="11.1" data-y="13.7" cx="260.6501950585176" cy="254.46033810143047" r="3" fill="hsl(226, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.24
29
+ x+" data-x="11.1" data-y="13.9" cx="260.6501950585176" cy="239.8959687906372" r="3" fill="hsl(227, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.25
30
+ x+" data-x="11.1" data-y="14.1" cx="260.6501950585176" cy="225.33159947984404" r="3" fill="hsl(228, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.26
31
+ x+" data-x="11.1" data-y="14.299999999999999" cx="260.6501950585176" cy="210.7672301690509" r="3" fill="hsl(229, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.27
32
+ x+" data-x="11.1" data-y="14.5" cx="260.6501950585176" cy="196.2028608582575" r="3" fill="hsl(230, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.28
33
+ x+" data-x="11.1" data-y="14.7" cx="260.6501950585176" cy="181.63849154746435" r="3" fill="hsl(231, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.29
34
+ x+" data-x="11.1" data-y="14.9" cx="260.6501950585176" cy="167.07412223667097" r="3" fill="hsl(232, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.30
35
+ x+" data-x="11.1" data-y="15.1" cx="260.6501950585176" cy="152.50975292587782" r="3" fill="hsl(254, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.31
36
+ x+" data-x="11.1" data-y="15.3" cx="260.6501950585176" cy="137.94538361508444" r="3" fill="hsl(255, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.32
37
+ x+" data-x="11.1" data-y="15.5" cx="260.6501950585176" cy="123.38101430429128" r="3" fill="hsl(256, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R_FAULT_PULLUP.1
38
+ x-" data-x="13.16" data-y="10" cx="410.663198959688" cy="523.9011703511054" r="3" fill="hsl(344, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R_FAULT_PULLUP.2
39
+ x+" data-x="14.84" data-y="10" cx="533.0039011703514" cy="523.9011703511054" r="3" fill="hsl(344, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
40
+ orientation: y-" data-x="8.31" data-y="14.699" cx="57.477243172951944" cy="181.71131339401813" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
41
+ orientation: y-" data-x="12.341" data-y="13.249" cx="351.0221066319897" cy="287.3029908972692" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
42
+ orientation: y+" data-x="11.614999999999998" data-y="12.7" cx="298.15344603381016" cy="327.2821846553967" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
43
+ orientation: x+" data-x="15.04" data-y="15.5" cx="547.5682704811445" cy="123.38101430429128" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></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[
44
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
45
+ const svg = e.currentTarget;
46
+ const rect = svg.getBoundingClientRect();
47
+ const x = e.clientX - rect.left;
48
+ const y = e.clientY - rect.top;
49
+ const crosshair = svg.getElementById('crosshair');
50
+ const h = svg.getElementById('crosshair-h');
51
+ const v = svg.getElementById('crosshair-v');
52
+ const coords = svg.getElementById('coordinates');
53
+
54
+ crosshair.style.display = 'block';
55
+ h.setAttribute('x1', '0');
56
+ h.setAttribute('x2', '640');
57
+ h.setAttribute('y1', y);
58
+ h.setAttribute('y2', y);
59
+ v.setAttribute('x1', x);
60
+ v.setAttribute('x2', x);
61
+ v.setAttribute('y1', '0');
62
+ v.setAttribute('y2', '640');
63
+
64
+ // Calculate real coordinates using inverse transformation
65
+ const matrix = {"a":72.82184655396621,"c":0,"e":-547.6723016905073,"b":0,"d":-72.82184655396621,"f":1252.1196358907675};
66
+ // Manually invert and apply the affine transform
67
+ // Since we only use translate and scale, we can directly compute:
68
+ // x' = (x - tx) / sx
69
+ // y' = (y - ty) / sy
70
+ const sx = matrix.a;
71
+ const sy = matrix.d;
72
+ const tx = matrix.e;
73
+ const ty = matrix.f;
74
+ const realPoint = {
75
+ x: (x - tx) / sx,
76
+ y: (y - ty) / sy // Flip y back since we used negative scale
77
+ }
78
+
79
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
80
+ coords.setAttribute('x', (x + 5).toString());
81
+ coords.setAttribute('y', (y - 5).toString());
82
+ });
83
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
84
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
85
+ });
86
+ ]]></script></svg>