@tscircuit/schematic-trace-solver 0.0.26 → 0.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +5 -0
- package/dist/index.js +114 -4
- package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver.ts +11 -0
- package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver/SchematicTraceSingleLineSolver.ts +40 -1
- package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver/getRestrictedCenterLines.ts +139 -0
- package/package.json +1 -1
- package/site/SchematicTracePipelineSolver/SchematicTracePipelineSolver01.page.tsx +143 -0
- package/site/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver01.page.tsx +574 -0
- package/site/examples/example11.page.tsx +1 -1
- package/site/examples/example12.page.tsx +1 -1
- package/site/examples/example13.page.tsx +219 -0
- package/site/examples/example14.page.tsx +210 -0
- package/tests/examples/__snapshots__/example01.snap.svg +4 -4
- package/tests/examples/__snapshots__/example02.snap.svg +4 -4
- package/tests/examples/__snapshots__/example03.snap.svg +68 -68
- package/tests/examples/__snapshots__/example04.snap.svg +12 -12
- package/tests/examples/__snapshots__/example05.snap.svg +1 -1
- package/tests/examples/__snapshots__/example06.snap.svg +11 -11
- package/tests/examples/__snapshots__/example07.snap.svg +48 -48
- package/tests/examples/__snapshots__/example08.snap.svg +25 -25
- package/tests/examples/__snapshots__/example09.snap.svg +131 -131
- package/tests/examples/__snapshots__/example10.snap.svg +26 -26
- package/tests/examples/__snapshots__/example11.snap.svg +162 -0
- package/tests/examples/__snapshots__/example12.snap.svg +145 -0
- package/tests/examples/__snapshots__/example13.snap.svg +322 -0
- package/tests/examples/__snapshots__/example14.snap.svg +213 -0
- package/tests/examples/__snapshots__/example15.snap.svg +235 -0
- package/tests/examples/example11.test.tsx +12 -0
- package/tests/examples/example12.test.tsx +12 -0
- package/tests/examples/example13.test.tsx +12 -0
- package/tests/examples/example14.test.tsx +12 -0
- package/tests/examples/example15.test.tsx +187 -0
- package/tests/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver01.test.ts +13 -0
- package/tests/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver_repro03.test.ts +0 -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="
|
|
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="
|
|
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.
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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.
|
|
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="
|
|
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="
|
|
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="
|
|
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.
|
|
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
|
|
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="
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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":
|
|
106
|
+
"a": 82.80028028427165,
|
|
107
107
|
"c": 0,
|
|
108
|
-
"e":
|
|
108
|
+
"e": 239.228326582693,
|
|
109
109
|
"b": 0,
|
|
110
|
-
"d": -
|
|
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>
|