@tscircuit/schematic-trace-solver 0.0.40 → 0.0.41

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tscircuit/schematic-trace-solver",
3
3
  "main": "dist/index.js",
4
- "version": "0.0.40",
4
+ "version": "0.0.41",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "start": "cosmos",
@@ -0,0 +1,4 @@
1
+ import { PipelineDebugger } from "site/components/PipelineDebugger"
2
+ import inputProblem from "../../tests/assets/example25.json"
3
+
4
+ export default () => <PipelineDebugger inputProblem={inputProblem as any} />
@@ -0,0 +1,96 @@
1
+ {
2
+ "chips": [
3
+ {
4
+ "chipId": "schematic_component_0",
5
+ "center": { "x": -5, "y": 2 },
6
+ "width": 0.6394553499999995,
7
+ "height": 1.08,
8
+ "pins": [
9
+ { "pinId": "V1.1", "x": -5.005, "y": 2.54 },
10
+ { "pinId": "V1.2", "x": -4.995, "y": 1.46 }
11
+ ]
12
+ },
13
+ {
14
+ "chipId": "schematic_component_1",
15
+ "center": { "x": 0, "y": 3 },
16
+ "width": 1.16,
17
+ "height": 0.46,
18
+ "pins": [
19
+ { "pinId": "L1.1", "x": -0.55, "y": 2.98 },
20
+ { "pinId": "L1.2", "x": 0.55, "y": 2.97 }
21
+ ]
22
+ },
23
+ {
24
+ "chipId": "schematic_component_2",
25
+ "center": { "x": 3, "y": 3 },
26
+ "width": 1.04,
27
+ "height": 0.54,
28
+ "pins": [
29
+ { "pinId": "D1.1", "x": 2.48, "y": 3 },
30
+ { "pinId": "D1.2", "x": 3.52, "y": 3 }
31
+ ]
32
+ },
33
+ {
34
+ "chipId": "schematic_component_3",
35
+ "center": { "x": 3, "y": 0 },
36
+ "width": 0.5700000000000001,
37
+ "height": 0.99,
38
+ "pins": [
39
+ { "pinId": "C1.2", "x": 3, "y": -0.49500000000000005 },
40
+ { "pinId": "C1.1", "x": 3, "y": 0.495 }
41
+ ]
42
+ },
43
+ {
44
+ "chipId": "schematic_component_4",
45
+ "center": { "x": 6, "y": 0 },
46
+ "width": 0.3194553499999995,
47
+ "height": 1.1,
48
+ "pins": [
49
+ { "pinId": "R1.1", "x": 6, "y": 0.5499999999999999 },
50
+ { "pinId": "R1.2", "x": 6, "y": -0.55 }
51
+ ]
52
+ },
53
+ {
54
+ "chipId": "schematic_component_5",
55
+ "center": { "x": -3, "y": 0 },
56
+ "width": 0.39624869999999945,
57
+ "height": 0.8916016,
58
+ "pins": [
59
+ { "pinId": "V2.1", "x": -2.9999378, "y": 0.4458008 },
60
+ { "pinId": "V2.2", "x": -3.0000622, "y": -0.4458008 }
61
+ ]
62
+ },
63
+ {
64
+ "chipId": "schematic_component_6",
65
+ "center": { "x": 0, "y": 0 },
66
+ "width": 0.89,
67
+ "height": 1.16,
68
+ "pins": [
69
+ { "pinId": "M1.1", "x": 0.3, "y": 0.55 },
70
+ { "pinId": "M1.2", "x": 0.31, "y": -0.55 },
71
+ { "pinId": "M1.3", "x": -0.42, "y": -0.1 }
72
+ ]
73
+ }
74
+ ],
75
+ "directConnections": [
76
+ { "pinIds": ["V1.1", "L1.1"], "netId": ".V1 > .pin1 to .L1 > .pin1" },
77
+ { "pinIds": ["L1.2", "D1.1"], "netId": ".L1 > .pin2 to .D1 > .anode" },
78
+ { "pinIds": ["D1.2", "C1.1"], "netId": ".D1 > .cathode to .C1 > .pin1" },
79
+ { "pinIds": ["D1.2", "R1.1"], "netId": ".D1 > .cathode to .R1 > .pin1" },
80
+ { "pinIds": ["C1.2", "R1.2"], "netId": ".C1 > .pin2 to .R1 > .pin2" },
81
+ { "pinIds": ["R1.2", "V1.2"], "netId": ".R1 > .pin2 to .V1 > .pin2" },
82
+ { "pinIds": ["L1.2", "M1.1"], "netId": ".L1 > .pin2 to .M1 > .drain" },
83
+ { "pinIds": ["M1.2", "V1.2"], "netId": ".M1 > .source to .V1 > .pin2" },
84
+ { "pinIds": ["M1.3", "V2.1"], "netId": ".M1 > .gate to .V2 > .pin1" },
85
+ { "pinIds": ["V2.2", "V1.2"], "netId": ".V2 > .pin2 to .V1 > .pin2" }
86
+ ],
87
+ "netConnections": [
88
+ {
89
+ "netId": "GND",
90
+ "pinIds": ["V1.2", "C1.2", "R1.2", "V2.2", "M1.2"],
91
+ "netLabelWidth": 0.3
92
+ }
93
+ ],
94
+ "availableNetLabelOrientations": { "GND": ["y-"] },
95
+ "maxMspPairDistance": 2.4
96
+ }
@@ -2,225 +2,216 @@
2
2
  <rect width="100%" height="100%" fill="white" />
3
3
  <g>
4
4
  <circle data-type="point" data-label="PIN1_PIN2.1
5
- x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="71.9568626609827" cy="217.33014662474903" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
5
+ x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="71.55755929219254" cy="217.7151979959293" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
6
6
  </g>
7
7
  <g>
8
8
  <circle data-type="point" data-label="PIN1_PIN2.2
9
- x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="71.9568626609827" cy="217.33014662474903" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
9
+ x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="71.55755929219254" cy="217.7151979959293" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
10
10
  </g>
11
11
  <g>
12
12
  <circle data-type="point" data-label="PIN1_PIN2.3
13
- x+" data-x="-2.4994231089999994" data-y="1.4485175000000003" cx="142.8964057073185" cy="217.36125319394677" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
13
+ x+" data-x="-2.4994231089999994" data-y="1.4485175000000003" cx="141.6107074874649" cy="217.7459158862381" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
14
14
  </g>
15
15
  <g>
16
16
  <circle data-type="point" data-label="PIN1_PIN2.4
17
- x+" data-x="-2.4994231089999994" data-y="1.4485175000000003" cx="142.8964057073185" cy="217.36125319394677" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
17
+ x+" data-x="-2.4994231089999994" data-y="1.4485175000000003" cx="141.6107074874649" cy="217.7459158862381" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
18
18
  </g>
19
19
  <g>
20
20
  <circle data-type="point" data-label="PIN1_PIN3.1
21
- x-" data-x="-0.5005768910000006" data-y="1.4489565000000004" cx="284.5302284768321" cy="217.33014662474903" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
21
+ x-" data-x="-0.5005768910000006" data-y="1.4489565000000004" cx="281.47480513826264" cy="217.7151979959293" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
22
22
  </g>
23
23
  <g>
24
24
  <circle data-type="point" data-label="PIN1_PIN3.2
25
- x-" data-x="-0.5005768910000006" data-y="1.4489565000000004" cx="284.5302284768321" cy="217.33014662474903" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
25
+ x-" data-x="-0.5005768910000006" data-y="1.4489565000000004" cx="281.47480513826264" cy="217.7151979959293" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
26
26
  </g>
27
27
  <g>
28
28
  <circle data-type="point" data-label="PIN1_PIN3.3
29
- x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="355.4697715231679" cy="217.36125319394677" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
29
+ x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="351.527953333535" cy="217.7459158862381" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
30
30
  </g>
31
31
  <g>
32
32
  <circle data-type="point" data-label="PIN1_PIN3.4
33
- x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="355.4697715231679" cy="217.36125319394677" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
33
+ x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="351.527953333535" cy="217.7459158862381" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
34
34
  </g>
35
35
  <g>
36
36
  <circle data-type="point" data-label="PIN1_PIN4.1
37
- x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="497.10359429268146" cy="217.33014662474903" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
37
+ x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="491.39205098433274" cy="217.7151979959293" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
38
38
  </g>
39
39
  <g>
40
40
  <circle data-type="point" data-label="PIN1_PIN4.2
41
- x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="497.10359429268146" cy="217.33014662474903" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
41
+ x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="491.39205098433274" cy="217.7151979959293" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
42
42
  </g>
43
43
  <g>
44
44
  <circle data-type="point" data-label="PIN1_PIN4.3
45
- x+" data-x="3.5005768910000006" data-y="1.4485175000000003" cx="568.0431373390173" cy="217.36125319394677" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
45
+ x+" data-x="3.5005768910000006" data-y="1.4485175000000003" cx="561.4451991796051" cy="217.7459158862381" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
46
46
  </g>
47
47
  <g>
48
48
  <circle data-type="point" data-label="PIN1_PIN4.4
49
- x+" data-x="3.5005768910000006" data-y="1.4485175000000003" cx="568.0431373390173" cy="217.36125319394677" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
49
+ x+" data-x="3.5005768910000006" data-y="1.4485175000000003" cx="561.4451991796051" cy="217.7459158862381" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
50
50
  </g>
51
51
  <g>
52
52
  <circle data-type="point" data-label="PIN2_PIN3.1
53
- x-" data-x="-3.5005768910000006" data-y="-1.5510434999999996" cx="71.9568626609827" cy="429.90351244059843" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
53
+ x-" data-x="-3.5005768910000006" data-y="-1.5510434999999996" cx="71.55755929219254" cy="427.63244384199936" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
54
54
  </g>
55
55
  <g>
56
56
  <circle data-type="point" data-label="PIN2_PIN3.2
57
- x-" data-x="-3.5005768910000006" data-y="-1.5510434999999996" cx="71.9568626609827" cy="429.90351244059843" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
57
+ x-" data-x="-3.5005768910000006" data-y="-1.5510434999999996" cx="71.55755929219254" cy="427.63244384199936" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
58
58
  </g>
59
59
  <g>
60
60
  <circle data-type="point" data-label="PIN2_PIN3.3
61
- x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="142.8964057073185" cy="429.93461900979617" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
61
+ x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="141.6107074874649" cy="427.6631617323082" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
62
62
  </g>
63
63
  <g>
64
64
  <circle data-type="point" data-label="PIN2_PIN3.4
65
- x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="142.8964057073185" cy="429.93461900979617" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
65
+ x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="141.6107074874649" cy="427.6631617323082" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
66
66
  </g>
67
67
  <g>
68
68
  <circle data-type="point" data-label="PIN2_PIN4.1
69
- x-" data-x="-0.5005768910000006" data-y="-1.5510434999999996" cx="284.5302284768321" cy="429.90351244059843" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
69
+ x-" data-x="-0.5005768910000006" data-y="-1.5510434999999996" cx="281.47480513826264" cy="427.63244384199936" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
70
70
  </g>
71
71
  <g>
72
72
  <circle data-type="point" data-label="PIN2_PIN4.2
73
- x-" data-x="-0.5005768910000006" data-y="-1.5510434999999996" cx="284.5302284768321" cy="429.90351244059843" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
73
+ x-" data-x="-0.5005768910000006" data-y="-1.5510434999999996" cx="281.47480513826264" cy="427.63244384199936" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
74
74
  </g>
75
75
  <g>
76
76
  <circle data-type="point" data-label="PIN2_PIN4.3
77
- x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="355.4697715231679" cy="429.93461900979617" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
77
+ x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="351.527953333535" cy="427.6631617323082" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
78
78
  </g>
79
79
  <g>
80
80
  <circle data-type="point" data-label="PIN2_PIN4.4
81
- x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="355.4697715231679" cy="429.93461900979617" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
81
+ x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="351.527953333535" cy="427.6631617323082" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
82
82
  </g>
83
83
  <g>
84
84
  <circle data-type="point" data-label="PIN3_PIN4.1
85
- x-" data-x="2.4994231089999994" data-y="-1.5510434999999996" cx="497.10359429268146" cy="429.90351244059843" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
85
+ x-" data-x="2.4994231089999994" data-y="-1.5510434999999996" cx="491.39205098433274" cy="427.63244384199936" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
86
86
  </g>
87
87
  <g>
88
88
  <circle data-type="point" data-label="PIN3_PIN4.2
89
- x-" data-x="2.4994231089999994" data-y="-1.5510434999999996" cx="497.10359429268146" cy="429.90351244059843" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
89
+ x-" data-x="2.4994231089999994" data-y="-1.5510434999999996" cx="491.39205098433274" cy="427.63244384199936" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
90
90
  </g>
91
91
  <g>
92
92
  <circle data-type="point" data-label="PIN3_PIN4.3
93
- x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="568.0431373390173" cy="429.93461900979617" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
93
+ x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.4451991796051" cy="427.6631617323082" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
94
94
  </g>
95
95
  <g>
96
96
  <circle data-type="point" data-label="PIN3_PIN4.4
97
- x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="568.0431373390173" cy="429.93461900979617" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
97
+ x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.4451991796051" cy="427.6631617323082" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
98
98
  </g>
99
99
  <g>
100
- <circle data-type="point" data-label="" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="71.9568626609827" cy="217.33014662474903" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
100
+ <circle data-type="point" data-label="" data-x="-3.7005768910000008" data-y="1.4489565000000004" cx="57.56307623578783" cy="217.7151979959293" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
101
101
  </g>
102
102
  <g>
103
- <circle data-type="point" data-label="" data-x="-0.5005768910000006" data-y="1.4489565000000004" cx="284.5302284768321" cy="217.33014662474903" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
103
+ <circle data-type="point" data-label="" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="491.39205098433274" cy="217.7151979959293" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
104
104
  </g>
105
105
  <g>
106
- <circle data-type="point" data-label="" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="497.10359429268146" cy="217.33014662474903" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
106
+ <circle data-type="point" data-label="" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="71.55755929219254" cy="217.7151979959293" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
107
107
  </g>
108
108
  <g>
109
- <circle data-type="point" data-label="" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="71.9568626609827" cy="217.33014662474903" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
109
+ <circle data-type="point" data-label="" data-x="-3.7005768910000008" data-y="-1.5510434999999996" cx="57.56307623578783" cy="427.63244384199936" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
110
110
  </g>
111
111
  <g>
112
- <circle data-type="point" data-label="" data-x="-3.5005768910000006" data-y="-1.5510434999999996" cx="71.9568626609827" cy="429.90351244059843" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
112
+ <circle data-type="point" data-label="" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="351.527953333535" cy="217.7459158862381" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
113
113
  </g>
114
114
  <g>
115
- <circle data-type="point" data-label="" data-x="-0.5005768910000006" data-y="-1.5510434999999996" cx="284.5302284768321" cy="429.90351244059843" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
115
+ <circle data-type="point" data-label="" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="141.6107074874649" cy="427.6631617323082" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
116
116
  </g>
117
117
  <g>
118
- <circle data-type="point" data-label="" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="355.4697715231679" cy="217.36125319394677" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
118
+ <circle data-type="point" data-label="" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.4451991796051" cy="427.6631617323082" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
119
119
  </g>
120
120
  <g>
121
- <circle data-type="point" data-label="" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="142.8964057073185" cy="429.93461900979617" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
121
+ <circle data-type="point" data-label="" data-x="3.7760768910000007" data-y="1.4485175000000003" cx="580.7225995898025" cy="217.7459158862381" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
122
122
  </g>
123
123
  <g>
124
- <circle data-type="point" data-label="" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="568.0431373390173" cy="429.93461900979617" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
124
+ <circle data-type="point" data-label="" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="351.527953333535" cy="427.6631617323082" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
125
125
  </g>
126
126
  <g>
127
- <circle data-type="point" data-label="" data-x="3.5005768910000006" data-y="1.4485175000000003" cx="568.0431373390173" cy="217.36125319394677" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
127
+ <polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="71.55755929219254,217.7151979959293 281.47480513826264,217.7151979959293" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
128
128
  </g>
129
129
  <g>
130
- <circle data-type="point" data-label="" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="355.4697715231679" cy="429.93461900979617" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
130
+ <polyline data-points="-3.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="71.55755929219254,217.7151979959293 491.39205098433274,217.7151979959293" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
131
131
  </g>
132
132
  <g>
133
- <circle data-type="point" data-label="" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="568.0431373390173" cy="429.93461900979617" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
133
+ <polyline data-points="-0.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="281.47480513826264,217.7151979959293 491.39205098433274,217.7151979959293" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
134
134
  </g>
135
135
  <g>
136
- <polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="71.9568626609827,217.33014662474903 284.5302284768321,217.33014662474903" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
136
+ <polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="71.55755929219254,217.7151979959293 71.55755929219254,427.63244384199936" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
137
137
  </g>
138
138
  <g>
139
- <polyline data-points="-3.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="71.9568626609827,217.33014662474903 497.10359429268146,217.33014662474903" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
139
+ <polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="71.55755929219254,217.7151979959293 281.47480513826264,427.63244384199936" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
140
140
  </g>
141
141
  <g>
142
- <polyline data-points="-0.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="284.5302284768321,217.33014662474903 497.10359429268146,217.33014662474903" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
142
+ <polyline data-points="-3.5005768910000006,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="71.55755929219254,427.63244384199936 281.47480513826264,427.63244384199936" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
143
143
  </g>
144
144
  <g>
145
- <polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="71.9568626609827,217.33014662474903 71.9568626609827,429.90351244059843" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
145
+ <polyline data-points="0.5005768910000006,1.4485175000000003 -2.4994231089999994,-1.5514824999999997" data-type="line" data-label="" points="351.527953333535,217.7459158862381 141.6107074874649,427.6631617323082" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
146
146
  </g>
147
147
  <g>
148
- <polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="71.9568626609827,217.33014662474903 284.5302284768321,429.90351244059843" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
148
+ <polyline data-points="0.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="351.527953333535,217.7459158862381 561.4451991796051,427.6631617323082" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
149
149
  </g>
150
150
  <g>
151
- <polyline data-points="-3.5005768910000006,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="71.9568626609827,429.90351244059843 284.5302284768321,429.90351244059843" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
151
+ <polyline data-points="-2.4994231089999994,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="141.6107074874649,427.6631617323082 561.4451991796051,427.6631617323082" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
152
152
  </g>
153
153
  <g>
154
- <polyline data-points="0.5005768910000006,1.4485175000000003 -2.4994231089999994,-1.5514824999999997" data-type="line" data-label="" points="355.4697715231679,217.36125319394677 142.8964057073185,429.93461900979617" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
154
+ <polyline data-points="3.5005768910000006,1.4485175000000003 0.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.4451991796051,217.7459158862381 351.527953333535,427.6631617323082" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
155
155
  </g>
156
156
  <g>
157
- <polyline data-points="0.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="355.4697715231679,217.36125319394677 568.0431373390173,429.93461900979617" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
157
+ <polyline data-points="3.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.4451991796051,217.7459158862381 561.4451991796051,427.6631617323082" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
158
158
  </g>
159
159
  <g>
160
- <polyline data-points="-2.4994231089999994,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="142.8964057073185,429.93461900979617 568.0431373390173,429.93461900979617" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
160
+ <polyline data-points="0.5005768910000006,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="351.527953333535,427.6631617323082 561.4451991796051,427.6631617323082" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
161
161
  </g>
162
162
  <g>
163
- <polyline data-points="3.5005768910000006,1.4485175000000003 0.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="568.0431373390173,217.36125319394677 355.4697715231679,429.93461900979617" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
163
+ <polyline data-points="-3.5005768910000006,1.4489565000000004 -3.7005768910000008,1.4489565000000004 -3.7005768910000008,1.0753815000000009 -0.7005768910000008,1.0753815000000009 -0.7005768910000008,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="71.55755929219254,217.7151979959293 57.56307623578783,217.7151979959293 57.56307623578783,243.85514303491112 267.48032208185793,243.85514303491112 267.48032208185793,217.7151979959293 281.47480513826264,217.7151979959293" fill="none" stroke="purple" stroke-width="1" />
164
164
  </g>
165
165
  <g>
166
- <polyline data-points="3.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="568.0431373390173,217.36125319394677 568.0431373390173,429.93461900979617" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
166
+ <polyline data-points="-3.5005768910000006,-1.5510434999999996 -3.7005768910000008,-1.5510434999999996 -3.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="71.55755929219254,427.63244384199936 57.56307623578783,427.63244384199936 57.56307623578783,453.7723888809812 267.48032208185793,453.7723888809812 267.48032208185793,427.63244384199936 281.47480513826264,427.63244384199936" fill="none" stroke="purple" stroke-width="1" />
167
167
  </g>
168
168
  <g>
169
- <polyline data-points="0.5005768910000006,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="355.4697715231679,429.93461900979617 568.0431373390173,429.93461900979617" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
169
+ <polyline data-points="3.5005768910000006,1.4485175000000003 4.051576891000001,1.4485175000000003 4.051576891000001,-1.7514824999999998 3.7005768910000008,-1.7514824999999998 3.7005768910000008,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.4451991796051,217.7459158862381 600,217.7459158862381 600,441.6576447887129 575.4396822360097,441.6576447887129 575.4396822360097,427.6631617323082 561.4451991796051,427.6631617323082" fill="none" stroke="purple" stroke-width="1" />
170
170
  </g>
171
171
  <g>
172
- <rect data-type="rect" data-label="schematic_component_0" data-x="-3" data-y="1.5" x="71.9568626609827" y="197.79734690223955" width="70.93954304633581" height="31.831940379671494" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014112774610714288" />
172
+ <rect data-type="rect" data-label="schematic_component_0" data-x="-3" data-y="1.5" x="71.55755929219254" y="198.42646205445624" width="70.05314819527237" height="31.43419792405024" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014291346039285717" />
173
173
  </g>
174
174
  <g>
175
- <rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="1.5" x="284.5302284768321" y="197.79734690223955" width="70.93954304633576" height="31.831940379671494" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014112774610714288" />
175
+ <rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="1.5" x="281.47480513826264" y="198.42646205445624" width="70.05314819527234" height="31.43419792405024" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014291346039285717" />
176
176
  </g>
177
177
  <g>
178
- <rect data-type="rect" data-label="schematic_component_2" data-x="3" data-y="1.5" x="497.10359429268146" y="197.79734690223955" width="70.93954304633587" height="31.831940379671494" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014112774610714288" />
178
+ <rect data-type="rect" data-label="schematic_component_2" data-x="3" data-y="1.5" x="491.39205098433274" y="198.42646205445624" width="70.05314819527234" height="31.43419792405024" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014291346039285717" />
179
179
  </g>
180
180
  <g>
181
- <rect data-type="rect" data-label="schematic_component_3" data-x="-3" data-y="-1.5" x="71.9568626609827" y="410.37071271808895" width="70.93954304633581" height="31.831940379671494" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014112774610714288" />
181
+ <rect data-type="rect" data-label="schematic_component_3" data-x="-3" data-y="-1.5" x="71.55755929219254" y="408.34370790052634" width="70.05314819527237" height="31.43419792405024" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014291346039285717" />
182
182
  </g>
183
183
  <g>
184
- <rect data-type="rect" data-label="schematic_component_4" data-x="0" data-y="-1.5" x="284.5302284768321" y="410.37071271808895" width="70.93954304633576" height="31.831940379671494" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014112774610714288" />
184
+ <rect data-type="rect" data-label="schematic_component_4" data-x="0" data-y="-1.5" x="281.47480513826264" y="408.34370790052634" width="70.05314819527234" height="31.43419792405024" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014291346039285717" />
185
185
  </g>
186
186
  <g>
187
- <rect data-type="rect" data-label="schematic_component_5" data-x="3" data-y="-1.5" x="497.10359429268146" y="410.37071271808895" width="70.93954304633587" height="31.831940379671494" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014112774610714288" />
187
+ <rect data-type="rect" data-label="schematic_component_5" data-x="3" data-y="-1.5" x="491.39205098433274" y="408.34370790052634" width="70.05314819527234" height="31.43419792405024" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014291346039285717" />
188
188
  </g>
189
189
  <g>
190
- <rect data-type="rect" data-label="" data-x="-3.7265768910000006" data-y="1.4489565000000004" x="40" y="210.24436776422073" width="31.88600487237744" height="14.171557721056615" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014112774610714288" />
190
+ <rect data-type="rect" data-label="" data-x="-3.7005768910000008" data-y="1.6739565000000005" x="50.56583470758551" y="186.22761111901877" width="13.994483056404675" height="31.487586876910513" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014291346039285717" />
191
191
  </g>
192
192
  <g>
193
- <rect data-type="rect" data-label="" data-x="-0.7265768910000006" data-y="1.4489565000000004" x="252.5733658158494" y="210.24436776422073" width="31.88600487237744" height="14.171557721056615" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014112774610714288" />
193
+ <rect data-type="rect" data-label="" data-x="2.2734231089999994" data-y="1.4489565000000004" x="459.8344916921402" y="210.71795646772694" width="31.487586876910484" height="13.994483056404704" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014291346039285717" />
194
194
  </g>
195
195
  <g>
196
- <rect data-type="rect" data-label="" data-x="2.2734231089999994" data-y="1.4489565000000004" x="465.1467316316988" y="210.24436776422073" width="31.88600487237744" height="14.171557721056615" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014112774610714288" />
196
+ <rect data-type="rect" data-label="" data-x="-3.7265768910000006" data-y="1.4489565000000004" x="40" y="210.71795646772694" width="31.487586876910513" height="13.994483056404704" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014291346039285717" />
197
197
  </g>
198
198
  <g>
199
- <rect data-type="rect" data-label="" data-x="-3.7265768910000006" data-y="1.4489565000000004" x="40" y="210.24436776422073" width="31.88600487237744" height="14.171557721056615" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014112774610714288" />
199
+ <rect data-type="rect" data-label="" data-x="-3.7005768910000008" data-y="-1.3260434999999995" x="50.56583470758551" y="396.1448569650889" width="13.994483056404675" height="31.487586876910484" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014291346039285717" />
200
200
  </g>
201
201
  <g>
202
- <rect data-type="rect" data-label="" data-x="-3.7265768910000006" data-y="-1.5510434999999996" x="40" y="422.8177335800701" width="31.88600487237744" height="14.171557721056615" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014112774610714288" />
202
+ <rect data-type="rect" data-label="" data-x="0.7265768910000006" data-y="1.4485175000000003" x="351.59792574881703" y="210.74867435803577" width="31.487586876910484" height="13.994483056404675" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014291346039285717" />
203
203
  </g>
204
204
  <g>
205
- <rect data-type="rect" data-label="" data-x="-0.7265768910000006" data-y="-1.5510434999999996" x="252.5733658158494" y="422.8177335800701" width="31.88600487237744" height="14.171557721056615" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014112774610714288" />
205
+ <rect data-type="rect" data-label="" data-x="-2.2734231089999994" data-y="-1.5514824999999997" x="141.68067990274693" y="420.6659202041059" width="31.487586876910513" height="13.994483056404647" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014291346039285717" />
206
206
  </g>
207
207
  <g>
208
- <rect data-type="rect" data-label="" data-x="0.7265768910000006" data-y="1.4485175000000003" x="355.54062931177316" y="210.27547433341846" width="31.88600487237744" height="14.171557721056615" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014112774610714288" />
208
+ <rect data-type="rect" data-label="" data-x="3.7265768910000006" data-y="-1.5514824999999997" x="561.5151715948871" y="420.6659202041059" width="31.48758687691054" height="13.994483056404647" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014291346039285717" />
209
209
  </g>
210
210
  <g>
211
- <rect data-type="rect" data-label="" data-x="-2.2734231089999994" data-y="-1.5514824999999997" x="142.96726349592376" y="422.84884014926786" width="31.88600487237744" height="14.171557721056615" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014112774610714288" />
211
+ <rect data-type="rect" data-label="" data-x="3.7760768910000007" data-y="1.6735175000000004" x="573.7253580616002" y="186.25832900932758" width="13.994483056404647" height="31.487586876910513" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014291346039285717" />
212
212
  </g>
213
213
  <g>
214
- <rect data-type="rect" data-label="" data-x="3.7265768910000006" data-y="-1.5514824999999997" x="568.1139951276225" y="422.84884014926786" width="31.886004872377498" height="14.171557721056615" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014112774610714288" />
215
- </g>
216
- <g>
217
- <rect data-type="rect" data-label="" data-x="3.7265768910000006" data-y="1.4485175000000003" x="568.1139951276225" y="210.27547433341846" width="31.886004872377498" height="14.171557721056615" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014112774610714288" />
218
- </g>
219
- <g>
220
- <rect data-type="rect" data-label="" data-x="0.7265768910000006" data-y="-1.5514824999999997" x="355.54062931177316" y="422.84884014926786" width="31.88600487237744" height="14.171557721056615" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014112774610714288" />
221
- </g>
222
- <g>
223
- <rect data-type="rect" data-label="" data-x="3.7265768910000006" data-y="-1.5514824999999997" x="568.1139951276225" y="422.84884014926786" width="31.886004872377498" height="14.171557721056615" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014112774610714288" />
214
+ <rect data-type="rect" data-label="" data-x="0.7265768910000006" data-y="-1.5514824999999997" x="351.59792574881703" y="420.6659202041059" width="31.487586876910484" height="13.994483056404647" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014291346039285717" />
224
215
  </g>
225
216
  <g id="crosshair" style="display: none">
226
217
  <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
@@ -250,12 +241,12 @@ x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="568.04313733901
250
241
 
251
242
  // Calculate real coordinates using inverse transformation
252
243
  const matrix = {
253
- "a": 70.85778860528313,
244
+ "a": 69.97241528202336,
254
245
  "c": 0,
255
- "e": 320,
246
+ "e": 316.5013792358988,
256
247
  "b": 0,
257
- "d": -70.85778860528313,
258
- "f": 320
248
+ "d": -69.97241528202336,
249
+ "f": 319.1021839395164
259
250
  };
260
251
  // Manually invert and apply the affine transform
261
252
  // Since we only use translate and scale, we can directly compute: