@tscircuit/schematic-trace-solver 0.0.31 → 0.0.33
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/CLAUDE.md +8 -0
- package/dist/index.d.ts +24 -53
- package/dist/index.js +494 -807
- package/lib/index.ts +1 -0
- package/lib/solvers/MspConnectionPairSolver/MspConnectionPairSolver.ts +54 -3
- package/lib/solvers/MspConnectionPairSolver/doesPairCrossRestrictedCenterLines.ts +62 -0
- package/lib/solvers/MspConnectionPairSolver/getMspConnectionPairsFromPins.ts +7 -2
- package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceLinesSolver.ts +5 -11
- package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver/SchematicTraceSingleLineSolver.ts +37 -7
- package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver/generateElbowVariants.ts +7 -0
- package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/SchematicTraceSingleLineSolver2.ts +239 -0
- package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/collisions.ts +57 -0
- package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/mid.ts +97 -0
- package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/pathOps.ts +65 -0
- package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/rect.ts +19 -0
- package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +14 -14
- package/package.json +1 -1
- package/site/SchematicTracePipelineSolver/SchematicTracePipelineSolver03.page.tsx +486 -0
- package/site/examples/example09.page.tsx +1 -1
- package/tests/examples/__snapshots__/example01.snap.svg +29 -29
- package/tests/examples/__snapshots__/example02.snap.svg +13 -10
- package/tests/examples/__snapshots__/example04.snap.svg +12 -12
- package/tests/examples/__snapshots__/example05.snap.svg +38 -38
- package/tests/examples/__snapshots__/example06.snap.svg +14 -14
- package/tests/examples/__snapshots__/example08.snap.svg +29 -23
- package/tests/examples/__snapshots__/example09.snap.svg +119 -149
- package/tests/examples/__snapshots__/example11.snap.svg +39 -33
- package/tests/examples/__snapshots__/example12.snap.svg +32 -29
- package/tests/examples/__snapshots__/example13.snap.svg +87 -84
- package/tests/examples/__snapshots__/example15.snap.svg +57 -57
- package/tests/examples/__snapshots__/example16.snap.svg +3 -3
- package/tests/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver_repro03.test.ts +491 -0
|
@@ -2,99 +2,105 @@
|
|
|
2
2
|
<rect width="100%" height="100%" fill="white" />
|
|
3
3
|
<g>
|
|
4
4
|
<circle data-type="point" data-label="R1.1
|
|
5
|
-
x-" data-x="-1.58" data-y="0.765" cx="
|
|
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
6
|
</g>
|
|
7
7
|
<g>
|
|
8
8
|
<circle data-type="point" data-label="R1.2
|
|
9
|
-
x+" data-x="-0.48" data-y="0.765" cx="
|
|
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
10
|
</g>
|
|
11
11
|
<g>
|
|
12
12
|
<circle data-type="point" data-label="R2.1
|
|
13
|
-
x-" data-x="0.48" data-y="0.765" cx="
|
|
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
14
|
</g>
|
|
15
15
|
<g>
|
|
16
16
|
<circle data-type="point" data-label="R2.2
|
|
17
|
-
x+" data-x="1.58" data-y="0.765" cx="
|
|
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
18
|
</g>
|
|
19
19
|
<g>
|
|
20
20
|
<circle data-type="point" data-label="R3.1
|
|
21
|
-
x-" data-x="-1.58" data-y="-0.765" cx="
|
|
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
22
|
</g>
|
|
23
23
|
<g>
|
|
24
24
|
<circle data-type="point" data-label="R3.2
|
|
25
|
-
x+" data-x="-0.48" data-y="-0.765" cx="
|
|
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
26
|
</g>
|
|
27
27
|
<g>
|
|
28
28
|
<circle data-type="point" data-label="J1.1
|
|
29
|
-
x-" data-x="0.5800000000000001" data-y="-0.665" cx="
|
|
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
30
|
</g>
|
|
31
31
|
<g>
|
|
32
32
|
<circle data-type="point" data-label="J1.2
|
|
33
|
-
y-" data-x="1.03" data-y="-1.03" cx="
|
|
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
34
|
</g>
|
|
35
35
|
<g>
|
|
36
36
|
<circle data-type="point" data-label="J1.3
|
|
37
|
-
x+" data-x="1.48" data-y="-0.665" cx="
|
|
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
38
|
</g>
|
|
39
39
|
<g>
|
|
40
|
-
<circle data-type="point" data-label="" data-x="0.27999999999999997" data-y="0.
|
|
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
41
|
</g>
|
|
42
42
|
<g>
|
|
43
|
-
<circle data-type="point" data-label="" data-x="1.
|
|
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
44
|
</g>
|
|
45
45
|
<g>
|
|
46
|
-
<circle data-type="point" data-label="" data-x="0.
|
|
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
47
|
</g>
|
|
48
48
|
<g>
|
|
49
|
-
<circle data-type="point" data-label="" data-x="1.
|
|
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
50
|
</g>
|
|
51
51
|
<g>
|
|
52
|
-
<
|
|
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
53
|
</g>
|
|
54
54
|
<g>
|
|
55
|
-
<
|
|
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
56
|
</g>
|
|
57
57
|
<g>
|
|
58
|
-
<polyline data-points="0.
|
|
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
59
|
</g>
|
|
60
60
|
<g>
|
|
61
|
-
<polyline data-points="1.
|
|
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
62
|
</g>
|
|
63
63
|
<g>
|
|
64
|
-
<polyline data-points="0.
|
|
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
65
|
</g>
|
|
66
66
|
<g>
|
|
67
|
-
<polyline data-points="1.
|
|
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
68
|
</g>
|
|
69
69
|
<g>
|
|
70
|
-
<polyline data-points="0.
|
|
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
71
|
</g>
|
|
72
72
|
<g>
|
|
73
|
-
<polyline data-points="1.
|
|
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
74
|
</g>
|
|
75
75
|
<g>
|
|
76
|
-
<rect data-type="rect" data-label="schematic_component_0" data-x="-1.03" data-y="0.765" x="
|
|
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
77
|
</g>
|
|
78
78
|
<g>
|
|
79
|
-
<rect data-type="rect" data-label="schematic_component_1" data-x="1.03" data-y="0.765" x="
|
|
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
80
|
</g>
|
|
81
81
|
<g>
|
|
82
|
-
<rect data-type="rect" data-label="schematic_component_2" data-x="-1.03" data-y="-0.765" x="
|
|
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
83
|
</g>
|
|
84
84
|
<g>
|
|
85
|
-
<rect data-type="rect" data-label="schematic_component_3" data-x="1.03" data-y="-0.765" x="
|
|
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
86
|
</g>
|
|
87
87
|
<g>
|
|
88
|
-
<rect data-type="rect" data-label="" data-x="0.27999999999999997" data-y="0.
|
|
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
89
|
</g>
|
|
90
90
|
<g>
|
|
91
|
-
<rect data-type="rect" data-label="" data-x="1.
|
|
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
92
|
</g>
|
|
93
93
|
<g>
|
|
94
|
-
<rect data-type="rect" data-label="" data-x="0.
|
|
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
95
|
</g>
|
|
96
96
|
<g>
|
|
97
|
-
<rect data-type="rect" data-label="" data-x="1.
|
|
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" />
|
|
98
104
|
</g>
|
|
99
105
|
<g id="crosshair" style="display: none">
|
|
100
106
|
<line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
|
|
@@ -124,12 +130,12 @@ x+" data-x="1.48" data-y="-0.665" cx="516.9811320754716" cy="426.7924528301886"
|
|
|
124
130
|
|
|
125
131
|
// Calculate real coordinates using inverse transformation
|
|
126
132
|
const matrix = {
|
|
127
|
-
"a":
|
|
133
|
+
"a": 141.34275618374556,
|
|
128
134
|
"c": 0,
|
|
129
|
-
"e":
|
|
135
|
+
"e": 327.0671378091873,
|
|
130
136
|
"b": 0,
|
|
131
|
-
"d": -
|
|
132
|
-
"f":
|
|
137
|
+
"d": -141.34275618374556,
|
|
138
|
+
"f": 333.0742049469965
|
|
133
139
|
};
|
|
134
140
|
// Manually invert and apply the affine transform
|
|
135
141
|
// Since we only use translate and scale, we can directly compute:
|
|
@@ -2,85 +2,88 @@
|
|
|
2
2
|
<rect width="100%" height="100%" fill="white" />
|
|
3
3
|
<g>
|
|
4
4
|
<circle data-type="point" data-label="J1.1
|
|
5
|
-
x+" data-x="1.1" data-y="0.2" cx="
|
|
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
6
|
</g>
|
|
7
7
|
<g>
|
|
8
8
|
<circle data-type="point" data-label="J1.2
|
|
9
|
-
x+" data-x="1.1" data-y="0" cx="
|
|
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
10
|
</g>
|
|
11
11
|
<g>
|
|
12
12
|
<circle data-type="point" data-label="J1.3
|
|
13
|
-
x+" data-x="1.1" data-y="-0.2" cx="
|
|
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
14
|
</g>
|
|
15
15
|
<g>
|
|
16
16
|
<circle data-type="point" data-label="R1.1
|
|
17
|
-
x-" data-x="0.5499999999999996" data-y="-1.7944553499999996" cx="
|
|
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
18
|
</g>
|
|
19
19
|
<g>
|
|
20
20
|
<circle data-type="point" data-label="R1.2
|
|
21
|
-
x+" data-x="1.6499999999999997" data-y="-1.7944553499999996" cx="
|
|
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
22
|
</g>
|
|
23
23
|
<g>
|
|
24
24
|
<circle data-type="point" data-label="C1.1
|
|
25
|
-
x-" data-x="2.3099999999999996" data-y="0.01999999999999985" cx="
|
|
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
26
|
</g>
|
|
27
27
|
<g>
|
|
28
28
|
<circle data-type="point" data-label="C1.2
|
|
29
|
-
x+" data-x="3.41" data-y="0.01999999999999985" cx="
|
|
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
30
|
</g>
|
|
31
31
|
<g>
|
|
32
|
-
<circle data-type="point" data-label="" data-x="1.3" data-y="0.2" cx="
|
|
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
33
|
</g>
|
|
34
34
|
<g>
|
|
35
|
-
<circle data-type="point" data-label="" data-x="1.
|
|
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
36
|
</g>
|
|
37
37
|
<g>
|
|
38
|
-
<circle data-type="point" data-label="" data-x="1.
|
|
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
39
|
</g>
|
|
40
40
|
<g>
|
|
41
|
-
<
|
|
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
42
|
</g>
|
|
43
43
|
<g>
|
|
44
|
-
<polyline data-points="1.1,0 0.
|
|
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
45
|
</g>
|
|
46
46
|
<g>
|
|
47
|
-
<polyline data-points="1.1
|
|
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
48
|
</g>
|
|
49
49
|
<g>
|
|
50
|
-
<polyline data-points="1.1,-0.2
|
|
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
51
|
</g>
|
|
52
52
|
<g>
|
|
53
|
-
<polyline data-points="1.
|
|
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
54
|
</g>
|
|
55
55
|
<g>
|
|
56
|
-
<polyline data-points="1.1
|
|
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
57
|
</g>
|
|
58
58
|
<g>
|
|
59
|
-
<polyline data-points="1.1,0 1.
|
|
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
60
|
</g>
|
|
61
61
|
<g>
|
|
62
|
-
<polyline data-points="1.1
|
|
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
63
|
</g>
|
|
64
64
|
<g>
|
|
65
|
-
<polyline data-points="1.6499999999999997,-1.7944553499999996 1.
|
|
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
66
|
</g>
|
|
67
67
|
<g>
|
|
68
|
-
<rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="40.
|
|
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
69
|
</g>
|
|
70
70
|
<g>
|
|
71
|
-
<rect data-type="rect" data-label="schematic_component_1" data-x="1.0999999999999996" data-y="-1.7944553499999996" x="
|
|
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
72
|
</g>
|
|
73
73
|
<g>
|
|
74
|
-
<rect data-type="rect" data-label="schematic_component_2" data-x="2.86" data-y="0.01999999999999985" x="
|
|
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
75
|
</g>
|
|
76
76
|
<g>
|
|
77
|
-
<rect data-type="rect" data-label="" data-x="1.3" data-y="0.42500000000000004" x="
|
|
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
78
|
</g>
|
|
79
79
|
<g>
|
|
80
|
-
<rect data-type="rect" data-label="" data-x="1.
|
|
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
81
|
</g>
|
|
82
82
|
<g>
|
|
83
|
-
<rect data-type="rect" data-label="" data-x="1.
|
|
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" />
|
|
84
87
|
</g>
|
|
85
88
|
<g id="crosshair" style="display: none">
|
|
86
89
|
<line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
|
|
@@ -110,12 +113,12 @@ x+" data-x="3.41" data-y="0.01999999999999985" cx="587.8524945770065" cy="236.24
|
|
|
110
113
|
|
|
111
114
|
// Calculate real coordinates using inverse transformation
|
|
112
115
|
const matrix = {
|
|
113
|
-
"a":
|
|
116
|
+
"a": 112.88046764765167,
|
|
114
117
|
"c": 0,
|
|
115
|
-
"e":
|
|
118
|
+
"e": 164.16851441241687,
|
|
116
119
|
"b": 0,
|
|
117
|
-
"d": -
|
|
118
|
-
"f":
|
|
120
|
+
"d": -112.88046764765167,
|
|
121
|
+
"f": 230.00856722434997
|
|
119
122
|
};
|
|
120
123
|
// Manually invert and apply the affine transform
|
|
121
124
|
// Since we only use translate and scale, we can directly compute:
|