@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
@@ -1,139 +1,93 @@
1
1
  <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg">
2
2
  <rect width="100%" height="100%" fill="white" />
3
- <g>
4
- <circle data-type="point" data-label="U1.6
5
- x+" data-x="0.6000000000000001" data-y="-0.2" cx="160.00000000000003" cy="359.23793250000006" r="3" fill="hsl(324, 100%, 50%, 0.8)" />
6
- </g>
7
- <g>
8
- <circle data-type="point" data-label="U1.8
9
- x+" data-x="0.6000000000000001" data-y="0" cx="160.00000000000003" cy="339.23793250000006" r="3" fill="hsl(326, 100%, 50%, 0.8)" />
10
- </g>
11
3
  <g>
12
4
  <circle data-type="point" data-label="U1.1
13
- x+" data-x="0.6000000000000001" data-y="0.2" cx="160.00000000000003" cy="319.23793250000006" r="3" fill="hsl(319, 100%, 50%, 0.8)" />
14
- </g>
15
- <g>
16
- <circle data-type="point" data-label="C2.1
17
- y-" data-x="1.4002733499999995" data-y="-0.0012093000000001908" cx="240.027335" cy="339.3588625000001" r="3" fill="hsl(2, 100%, 50%, 0.8)" />
18
- </g>
19
- <g>
20
- <circle data-type="point" data-label="C2.2
21
- y+" data-x="1.3997266500000003" data-y="1.1012093000000003" cx="239.97266500000006" cy="229.1170025" r="3" fill="hsl(3, 100%, 50%, 0.8)" />
22
- </g>
23
- <g>
24
- <circle data-type="point" data-label="R1.1
25
- x-" data-x="2.1487092999999997" data-y="1.3002732499999994" cx="314.87093" cy="209.21060750000012" r="3" fill="hsl(226, 100%, 50%, 0.8)" />
26
- </g>
27
- <g>
28
- <circle data-type="point" data-label="R1.2
29
- x+" data-x="3.2512907000000006" data-y="1.2997267500000007" cx="425.12907000000007" cy="209.2652575" r="3" fill="hsl(227, 100%, 50%, 0.8)" />
30
- </g>
31
- <g>
32
- <circle data-type="point" data-label="JP5.1
33
- x-" data-x="3.8000000000000003" data-y="0" cx="480" cy="339.23793250000006" r="3" fill="hsl(242, 100%, 50%, 0.8)" />
34
- </g>
35
- <g>
36
- <circle data-type="point" data-label="JP9.1
37
- x-" data-x="3.8000000000000003" data-y="-0.9" cx="480" cy="429.23793250000006" r="3" fill="hsl(126, 100%, 50%, 0.8)" />
38
- </g>
39
- <g>
40
- <circle data-type="point" data-label="JP8.1
41
- x+" data-x="2.4458007999999998" data-y="-1.2015872704999997" cx="344.58008" cy="459.39665955000004" r="3" fill="hsl(245, 100%, 50%, 0.8)" />
42
- </g>
43
- <g>
44
- <circle data-type="point" data-label="JP8.2
45
- y+" data-x="2.0034928" data-y="-0.8350319000000007" cx="300.34928" cy="422.74112250000013" r="3" fill="hsl(246, 100%, 50%, 0.8)" />
46
- </g>
47
- <g>
48
- <circle data-type="point" data-label="JP8.3
49
- x-" data-x="1.5541992" data-y="-1.2014628704999997" cx="255.41992000000002" cy="459.38421955" r="3" fill="hsl(247, 100%, 50%, 0.8)" />
50
- </g>
51
- <g>
52
- <circle data-type="point" data-label="" data-x="1.4002733499999995" data-y="-0.30120930000000024" cx="240.027335" cy="369.3588625000001" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
5
+ x+" data-x="1.2000000000000002" data-y="-0.30000000000000004" cx="308.80000000000007" cy="454.68" r="3" fill="hsl(319, 100%, 50%, 0.8)" />
53
6
  </g>
54
7
  <g>
55
- <circle data-type="point" data-label="" data-x="0.7999316625000001" data-y="0.2" cx="179.99316625000006" cy="319.23793250000006" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
8
+ <circle data-type="point" data-label="U1.2
9
+ x-" data-x="-1.2000000000000002" data-y="-0.30000000000000004" cx="40" cy="454.68" r="3" fill="hsl(320, 100%, 50%, 0.8)" />
56
10
  </g>
57
11
  <g>
58
- <circle data-type="point" data-label="" data-x="3.451290700000001" data-y="1.2997267500000007" cx="445.12907000000007" cy="209.2652575" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
12
+ <circle data-type="point" data-label="U1.3
13
+ x+" data-x="1.2000000000000002" data-y="0.09999999999999998" cx="308.80000000000007" cy="409.88" r="3" fill="hsl(321, 100%, 50%, 0.8)" />
59
14
  </g>
60
15
  <g>
61
- <circle data-type="point" data-label="" data-x="2.0034928" data-y="-0.46751595000000035" cx="300.34928" cy="385.9895275000001" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
16
+ <circle data-type="point" data-label="U1.4
17
+ x-" data-x="-1.2000000000000002" data-y="0.30000000000000004" cx="40" cy="387.47999999999996" r="3" fill="hsl(322, 100%, 50%, 0.8)" />
62
18
  </g>
63
19
  <g>
64
- <polyline data-points="1.4002733499999995,-0.0012093000000001908 0.6000000000000001,0" data-type="line" data-label="" points="240.027335,339.3588625000001 160.00000000000003,339.23793250000006" fill="none" stroke="hsl(256, 100%, 50%, 0.8)" stroke-width="1" />
20
+ <circle data-type="point" data-label="U1.5
21
+ x-" data-x="-1.2000000000000002" data-y="0.10000000000000003" cx="40" cy="409.88" r="3" fill="hsl(323, 100%, 50%, 0.8)" />
65
22
  </g>
66
23
  <g>
67
- <polyline data-points="1.3997266500000003,1.1012093000000003 2.1487092999999997,1.3002732499999994" data-type="line" data-label="" points="239.97266500000006,229.1170025 314.87093,209.21060750000012" fill="none" stroke="hsl(256, 100%, 50%, 0.8)" stroke-width="1" />
68
- </g>
69
- <g>
70
- <polyline data-points="2.1487092999999997,1.3002732499999994 0.6000000000000001,0.2" data-type="line" data-label="" points="314.87093,209.21060750000012 160.00000000000003,319.23793250000006" fill="none" stroke="hsl(280, 100%, 50%, 0.8)" stroke-width="1" />
71
- </g>
72
- <g>
73
- <polyline data-points="3.8000000000000003,0 3.2512907000000006,1.2997267500000007" data-type="line" data-label="" points="480,339.23793250000006 425.12907000000007,209.2652575" fill="none" stroke="hsl(336, 100%, 50%, 0.8)" stroke-width="1" />
74
- </g>
75
- <g>
76
- <polyline data-points="3.8000000000000003,-0.9 3.2512907000000006,1.2997267500000007" data-type="line" data-label="" points="480,429.23793250000006 425.12907000000007,209.2652575" fill="none" stroke="hsl(336, 100%, 50%, 0.8)" stroke-width="1" />
24
+ <circle data-type="point" data-label="U1.6
25
+ x-" data-x="-1.2000000000000002" data-y="-0.09999999999999998" cx="40" cy="432.28" r="3" fill="hsl(324, 100%, 50%, 0.8)" />
77
26
  </g>
78
27
  <g>
79
- <polyline data-points="2.0034928,-0.8350319000000007 0.6000000000000001,-0.2" data-type="line" data-label="" points="300.34928,422.74112250000013 160.00000000000003,359.23793250000006" fill="none" stroke="hsl(352, 100%, 50%, 0.8)" stroke-width="1" />
28
+ <circle data-type="point" data-label="U1.7
29
+ x+" data-x="1.2000000000000002" data-y="-0.10000000000000003" cx="308.80000000000007" cy="432.28" r="3" fill="hsl(325, 100%, 50%, 0.8)" />
80
30
  </g>
81
31
  <g>
82
- <polyline data-points="3.2512907000000006,1.2997267500000007 3.8000000000000003,0" data-type="line" data-label="" points="425.12907000000007,209.2652575 480,339.23793250000006" fill="none" stroke="hsl(123, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
32
+ <circle data-type="point" data-label="U1.8
33
+ x+" data-x="1.2000000000000002" data-y="0.30000000000000004" cx="308.80000000000007" cy="387.47999999999996" r="3" fill="hsl(326, 100%, 50%, 0.8)" />
83
34
  </g>
84
35
  <g>
85
- <polyline data-points="3.2512907000000006,1.2997267500000007 3.8000000000000003,-0.9" data-type="line" data-label="" points="425.12907000000007,209.2652575 480,429.23793250000006" fill="none" stroke="hsl(123, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
36
+ <circle data-type="point" data-label="J1.1
37
+ x-" data-x="1.6" data-y="2.105" cx="353.6" cy="185.32" r="3" fill="hsl(218, 100%, 50%, 0.8)" />
86
38
  </g>
87
39
  <g>
88
- <polyline data-points="3.8000000000000003,0 3.8000000000000003,-0.9" data-type="line" data-label="" points="480,339.23793250000006 480,429.23793250000006" fill="none" stroke="hsl(123, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
40
+ <circle data-type="point" data-label="J1.2
41
+ x-" data-x="1.6" data-y="1.9049999999999998" cx="353.6" cy="207.72" r="3" fill="hsl(219, 100%, 50%, 0.8)" />
89
42
  </g>
90
43
  <g>
91
- <polyline data-points="1.4002733499999995,-0.0012093000000001908 1.4002733499999995,-0.30120930000000024 1.0001366749999998,-0.30120930000000024 1.0001366749999998,0 0.6000000000000001,0" data-type="line" data-label="" points="240.027335,339.3588625000001 240.027335,369.3588625000001 200.0136675,369.3588625000001 200.0136675,339.23793250000006 160.00000000000003,339.23793250000006" fill="none" stroke="purple" stroke-width="1" />
44
+ <circle data-type="point" data-label="J1.3
45
+ x-" data-x="1.6" data-y="1.7049999999999998" cx="353.6" cy="230.12" r="3" fill="hsl(220, 100%, 50%, 0.8)" />
92
46
  </g>
93
47
  <g>
94
- <polyline data-points="2.1487092999999997,1.3002732499999994 1.3997266500000003,1.3002732499999994 1.3997266500000003,1.1012093000000003" data-type="line" data-label="" points="314.87093,209.21060750000012 239.97266500000006,209.21060750000012 239.97266500000006,229.1170025" fill="none" stroke="purple" stroke-width="1" />
48
+ <circle data-type="point" data-label="" data-x="1.2000000000000002" data-y="-0.30000000000000004" cx="308.80000000000007" cy="454.68" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
95
49
  </g>
96
50
  <g>
97
- <polyline data-points="0.6000000000000001,0.2 0.9998633250000002,0.2 0.9998633250000002,1.3012093000000002 1.3997266500000003,1.3012093000000002 1.3997266500000003,1.1012093000000003" data-type="line" data-label="" points="160.00000000000003,319.23793250000006 199.98633250000006,319.23793250000006 199.98633250000006,209.11700250000004 239.97266500000006,209.11700250000004 239.97266500000006,229.1170025" fill="none" stroke="purple" stroke-width="1" />
51
+ <circle data-type="point" data-label="" data-x="1.6" data-y="1.7049999999999998" cx="353.6" cy="230.12" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
98
52
  </g>
99
53
  <g>
100
- <polyline data-points="3.8000000000000003,-0.9 3.6000000000000005,-0.9 3.6000000000000005,0 3.8000000000000003,0" data-type="line" data-label="" points="480,429.23793250000006 460.0000000000001,429.23793250000006 460.0000000000001,339.23793250000006 480,339.23793250000006" fill="none" stroke="purple" stroke-width="1" />
54
+ <circle data-type="point" data-label="" data-x="1.3" data-y="1.0025" cx="320" cy="308.79999999999995" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
101
55
  </g>
102
56
  <g>
103
- <polyline data-points="3.2512907000000006,1.2997267500000007 3.451290700000001,1.2997267500000007 3.5256453500000005,1.2997267500000007 3.5256453500000005,0 3.6,0 3.8000000000000003,0" data-type="line" data-label="" points="425.12907000000007,209.2652575 445.12907000000007,209.2652575 452.5645350000001,209.2652575 452.5645350000001,339.23793250000006 460,339.23793250000006 480,339.23793250000006" fill="none" stroke="purple" stroke-width="1" />
57
+ <circle data-type="point" data-label="" data-x="1.4000000000000001" data-y="0.30000000000000004" cx="331.20000000000005" cy="387.47999999999996" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
104
58
  </g>
105
59
  <g>
106
- <polyline data-points="2.0034928,-0.8350319000000007 2.0034928,-0.1 0.7000000000000001,-0.1 0.7000000000000001,-0.2 0.6000000000000001,-0.2" data-type="line" data-label="" points="300.34928,422.74112250000013 300.34928,349.23793250000006 170.00000000000003,349.23793250000006 170.00000000000003,359.23793250000006 160.00000000000003,359.23793250000006" fill="none" stroke="purple" stroke-width="1" />
60
+ <polyline data-points="1.2000000000000002,-0.30000000000000004 1.6,1.7049999999999998" data-type="line" data-label="" points="308.80000000000007,454.68 353.6,230.12" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
107
61
  </g>
108
62
  <g>
109
- <rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="40.00000000000002" y="299.23793250000006" width="120" height="80" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01" />
63
+ <polyline data-points="1.2000000000000002,0.09999999999999998 1.6,1.9049999999999998" data-type="line" data-label="" points="308.80000000000007,409.88 353.6,207.72" fill="none" stroke="hsl(158, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
110
64
  </g>
111
65
  <g>
112
- <rect data-type="rect" data-label="schematic_component_1" data-x="1.4" data-y="0.55" x="213.54167" y="229.1170025" width="52.916660000000036" height="110.24186000000009" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01" />
66
+ <polyline data-points="1.2000000000000002,0.30000000000000004 1.6,2.105" data-type="line" data-label="" points="308.80000000000007,387.47999999999996 353.6,185.32" fill="none" stroke="hsl(190, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
113
67
  </g>
114
68
  <g>
115
- <rect data-type="rect" data-label="schematic_component_2" data-x="2.7" data-y="1.3" x="314.87093" y="189.7923975000001" width="110.25814000000008" height="38.8910699999999" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01" />
69
+ <polyline data-points="1.2000000000000002,0.09999999999999998 1.4000000000000001,0.09999999999999998 1.3,1.0025 1.3,1.9049999999999998 1.6,1.9049999999999998" data-type="line" data-label="" points="308.80000000000007,409.88 331.20000000000005,409.88 320,308.79999999999995 320,207.72 353.6,207.72" fill="none" stroke="purple" stroke-width="1" />
116
70
  </g>
117
71
  <g>
118
- <rect data-type="rect" data-label="schematic_component_3" data-x="4.4" data-y="0" x="480" y="319.23793250000006" width="120" height="40" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01" />
72
+ <polyline data-points="1.2000000000000002,0.30000000000000004 1.4000000000000001,0.30000000000000004 1.5000000000000002,1.2025000000000001 1.5000000000000002,2.105 1.6,2.105" data-type="line" data-label="" points="308.80000000000007,387.47999999999996 331.20000000000005,387.47999999999996 342.4000000000001,286.4 342.4000000000001,185.32 353.6,185.32" fill="none" stroke="purple" stroke-width="1" />
119
73
  </g>
120
74
  <g>
121
- <rect data-type="rect" data-label="schematic_component_4" data-x="4.4" data-y="-0.9" x="480" y="409.23793250000006" width="120" height="40" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01" />
75
+ <rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="40" y="365.08" width="268.80000000000007" height="112" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008928571428571428" />
122
76
  </g>
123
77
  <g>
124
- <rect data-type="rect" data-label="schematic_component_5" data-x="2" data-y="-1.1" x="255.41992000000002" y="422.74112250000013" width="89.16015999999999" height="52.99361999999991" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.01" />
78
+ <rect data-type="rect" data-label="schematic_component_1" data-x="2.7" data-y="1.9049999999999998" x="353.6" y="162.92000000000002" width="246.39999999999998" height="89.59999999999997" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008928571428571428" />
125
79
  </g>
126
80
  <g>
127
- <rect data-type="rect" data-label="" data-x="1.6252733499999996" data-y="-0.30120930000000024" x="240.027335" y="359.3588625000001" width="45" height="20" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.01" />
81
+ <rect data-type="rect" data-label="" data-x="1.4260000000000002" data-y="-0.30000000000000004" x="308.91200000000003" y="443.48" width="50.400000000000034" height="22.399999999999977" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008928571428571428" />
128
82
  </g>
129
83
  <g>
130
- <rect data-type="rect" data-label="" data-x="0.7999316625000001" data-y="0.42500000000000004" x="169.99316625000006" y="274.23793250000006" width="20" height="45" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.01" />
84
+ <rect data-type="rect" data-label="" data-x="1.374" data-y="1.7049999999999998" x="303.088" y="218.92" width="50.400000000000034" height="22.400000000000034" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008928571428571428" />
131
85
  </g>
132
86
  <g>
133
- <rect data-type="rect" data-label="" data-x="3.451290700000001" data-y="1.5247267500000008" x="435.12907000000007" y="164.26525749999996" width="20" height="45.00000000000003" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.01" />
87
+ <rect data-type="rect" data-label="" data-x="1.075" data-y="1.0025" x="269.6" y="297.59999999999997" width="50.39999999999998" height="22.400000000000034" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008928571428571428" />
134
88
  </g>
135
89
  <g>
136
- <rect data-type="rect" data-label="" data-x="2.2284928" data-y="-0.46751595000000035" x="300.34928" y="375.9895275000001" width="45" height="19.999999999999943" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.01" />
90
+ <rect data-type="rect" data-label="" data-x="1.4000000000000001" data-y="0.525" x="320" y="337.08" width="22.40000000000009" height="50.39999999999998" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008928571428571428" />
137
91
  </g>
138
92
  <g id="crosshair" style="display: none">
139
93
  <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
@@ -163,12 +117,12 @@ x-" data-x="1.5541992" data-y="-1.2014628704999997" cx="255.41992000000002" cy="
163
117
 
164
118
  // Calculate real coordinates using inverse transformation
165
119
  const matrix = {
166
- "a": 100,
120
+ "a": 112,
167
121
  "c": 0,
168
- "e": 100.00000000000003,
122
+ "e": 174.40000000000003,
169
123
  "b": 0,
170
- "d": -100,
171
- "f": 339.23793250000006
124
+ "d": -112,
125
+ "f": 421.08
172
126
  };
173
127
  // Manually invert and apply the affine transform
174
128
  // Since we only use translate and scale, we can directly compute:
@@ -0,0 +1,187 @@
1
+ <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="100%" height="100%" fill="white" />
3
+ <g>
4
+ <circle data-type="point" data-label="U1.1
5
+ x-" data-x="-1.15" data-y="0.30000000000000004" cx="167.5392670157068" cy="351.8848167539267" r="3" fill="hsl(319, 100%, 50%, 0.8)" />
6
+ </g>
7
+ <g>
8
+ <circle data-type="point" data-label="U1.2
9
+ x-" data-x="-1.15" data-y="0.10000000000000003" cx="167.5392670157068" cy="366.5445026178011" r="3" fill="hsl(320, 100%, 50%, 0.8)" />
10
+ </g>
11
+ <g>
12
+ <circle data-type="point" data-label="U1.3
13
+ x-" data-x="-1.15" data-y="-0.09999999999999998" cx="167.5392670157068" cy="381.2041884816754" r="3" fill="hsl(321, 100%, 50%, 0.8)" />
14
+ </g>
15
+ <g>
16
+ <circle data-type="point" data-label="U1.4
17
+ x-" data-x="-1.15" data-y="-0.30000000000000004" cx="167.5392670157068" cy="395.86387434554973" r="3" fill="hsl(322, 100%, 50%, 0.8)" />
18
+ </g>
19
+ <g>
20
+ <circle data-type="point" data-label="U1.5
21
+ x+" data-x="1.15" data-y="-0.30000000000000004" cx="336.1256544502618" cy="395.86387434554973" r="3" fill="hsl(323, 100%, 50%, 0.8)" />
22
+ </g>
23
+ <g>
24
+ <circle data-type="point" data-label="U1.6
25
+ x+" data-x="1.15" data-y="-0.10000000000000003" cx="336.1256544502618" cy="381.2041884816754" r="3" fill="hsl(324, 100%, 50%, 0.8)" />
26
+ </g>
27
+ <g>
28
+ <circle data-type="point" data-label="U1.7
29
+ x+" data-x="1.15" data-y="0.09999999999999998" cx="336.1256544502618" cy="366.5445026178011" r="3" fill="hsl(325, 100%, 50%, 0.8)" />
30
+ </g>
31
+ <g>
32
+ <circle data-type="point" data-label="U1.8
33
+ x+" data-x="1.15" data-y="0.30000000000000004" cx="336.1256544502618" cy="351.8848167539267" r="3" fill="hsl(326, 100%, 50%, 0.8)" />
34
+ </g>
35
+ <g>
36
+ <circle data-type="point" data-label="D1.1
37
+ y-" data-x="-1.1500000000000004" data-y="1.15" cx="167.5392670157068" cy="289.58115183246076" r="3" fill="hsl(32, 100%, 50%, 0.8)" />
38
+ </g>
39
+ <g>
40
+ <circle data-type="point" data-label="D1.2
41
+ y+" data-x="-1.1500000000000004" data-y="2.1900000000000004" cx="167.5392670157068" cy="213.35078534031413" r="3" fill="hsl(33, 100%, 50%, 0.8)" />
42
+ </g>
43
+ <g>
44
+ <circle data-type="point" data-label="D2.1
45
+ x+" data-x="-1.85" data-y="0.10000000000000002" cx="116.2303664921466" cy="366.5445026178011" r="3" fill="hsl(273, 100%, 50%, 0.8)" />
46
+ </g>
47
+ <g>
48
+ <circle data-type="point" data-label="D2.2
49
+ x-" data-x="-2.89" data-y="0.10000000000000016" cx="40" cy="366.544502617801" r="3" fill="hsl(274, 100%, 50%, 0.8)" />
50
+ </g>
51
+ <g>
52
+ <circle data-type="point" data-label="C1.1
53
+ x-" data-x="1.8499999999999996" data-y="-0.3000000000000007" cx="387.43455497382195" cy="395.8638743455498" r="3" fill="hsl(121, 100%, 50%, 0.8)" />
54
+ </g>
55
+ <g>
56
+ <circle data-type="point" data-label="C1.2
57
+ x+" data-x="2.95" data-y="-0.3000000000000007" cx="468.0628272251309" cy="395.8638743455498" r="3" fill="hsl(122, 100%, 50%, 0.8)" />
58
+ </g>
59
+ <g>
60
+ <circle data-type="point" data-label="C2.1
61
+ x-" data-x="3.6500000000000004" data-y="-0.3000000000000007" cx="519.3717277486911" cy="395.8638743455498" r="3" fill="hsl(2, 100%, 50%, 0.8)" />
62
+ </g>
63
+ <g>
64
+ <circle data-type="point" data-label="C2.2
65
+ x+" data-x="4.75" data-y="-0.3000000000000007" cx="600" cy="395.8638743455498" r="3" fill="hsl(3, 100%, 50%, 0.8)" />
66
+ </g>
67
+ <g>
68
+ <circle data-type="point" data-label="" data-x="-1.3499999999999999" data-y="0.30000000000000004" cx="152.87958115183247" cy="351.8848167539267" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
69
+ </g>
70
+ <g>
71
+ <circle data-type="point" data-label="" data-x="-1.5" data-y="0.10000000000000003" cx="141.8848167539267" cy="366.5445026178011" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
72
+ </g>
73
+ <g>
74
+ <circle data-type="point" data-label="" data-x="1.4999999999999998" data-y="-0.3000000000000004" cx="361.78010471204186" cy="395.8638743455498" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
75
+ </g>
76
+ <g>
77
+ <circle data-type="point" data-label="" data-x="3.3000000000000003" data-y="-0.3000000000000007" cx="493.717277486911" cy="395.8638743455498" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
78
+ </g>
79
+ <g>
80
+ <polyline data-points="1.15,-0.30000000000000004 1.8499999999999996,-0.3000000000000007" data-type="line" data-label="" points="336.1256544502618,395.86387434554973 387.43455497382195,395.8638743455498" fill="none" stroke="hsl(160, 100%, 50%, 0.8)" stroke-width="1" />
81
+ </g>
82
+ <g>
83
+ <polyline data-points="2.95,-0.3000000000000007 3.6500000000000004,-0.3000000000000007" data-type="line" data-label="" points="468.0628272251309,395.8638743455498 519.3717277486911,395.8638743455498" fill="none" stroke="hsl(48, 100%, 50%, 0.8)" stroke-width="1" />
84
+ </g>
85
+ <g>
86
+ <polyline data-points="-1.15,0.30000000000000004 -1.1500000000000004,1.15" data-type="line" data-label="" points="167.5392670157068,351.8848167539267 167.5392670157068,289.58115183246076" fill="none" stroke="hsl(280, 100%, 50%, 0.8)" stroke-width="1" />
87
+ </g>
88
+ <g>
89
+ <polyline data-points="-1.15,0.10000000000000003 -1.85,0.10000000000000002" data-type="line" data-label="" points="167.5392670157068,366.5445026178011 116.2303664921466,366.5445026178011" fill="none" stroke="hsl(48, 100%, 50%, 0.8)" stroke-width="1" />
90
+ </g>
91
+ <g>
92
+ <polyline data-points="1.15,-0.30000000000000004 1.8499999999999996,-0.3000000000000007" data-type="line" data-label="" points="336.1256544502618,395.86387434554973 387.43455497382195,395.8638743455498" fill="none" stroke="purple" stroke-width="1" />
93
+ </g>
94
+ <g>
95
+ <polyline data-points="2.95,-0.3000000000000007 3.6500000000000004,-0.3000000000000007" data-type="line" data-label="" points="468.0628272251309,395.8638743455498 519.3717277486911,395.8638743455498" fill="none" stroke="purple" stroke-width="1" />
96
+ </g>
97
+ <g>
98
+ <polyline data-points="-1.15,0.30000000000000004 -1.3499999999999999,0.30000000000000004 -1.3499999999999999,0.7250000000000001 -1.1500000000000004,0.7250000000000001 -1.1500000000000004,1.15" data-type="line" data-label="" points="167.5392670157068,351.8848167539267 152.87958115183247,351.8848167539267 152.87958115183247,320.73298429319374 167.5392670157068,320.73298429319374 167.5392670157068,289.58115183246076" fill="none" stroke="purple" stroke-width="1" />
99
+ </g>
100
+ <g>
101
+ <polyline data-points="-1.15,0.10000000000000003 -1.85,0.10000000000000002" data-type="line" data-label="" points="167.5392670157068,366.5445026178011 116.2303664921466,366.5445026178011" fill="none" stroke="purple" stroke-width="1" />
102
+ </g>
103
+ <g>
104
+ <rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="167.5392670157068" y="337.22513089005236" width="168.58638743455498" height="73.29842931937173" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013642857142857144" />
105
+ </g>
106
+ <g>
107
+ <rect data-type="rect" data-label="schematic_component_1" data-x="-1.1500000000000004" data-y="1.6700000000000002" x="129.42408376963348" y="213.35078534031413" width="76.2303664921466" height="76.23036649214663" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013642857142857144" />
108
+ </g>
109
+ <g>
110
+ <rect data-type="rect" data-label="schematic_component_2" data-x="-2.37" data-y="0.10000000000000009" x="40" y="346.75392670157066" width="76.2303664921466" height="39.58115183246076" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013642857142857144" />
111
+ </g>
112
+ <g>
113
+ <rect data-type="rect" data-label="schematic_component_3" data-x="2.4" data-y="-0.3000000000000007" x="387.43455497382195" y="365.07853403141365" width="80.62827225130894" height="61.57068062827227" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013642857142857144" />
114
+ </g>
115
+ <g>
116
+ <rect data-type="rect" data-label="schematic_component_4" data-x="4.2" data-y="-0.3000000000000007" x="519.3717277486911" y="365.07853403141365" width="80.62827225130889" height="61.57068062827227" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013642857142857144" />
117
+ </g>
118
+ <g>
119
+ <rect data-type="rect" data-label="" data-x="-1.575" data-y="0.30000000000000004" x="119.89528795811518" y="344.5549738219895" width="32.98429319371729" height="14.659685863874358" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.013642857142857144" />
120
+ </g>
121
+ <g>
122
+ <rect data-type="rect" data-label="" data-x="-1.5" data-y="0.32500000000000007" x="134.55497382198953" y="333.5602094240838" width="14.65968586387433" height="32.98429319371729" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.013642857142857144" />
123
+ </g>
124
+ <g>
125
+ <rect data-type="rect" data-label="" data-x="1.4999999999999998" data-y="-0.07500000000000037" x="354.45026178010465" y="362.8795811518325" width="14.659685863874358" height="32.98429319371729" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.013642857142857144" />
126
+ </g>
127
+ <g>
128
+ <rect data-type="rect" data-label="" data-x="3.3000000000000003" data-y="-0.0750000000000007" x="486.38743455497377" y="362.8795811518325" width="14.659685863874415" height="32.98429319371729" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.013642857142857144" />
129
+ </g>
130
+ <g id="crosshair" style="display: none">
131
+ <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
132
+ <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>
133
+ </g>
134
+ <script>
135
+ <![CDATA[
136
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
137
+ const svg = e.currentTarget;
138
+ const rect = svg.getBoundingClientRect();
139
+ const x = e.clientX - rect.left;
140
+ const y = e.clientY - rect.top;
141
+ const crosshair = svg.getElementById('crosshair');
142
+ const h = svg.getElementById('crosshair-h');
143
+ const v = svg.getElementById('crosshair-v');
144
+ const coords = svg.getElementById('coordinates');
145
+
146
+ crosshair.style.display = 'block';
147
+ h.setAttribute('x1', '0');
148
+ h.setAttribute('x2', '640');
149
+ h.setAttribute('y1', y);
150
+ h.setAttribute('y2', y);
151
+ v.setAttribute('x1', x);
152
+ v.setAttribute('x2', x);
153
+ v.setAttribute('y1', '0');
154
+ v.setAttribute('y2', '640');
155
+
156
+ // Calculate real coordinates using inverse transformation
157
+ const matrix = {
158
+ "a": 73.29842931937172,
159
+ "c": 0,
160
+ "e": 251.8324607329843,
161
+ "b": 0,
162
+ "d": -73.29842931937172,
163
+ "f": 373.8743455497382
164
+ };
165
+ // Manually invert and apply the affine transform
166
+ // Since we only use translate and scale, we can directly compute:
167
+ // x' = (x - tx) / sx
168
+ // y' = (y - ty) / sy
169
+ const sx = matrix.a;
170
+ const sy = matrix.d;
171
+ const tx = matrix.e;
172
+ const ty = matrix.f;
173
+ const realPoint = {
174
+ x: (x - tx) / sx,
175
+ y: (y - ty) / sy // Flip y back since we used negative scale
176
+ }
177
+
178
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
179
+ coords.setAttribute('x', (x + 5).toString());
180
+ coords.setAttribute('y', (y - 5).toString());
181
+ });
182
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
183
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
184
+ });
185
+ ]]>
186
+ </script>
187
+ </svg>