@tscircuit/schematic-trace-solver 0.0.26 → 0.0.27

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 (28) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +8 -0
  3. package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver.ts +11 -0
  4. package/package.json +1 -1
  5. package/site/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver01.page.tsx +574 -0
  6. package/site/examples/example11.page.tsx +1 -1
  7. package/site/examples/example12.page.tsx +1 -1
  8. package/site/examples/example13.page.tsx +219 -0
  9. package/site/examples/example14.page.tsx +210 -0
  10. package/tests/examples/__snapshots__/example01.snap.svg +4 -4
  11. package/tests/examples/__snapshots__/example02.snap.svg +4 -4
  12. package/tests/examples/__snapshots__/example03.snap.svg +68 -68
  13. package/tests/examples/__snapshots__/example04.snap.svg +12 -12
  14. package/tests/examples/__snapshots__/example05.snap.svg +1 -1
  15. package/tests/examples/__snapshots__/example06.snap.svg +11 -11
  16. package/tests/examples/__snapshots__/example07.snap.svg +48 -48
  17. package/tests/examples/__snapshots__/example08.snap.svg +25 -25
  18. package/tests/examples/__snapshots__/example09.snap.svg +131 -131
  19. package/tests/examples/__snapshots__/example10.snap.svg +26 -26
  20. package/tests/examples/__snapshots__/example11.snap.svg +162 -0
  21. package/tests/examples/__snapshots__/example12.snap.svg +145 -0
  22. package/tests/examples/__snapshots__/example13.snap.svg +316 -0
  23. package/tests/examples/__snapshots__/example14.snap.svg +213 -0
  24. package/tests/examples/example11.test.tsx +12 -0
  25. package/tests/examples/example12.test.tsx +12 -0
  26. package/tests/examples/example13.test.tsx +12 -0
  27. package/tests/examples/example14.test.tsx +12 -0
  28. package/tests/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver01.test.ts +13 -0
@@ -2,78 +2,78 @@
2
2
  <rect width="100%" height="100%" fill="white" />
3
3
  <g>
4
4
  <circle data-type="point" data-label="Q1_NPN.1
5
- y-" data-x="-2.2855604555" data-y="-0.5519250999999993" cx="50.05763517236585" cy="366.03992068458075" r="3" fill="hsl(256, 100%, 50%, 0.8)" />
5
+ y-" data-x="-2.2855604555" data-y="-0.5519250999999993" cx="49.983280260645415" cy="365.6995529759246" r="3" fill="hsl(256, 100%, 50%, 0.8)" />
6
6
  </g>
7
7
  <g>
8
8
  <circle data-type="point" data-label="Q1_NPN.2
9
- y+" data-x="-2.2855604555000015" data-y="0.5519250999999993" cx="50.057635172365764" cy="273.96007931541925" r="3" fill="hsl(257, 100%, 50%, 0.8)" />
9
+ y+" data-x="-2.2855604555000015" data-y="0.5519250999999993" cx="49.9832802606453" cy="274.3004470240754" r="3" fill="hsl(257, 100%, 50%, 0.8)" />
10
10
  </g>
11
11
  <g>
12
12
  <circle data-type="point" data-label="Q1_NPN.3
13
- x+" data-x="-1.5938689350000006" data-y="0.004526300000001031" cx="107.75644746051344" cy="319.62242975904763" r="3" fill="hsl(258, 100%, 50%, 0.8)" />
13
+ x+" data-x="-1.5938689350000006" data-y="0.004526300000001031" cx="107.2555320282994" cy="319.6252210913492" r="3" fill="hsl(258, 100%, 50%, 0.8)" />
14
14
  </g>
15
15
  <g>
16
16
  <circle data-type="point" data-label="Q2_PNP.1
17
- y-" data-x="3.2144395445" data-y="-0.5519250999999993" cx="508.85098188769814" cy="366.03992068458075" r="3" fill="hsl(79, 100%, 50%, 0.8)" />
17
+ y-" data-x="3.2144395445" data-y="-0.5519250999999993" cx="505.38482182413946" cy="365.6995529759246" r="3" fill="hsl(79, 100%, 50%, 0.8)" />
18
18
  </g>
19
19
  <g>
20
20
  <circle data-type="point" data-label="Q2_PNP.2
21
- y+" data-x="3.2144395444999985" data-y="0.5519250999999993" cx="508.850981887698" cy="273.96007931541925" r="3" fill="hsl(80, 100%, 50%, 0.8)" />
21
+ y+" data-x="3.2144395444999985" data-y="0.5519250999999993" cx="505.38482182413935" cy="274.3004470240754" r="3" fill="hsl(80, 100%, 50%, 0.8)" />
22
22
  </g>
23
23
  <g>
24
24
  <circle data-type="point" data-label="Q2_PNP.3
25
- x+" data-x="3.9061310649999994" data-y="0.004526300000001031" cx="566.5497941758457" cy="319.62242975904763" r="3" fill="hsl(81, 100%, 50%, 0.8)" />
25
+ x+" data-x="3.9061310649999994" data-y="0.004526300000001031" cx="562.6570735917935" cy="319.6252210913492" r="3" fill="hsl(81, 100%, 50%, 0.8)" />
26
26
  </g>
27
27
  <g>
28
- <circle data-type="point" data-label="" data-x="-2.2855604555" data-y="-0.5519250999999993" cx="50.05763517236585" cy="366.03992068458075" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
28
+ <circle data-type="point" data-label="" data-x="-2.2855604555" data-y="-0.5519250999999993" cx="49.983280260645415" cy="365.6995529759246" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
29
29
  </g>
30
30
  <g>
31
- <circle data-type="point" data-label="" data-x="3.2144395445" data-y="-0.5519250999999993" cx="508.85098188769814" cy="366.03992068458075" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
31
+ <circle data-type="point" data-label="" data-x="3.2144395445" data-y="-0.5519250999999993" cx="505.38482182413946" cy="365.6995529759246" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
32
32
  </g>
33
33
  <g>
34
- <circle data-type="point" data-label="" data-x="-2.2855604555000015" data-y="0.5519250999999993" cx="50.057635172365764" cy="273.96007931541925" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
34
+ <circle data-type="point" data-label="" data-x="-2.2855604555000015" data-y="0.5519250999999993" cx="49.9832802606453" cy="274.3004470240754" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
35
35
  </g>
36
36
  <g>
37
- <circle data-type="point" data-label="" data-x="3.2144395444999985" data-y="0.5519250999999993" cx="508.850981887698" cy="273.96007931541925" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
37
+ <circle data-type="point" data-label="" data-x="3.2144395444999985" data-y="0.5519250999999993" cx="505.38482182413935" cy="274.3004470240754" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
38
38
  </g>
39
39
  <g>
40
- <circle data-type="point" data-label="" data-x="-1.5938689350000006" data-y="0.004526300000001031" cx="107.75644746051344" cy="319.62242975904763" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
40
+ <circle data-type="point" data-label="" data-x="-1.5938689350000006" data-y="0.004526300000001031" cx="107.2555320282994" cy="319.6252210913492" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
41
41
  </g>
42
42
  <g>
43
- <circle data-type="point" data-label="" data-x="3.9061310649999994" data-y="0.004526300000001031" cx="566.5497941758457" cy="319.62242975904763" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
43
+ <circle data-type="point" data-label="" data-x="3.9061310649999994" data-y="0.004526300000001031" cx="562.6570735917935" cy="319.6252210913492" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
44
44
  </g>
45
45
  <g>
46
- <polyline data-points="-2.2855604555,-0.5519250999999993 3.2144395445,-0.5519250999999993" data-type="line" data-label="" points="50.05763517236585,366.03992068458075 508.85098188769814,366.03992068458075" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
46
+ <polyline data-points="-2.2855604555,-0.5519250999999993 3.2144395445,-0.5519250999999993" data-type="line" data-label="" points="49.983280260645415,365.6995529759246 505.38482182413946,365.6995529759246" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
47
47
  </g>
48
48
  <g>
49
- <polyline data-points="-2.2855604555000015,0.5519250999999993 3.2144395444999985,0.5519250999999993" data-type="line" data-label="" points="50.057635172365764,273.96007931541925 508.850981887698,273.96007931541925" fill="none" stroke="hsl(102, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
49
+ <polyline data-points="-2.2855604555000015,0.5519250999999993 3.2144395444999985,0.5519250999999993" data-type="line" data-label="" points="49.9832802606453,274.3004470240754 505.38482182413935,274.3004470240754" fill="none" stroke="hsl(102, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
50
50
  </g>
51
51
  <g>
52
- <polyline data-points="-1.5938689350000006,0.004526300000001031 3.9061310649999994,0.004526300000001031" data-type="line" data-label="" points="107.75644746051344,319.62242975904763 566.5497941758457,319.62242975904763" fill="none" stroke="hsl(321, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
52
+ <polyline data-points="-1.5938689350000006,0.004526300000001031 3.9061310649999994,0.004526300000001031" data-type="line" data-label="" points="107.2555320282994,319.6252210913492 562.6570735917935,319.6252210913492" fill="none" stroke="hsl(321, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
53
53
  </g>
54
54
  <g>
55
- <rect data-type="rect" data-label="schematic_component_0" data-x="-2" data-y="0" x="40.00000000000003" y="273.96007931541925" width="67.75644746051341" height="92.0798413691615" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.011987968089285714" />
55
+ <rect data-type="rect" data-label="schematic_component_0" data-x="-2" data-y="0" x="40" y="274.3004470240754" width="67.2555320282994" height="91.39910595184915" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.012077253803571426" />
56
56
  </g>
57
57
  <g>
58
- <rect data-type="rect" data-label="schematic_component_1" data-x="3.5" data-y="0" x="498.7933467153323" y="273.96007931541925" width="67.75644746051341" height="92.0798413691615" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.011987968089285714" />
58
+ <rect data-type="rect" data-label="schematic_component_1" data-x="3.5" data-y="0" x="495.4015415634941" y="274.3004470240754" width="67.2555320282994" height="91.39910595184915" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.012077253803571426" />
59
59
  </g>
60
60
  <g>
61
- <rect data-type="rect" data-label="" data-x="-2.2855604555" data-y="-0.7529250999999993" x="41.71593795935982" y="366.1233376567108" width="16.683394426012086" height="33.36678885202417" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011987968089285714" />
61
+ <rect data-type="rect" data-label="" data-x="-2.2855604555" data-y="-0.7779250999999993" x="41.70325223221823" y="365.78235325620886" width="16.560056056854336" height="37.26012612792226" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.012077253803571426" />
62
62
  </g>
63
63
  <g>
64
- <rect data-type="rect" data-label="" data-x="3.2144395445" data-y="-0.7529250999999993" x="500.5092846746921" y="366.1233376567108" width="16.68339442601217" height="33.36678885202417" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011987968089285714" />
64
+ <rect data-type="rect" data-label="" data-x="3.2144395445" data-y="-0.7779250999999993" x="497.1047937957123" y="365.78235325620886" width="16.56005605685442" height="37.26012612792226" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.012077253803571426" />
65
65
  </g>
66
66
  <g>
67
- <rect data-type="rect" data-label="" data-x="-2.2855604555000015" data-y="0.7529250999999993" x="41.71593795935971" y="240.509873491265" width="16.683394426012086" height="33.36678885202417" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011987968089285714" />
67
+ <rect data-type="rect" data-label="" data-x="-2.2855604555000015" data-y="0.7779250999999993" x="41.70325223221812" y="236.95752061586887" width="16.560056056854336" height="37.26012612792226" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.012077253803571426" />
68
68
  </g>
69
69
  <g>
70
- <rect data-type="rect" data-label="" data-x="3.2144395444999985" data-y="0.7529250999999993" x="500.50928467469197" y="240.509873491265" width="16.683394426012057" height="33.36678885202417" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011987968089285714" />
70
+ <rect data-type="rect" data-label="" data-x="3.2144395444999985" data-y="0.7779250999999993" x="497.10479379571217" y="236.95752061586887" width="16.560056056854307" height="37.26012612792226" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.012077253803571426" />
71
71
  </g>
72
72
  <g>
73
- <rect data-type="rect" data-label="" data-x="-1.3928689350000008" data-y="0.004526300000001031" x="107.83986443264348" y="311.2807325460416" width="33.36678885202417" height="16.683394426012114" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011987968089285714" />
73
+ <rect data-type="rect" data-label="" data-x="-1.3678689350000006" data-y="0.004526300000001031" x="107.33833230858366" y="311.345193062922" width="37.26012612792226" height="16.560056056854364" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.012077253803571426" />
74
74
  </g>
75
75
  <g>
76
- <rect data-type="rect" data-label="" data-x="4.107131065" data-y="0.004526300000001031" x="566.6332111479758" y="311.2807325460416" width="33.36678885202423" height="16.683394426012114" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011987968089285714" />
76
+ <rect data-type="rect" data-label="" data-x="4.132131064999999" data-y="0.004526300000001031" x="562.7398738720777" y="311.345193062922" width="37.26012612792226" height="16.560056056854364" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.012077253803571426" />
77
77
  </g>
78
78
  <g id="crosshair" style="display: none">
79
79
  <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
@@ -103,11 +103,11 @@ x+" data-x="3.9061310649999994" data-y="0.004526300000001031" cx="566.5497941758
103
103
 
104
104
  // Calculate real coordinates using inverse transformation
105
105
  const matrix = {
106
- "a": 83.41697213006042,
106
+ "a": 82.80028028427165,
107
107
  "c": 0,
108
- "e": 240.71216799037757,
108
+ "e": 239.228326582693,
109
109
  "b": 0,
110
- "d": -83.41697213006042,
110
+ "d": -82.80028028427165,
111
111
  "f": 320
112
112
  };
113
113
  // Manually invert and apply the affine transform
@@ -0,0 +1,162 @@
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="R1.1
5
+ x-" data-x="-1.58" data-y="0.765" cx="103.74558303886928" cy="224.94699646643113" r="3" fill="hsl(226, 100%, 50%, 0.8)" />
6
+ </g>
7
+ <g>
8
+ <circle data-type="point" data-label="R1.2
9
+ x+" data-x="-0.48" data-y="0.765" cx="259.2226148409894" cy="224.94699646643113" r="3" fill="hsl(227, 100%, 50%, 0.8)" />
10
+ </g>
11
+ <g>
12
+ <circle data-type="point" data-label="R2.1
13
+ x-" data-x="0.48" data-y="0.765" cx="394.9116607773851" cy="224.94699646643113" r="3" fill="hsl(107, 100%, 50%, 0.8)" />
14
+ </g>
15
+ <g>
16
+ <circle data-type="point" data-label="R2.2
17
+ x+" data-x="1.58" data-y="0.765" cx="550.3886925795052" cy="224.94699646643113" r="3" fill="hsl(108, 100%, 50%, 0.8)" />
18
+ </g>
19
+ <g>
20
+ <circle data-type="point" data-label="R3.1
21
+ x-" data-x="-1.58" data-y="-0.765" cx="103.74558303886928" cy="441.2014134275618" r="3" fill="hsl(348, 100%, 50%, 0.8)" />
22
+ </g>
23
+ <g>
24
+ <circle data-type="point" data-label="R3.2
25
+ x+" data-x="-0.48" data-y="-0.765" cx="259.2226148409894" cy="441.2014134275618" r="3" fill="hsl(349, 100%, 50%, 0.8)" />
26
+ </g>
27
+ <g>
28
+ <circle data-type="point" data-label="J1.1
29
+ x-" data-x="0.5800000000000001" data-y="-0.665" cx="409.0459363957597" cy="427.0671378091873" r="3" fill="hsl(218, 100%, 50%, 0.8)" />
30
+ </g>
31
+ <g>
32
+ <circle data-type="point" data-label="J1.2
33
+ y-" data-x="1.03" data-y="-1.03" cx="472.6501766784452" cy="478.65724381625444" r="3" fill="hsl(219, 100%, 50%, 0.8)" />
34
+ </g>
35
+ <g>
36
+ <circle data-type="point" data-label="J1.3
37
+ x+" data-x="1.48" data-y="-0.665" cx="536.2544169611307" cy="427.0671378091873" r="3" fill="hsl(220, 100%, 50%, 0.8)" />
38
+ </g>
39
+ <g>
40
+ <circle data-type="point" data-label="" data-x="0.27999999999999997" data-y="0.765" cx="366.64310954063603" cy="224.94699646643113" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
41
+ </g>
42
+ <g>
43
+ <circle data-type="point" data-label="" data-x="1.7800000000000002" data-y="0.765" cx="578.6572438162544" cy="224.94699646643113" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
44
+ </g>
45
+ <g>
46
+ <circle data-type="point" data-label="" data-x="0.5800000000000001" data-y="-0.665" cx="409.0459363957597" cy="427.0671378091873" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
47
+ </g>
48
+ <g>
49
+ <circle data-type="point" data-label="" data-x="-1.58" data-y="0.765" cx="103.74558303886928" cy="224.94699646643113" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
50
+ </g>
51
+ <g>
52
+ <circle data-type="point" data-label="" data-x="1.48" data-y="-0.665" cx="536.2544169611307" cy="427.0671378091873" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
53
+ </g>
54
+ <g>
55
+ <circle data-type="point" data-label="" data-x="-0.48" data-y="0.765" cx="259.2226148409894" cy="224.94699646643113" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
56
+ </g>
57
+ <g>
58
+ <polyline data-points="0.48,0.765 -0.48,-0.765" data-type="line" data-label="" points="394.9116607773851,224.94699646643113 259.2226148409894,441.2014134275618" fill="none" stroke="hsl(224, 100%, 50%, 0.8)" stroke-width="1" />
59
+ </g>
60
+ <g>
61
+ <polyline data-points="1.58,0.765 -1.58,-0.765" data-type="line" data-label="" points="550.3886925795052,224.94699646643113 103.74558303886928,441.2014134275618" fill="none" stroke="hsl(224, 100%, 50%, 0.8)" stroke-width="1" />
62
+ </g>
63
+ <g>
64
+ <polyline data-points="0.5800000000000001,-0.665 -1.58,0.765" data-type="line" data-label="" points="409.0459363957597,427.0671378091873 103.74558303886928,224.94699646643113" fill="none" stroke="hsl(168, 100%, 50%, 0.8)" stroke-width="1" />
65
+ </g>
66
+ <g>
67
+ <polyline data-points="1.48,-0.665 -0.48,0.765" data-type="line" data-label="" points="536.2544169611307,427.0671378091873 259.2226148409894,224.94699646643113" fill="none" stroke="hsl(168, 100%, 50%, 0.8)" stroke-width="1" />
68
+ </g>
69
+ <g>
70
+ <polyline data-points="0.48,0.765 0.27999999999999997,0.765 0,0.765 0,-0.765 -0.27999999999999997,-0.765 -0.48,-0.765" data-type="line" data-label="" points="394.9116607773851,224.94699646643113 366.64310954063603,224.94699646643113 327.0671378091873,224.94699646643113 327.0671378091873,441.2014134275618 287.4911660777385,441.2014134275618 259.2226148409894,441.2014134275618" fill="none" stroke="purple" stroke-width="1" />
71
+ </g>
72
+ <g>
73
+ <polyline data-points="1.58,0.765 1.7800000000000002,0.765 1.7800000000000002,0 -1.78,0 -1.78,-0.765 -1.58,-0.765" data-type="line" data-label="" points="550.3886925795052,224.94699646643113 578.6572438162544,224.94699646643113 578.6572438162544,333.0742049469965 75.47703180212017,333.0742049469965 75.47703180212017,441.2014134275618 103.74558303886928,441.2014134275618" fill="none" stroke="purple" stroke-width="1" />
74
+ </g>
75
+ <g>
76
+ <rect data-type="rect" data-label="schematic_component_0" data-x="-1.03" data-y="0.765" x="103.74558303886928" y="197.46214134275627" width="155.47703180212014" height="54.969710247349695" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0070750000000000006" />
77
+ </g>
78
+ <g>
79
+ <rect data-type="rect" data-label="schematic_component_1" data-x="1.03" data-y="0.765" x="394.9116607773851" y="197.46214134275627" width="155.4770318021201" height="54.969710247349695" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0070750000000000006" />
80
+ </g>
81
+ <g>
82
+ <rect data-type="rect" data-label="schematic_component_2" data-x="-1.03" data-y="-0.765" x="103.74558303886928" y="413.716558303887" width="155.47703180212014" height="54.969710247349724" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0070750000000000006" />
83
+ </g>
84
+ <g>
85
+ <rect data-type="rect" data-label="schematic_component_3" data-x="1.03" data-y="-0.765" x="409.0459363957597" y="403.74558303886926" width="127.20848056537096" height="74.91166077738518" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0070750000000000006" />
86
+ </g>
87
+ <g>
88
+ <rect data-type="rect" data-label="" data-x="0.27999999999999997" data-y="0.99" x="352.5088339222615" y="161.3427561837456" width="28.26855123674909" height="63.60424028268554" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0070750000000000006" />
89
+ </g>
90
+ <g>
91
+ <rect data-type="rect" data-label="" data-x="1.7800000000000002" data-y="0.99" x="564.5229681978799" y="161.3427561837456" width="28.26855123674909" height="63.60424028268554" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0070750000000000006" />
92
+ </g>
93
+ <g>
94
+ <rect data-type="rect" data-label="" data-x="0.3540000000000001" data-y="-0.665" x="345.30035335689047" y="412.9328621908127" width="63.60424028268551" height="28.26855123674909" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0070750000000000006" />
95
+ </g>
96
+ <g>
97
+ <rect data-type="rect" data-label="" data-x="-1.806" data-y="0.765" x="40" y="210.81272084805656" width="63.60424028268554" height="28.26855123674912" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0070750000000000006" />
98
+ </g>
99
+ <g>
100
+ <rect data-type="rect" data-label="" data-x="1.706" data-y="-0.665" x="536.3957597173144" y="412.9328621908127" width="63.60424028268562" height="28.26855123674909" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0070750000000000006" />
101
+ </g>
102
+ <g>
103
+ <rect data-type="rect" data-label="" data-x="-0.254" data-y="0.765" x="259.36395759717317" y="210.81272084805656" width="63.60424028268551" height="28.26855123674912" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0070750000000000006" />
104
+ </g>
105
+ <g id="crosshair" style="display: none">
106
+ <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
107
+ <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>
108
+ </g>
109
+ <script>
110
+ <![CDATA[
111
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
112
+ const svg = e.currentTarget;
113
+ const rect = svg.getBoundingClientRect();
114
+ const x = e.clientX - rect.left;
115
+ const y = e.clientY - rect.top;
116
+ const crosshair = svg.getElementById('crosshair');
117
+ const h = svg.getElementById('crosshair-h');
118
+ const v = svg.getElementById('crosshair-v');
119
+ const coords = svg.getElementById('coordinates');
120
+
121
+ crosshair.style.display = 'block';
122
+ h.setAttribute('x1', '0');
123
+ h.setAttribute('x2', '640');
124
+ h.setAttribute('y1', y);
125
+ h.setAttribute('y2', y);
126
+ v.setAttribute('x1', x);
127
+ v.setAttribute('x2', x);
128
+ v.setAttribute('y1', '0');
129
+ v.setAttribute('y2', '640');
130
+
131
+ // Calculate real coordinates using inverse transformation
132
+ const matrix = {
133
+ "a": 141.34275618374556,
134
+ "c": 0,
135
+ "e": 327.0671378091873,
136
+ "b": 0,
137
+ "d": -141.34275618374556,
138
+ "f": 333.0742049469965
139
+ };
140
+ // Manually invert and apply the affine transform
141
+ // Since we only use translate and scale, we can directly compute:
142
+ // x' = (x - tx) / sx
143
+ // y' = (y - ty) / sy
144
+ const sx = matrix.a;
145
+ const sy = matrix.d;
146
+ const tx = matrix.e;
147
+ const ty = matrix.f;
148
+ const realPoint = {
149
+ x: (x - tx) / sx,
150
+ y: (y - ty) / sy // Flip y back since we used negative scale
151
+ }
152
+
153
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
154
+ coords.setAttribute('x', (x + 5).toString());
155
+ coords.setAttribute('y', (y - 5).toString());
156
+ });
157
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
158
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
159
+ });
160
+ ]]>
161
+ </script>
162
+ </svg>
@@ -0,0 +1,145 @@
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="J1.1
5
+ x+" data-x="1.1" data-y="0.2" cx="288.33702882483374" cy="207.43247369481963" r="3" fill="hsl(218, 100%, 50%, 0.8)" />
6
+ </g>
7
+ <g>
8
+ <circle data-type="point" data-label="J1.2
9
+ x+" data-x="1.1" data-y="0" cx="288.33702882483374" cy="230.00856722434997" r="3" fill="hsl(219, 100%, 50%, 0.8)" />
10
+ </g>
11
+ <g>
12
+ <circle data-type="point" data-label="J1.3
13
+ x+" data-x="1.1" data-y="-0.2" cx="288.33702882483374" cy="252.5846607538803" r="3" fill="hsl(220, 100%, 50%, 0.8)" />
14
+ </g>
15
+ <g>
16
+ <circle data-type="point" data-label="R1.1
17
+ x-" data-x="0.5499999999999996" data-y="-1.7944553499999996" cx="226.25277161862525" cy="432.5675263051804" r="3" fill="hsl(226, 100%, 50%, 0.8)" />
18
+ </g>
19
+ <g>
20
+ <circle data-type="point" data-label="R1.2
21
+ x+" data-x="1.6499999999999997" data-y="-1.7944553499999996" cx="350.4212860310421" cy="432.5675263051804" r="3" fill="hsl(227, 100%, 50%, 0.8)" />
22
+ </g>
23
+ <g>
24
+ <circle data-type="point" data-label="C1.1
25
+ x-" data-x="2.3099999999999996" data-y="0.01999999999999985" cx="424.9223946784922" cy="227.75095787139696" r="3" fill="hsl(121, 100%, 50%, 0.8)" />
26
+ </g>
27
+ <g>
28
+ <circle data-type="point" data-label="C1.2
29
+ x+" data-x="3.41" data-y="0.01999999999999985" cx="549.090909090909" cy="227.75095787139696" r="3" fill="hsl(122, 100%, 50%, 0.8)" />
30
+ </g>
31
+ <g>
32
+ <circle data-type="point" data-label="" data-x="1.3" data-y="0.2" cx="310.9131223543641" cy="207.43247369481963" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
33
+ </g>
34
+ <g>
35
+ <circle data-type="point" data-label="" data-x="1.3" data-y="-0.4486138374999999" cx="310.9131223543641" cy="280.6483069945576" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
36
+ </g>
37
+ <g>
38
+ <circle data-type="point" data-label="" data-x="1.8499999999999996" data-y="-1.7944553499999996" cx="372.9973795605724" cy="432.5675263051804" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
39
+ </g>
40
+ <g>
41
+ <circle data-type="point" data-label="" data-x="3.41" data-y="0.01999999999999985" cx="549.090909090909" cy="227.75095787139696" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
42
+ </g>
43
+ <g>
44
+ <polyline data-points="1.1,0.2 2.3099999999999996,0.01999999999999985" data-type="line" data-label="" points="288.33702882483374,207.43247369481963 424.9223946784922,227.75095787139696" fill="none" stroke="hsl(190, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
45
+ </g>
46
+ <g>
47
+ <polyline data-points="1.1,0 0.5499999999999996,-1.7944553499999996" data-type="line" data-label="" points="288.33702882483374,230.00856722434997 226.25277161862525,432.5675263051804" fill="none" stroke="hsl(158, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
48
+ </g>
49
+ <g>
50
+ <polyline data-points="1.1,-0.2 1.6499999999999997,-1.7944553499999996" data-type="line" data-label="" points="288.33702882483374,252.5846607538803 350.4212860310421,432.5675263051804" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
51
+ </g>
52
+ <g>
53
+ <polyline data-points="1.1,-0.2 3.41,0.01999999999999985" data-type="line" data-label="" points="288.33702882483374,252.5846607538803 549.090909090909,227.75095787139696" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
54
+ </g>
55
+ <g>
56
+ <polyline data-points="1.6499999999999997,-1.7944553499999996 3.41,0.01999999999999985" data-type="line" data-label="" points="350.4212860310421,432.5675263051804 549.090909090909,227.75095787139696" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
57
+ </g>
58
+ <g>
59
+ <polyline data-points="1.1,0.2 1.3,0.2 1.7049999999999998,0.2 1.7049999999999998,0.01999999999999985 2.1099999999999994,0.01999999999999985 2.3099999999999996,0.01999999999999985" data-type="line" data-label="" points="288.33702882483374,207.43247369481963 310.9131223543641,207.43247369481963 356.62971175166297,207.43247369481963 356.62971175166297,227.75095787139696 402.34630114896186,227.75095787139696 424.9223946784922,227.75095787139696" fill="none" stroke="purple" stroke-width="1" />
60
+ </g>
61
+ <g>
62
+ <polyline data-points="1.1,0 1.3,0 1.3,-0.8972276749999998 0.34999999999999964,-0.8972276749999998 0.34999999999999964,-1.7944553499999996 0.5499999999999996,-1.7944553499999996" data-type="line" data-label="" points="288.33702882483374,230.00856722434997 310.9131223543641,230.00856722434997 310.9131223543641,331.28804676476517 203.6766780890949,331.28804676476517 203.6766780890949,432.5675263051804 226.25277161862525,432.5675263051804" fill="none" stroke="purple" stroke-width="1" />
63
+ </g>
64
+ <g>
65
+ <polyline data-points="1.6499999999999997,-1.7944553499999996 1.8499999999999996,-1.7944553499999996 1.8499999999999996,-0.2 1.1,-0.2" data-type="line" data-label="" points="350.4212860310421,432.5675263051804 372.9973795605724,432.5675263051804 372.9973795605724,252.5846607538803 288.33702882483374,252.5846607538803" fill="none" stroke="purple" stroke-width="1" />
66
+ </g>
67
+ <g>
68
+ <rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="40.000000000000014" y="184.8563801652893" width="248.33702882483374" height="90.30437411812136" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008858928571428573" />
69
+ </g>
70
+ <g>
71
+ <rect data-type="rect" data-label="schematic_component_1" data-x="1.0999999999999996" data-y="-1.7944553499999996" x="226.25277161862525" y="410.61731546059264" width="124.16851441241684" height="43.90042168917546" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008858928571428573" />
72
+ </g>
73
+ <g>
74
+ <rect data-type="rect" data-label="schematic_component_2" data-x="2.86" data-y="0.01999999999999985" x="424.9223946784922" y="180.34116145938327" width="124.16851441241681" height="94.81959282402738" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008858928571428573" />
75
+ </g>
76
+ <g>
77
+ <rect data-type="rect" data-label="" data-x="1.3" data-y="0.42500000000000004" x="299.62507558959885" y="156.6362632533764" width="22.57609352953034" height="50.796210441443236" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008858928571428573" />
78
+ </g>
79
+ <g>
80
+ <rect data-type="rect" data-label="" data-x="1.5250000000000001" data-y="-0.4486138374999999" x="310.9131223543641" y="269.3602602297924" width="50.796210441443236" height="22.57609352953034" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008858928571428573" />
81
+ </g>
82
+ <g>
83
+ <rect data-type="rect" data-label="" data-x="1.8499999999999996" data-y="-2.0194553499999994" x="361.7093327958072" y="432.56752630518037" width="22.576093529530397" height="50.79621044144329" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008858928571428573" />
84
+ </g>
85
+ <g>
86
+ <rect data-type="rect" data-label="" data-x="3.636" data-y="0.01999999999999985" x="549.2037895585568" y="216.4629111066318" width="50.796210441443236" height="22.57609352953034" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008858928571428573" />
87
+ </g>
88
+ <g id="crosshair" style="display: none">
89
+ <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
90
+ <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>
91
+ </g>
92
+ <script>
93
+ <![CDATA[
94
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
95
+ const svg = e.currentTarget;
96
+ const rect = svg.getBoundingClientRect();
97
+ const x = e.clientX - rect.left;
98
+ const y = e.clientY - rect.top;
99
+ const crosshair = svg.getElementById('crosshair');
100
+ const h = svg.getElementById('crosshair-h');
101
+ const v = svg.getElementById('crosshair-v');
102
+ const coords = svg.getElementById('coordinates');
103
+
104
+ crosshair.style.display = 'block';
105
+ h.setAttribute('x1', '0');
106
+ h.setAttribute('x2', '640');
107
+ h.setAttribute('y1', y);
108
+ h.setAttribute('y2', y);
109
+ v.setAttribute('x1', x);
110
+ v.setAttribute('x2', x);
111
+ v.setAttribute('y1', '0');
112
+ v.setAttribute('y2', '640');
113
+
114
+ // Calculate real coordinates using inverse transformation
115
+ const matrix = {
116
+ "a": 112.88046764765167,
117
+ "c": 0,
118
+ "e": 164.16851441241687,
119
+ "b": 0,
120
+ "d": -112.88046764765167,
121
+ "f": 230.00856722434997
122
+ };
123
+ // Manually invert and apply the affine transform
124
+ // Since we only use translate and scale, we can directly compute:
125
+ // x' = (x - tx) / sx
126
+ // y' = (y - ty) / sy
127
+ const sx = matrix.a;
128
+ const sy = matrix.d;
129
+ const tx = matrix.e;
130
+ const ty = matrix.f;
131
+ const realPoint = {
132
+ x: (x - tx) / sx,
133
+ y: (y - ty) / sy // Flip y back since we used negative scale
134
+ }
135
+
136
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
137
+ coords.setAttribute('x', (x + 5).toString());
138
+ coords.setAttribute('y', (y - 5).toString());
139
+ });
140
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
141
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
142
+ });
143
+ ]]>
144
+ </script>
145
+ </svg>