@tscircuit/schematic-trace-solver 0.0.71 → 0.0.72
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.js +6 -5
- package/lib/solvers/TraceCleanupSolver/balanceZShapes.ts +25 -5
- package/package.json +1 -1
- package/tests/repros/__snapshots__/repro-ina237-current-monitor.snap.svg +570 -0
- package/tests/repros/assets/repro-ina237-current-monitor.input.json +321 -0
- package/tests/repros/repro-ina237-current-monitor.test.ts +19 -0
package/dist/index.js
CHANGED
|
@@ -4191,6 +4191,7 @@ var balanceZShapes = ({
|
|
|
4191
4191
|
throw new Error(`Target trace ${targetMspConnectionPairId} not found`);
|
|
4192
4192
|
}
|
|
4193
4193
|
const TOLERANCE = 1e-5;
|
|
4194
|
+
const coordsEqual = (a, b) => Math.abs(a - b) < TOLERANCE;
|
|
4194
4195
|
const obstacleTraces = traces.filter(
|
|
4195
4196
|
(t) => t.mspPairId !== targetMspConnectionPairId
|
|
4196
4197
|
);
|
|
@@ -4244,7 +4245,7 @@ var balanceZShapes = ({
|
|
|
4244
4245
|
const [p0, p1, p2, p3] = newPath;
|
|
4245
4246
|
let p1New;
|
|
4246
4247
|
let p2New;
|
|
4247
|
-
const isHVHShape = p0.y
|
|
4248
|
+
const isHVHShape = coordsEqual(p0.y, p1.y) && coordsEqual(p1.x, p2.x) && coordsEqual(p2.y, p3.y);
|
|
4248
4249
|
if (isHVHShape) {
|
|
4249
4250
|
const idealX = (p0.x + p3.x) / 2;
|
|
4250
4251
|
p1New = { x: idealX, y: p1.y };
|
|
@@ -4266,10 +4267,10 @@ var balanceZShapes = ({
|
|
|
4266
4267
|
const p2 = newPath[i + 1];
|
|
4267
4268
|
const p3 = newPath[i + 2];
|
|
4268
4269
|
const p4 = newPath[i + 3];
|
|
4269
|
-
const isHVHZShape = p1.y
|
|
4270
|
-
const isVHVZShape = p1.x
|
|
4271
|
-
const isCollinearHorizontal = p1.y
|
|
4272
|
-
const isCollinearVertical = p1.x
|
|
4270
|
+
const isHVHZShape = coordsEqual(p1.y, p2.y) && coordsEqual(p2.x, p3.x) && coordsEqual(p3.y, p4.y);
|
|
4271
|
+
const isVHVZShape = coordsEqual(p1.x, p2.x) && coordsEqual(p2.y, p3.y) && coordsEqual(p3.x, p4.x);
|
|
4272
|
+
const isCollinearHorizontal = coordsEqual(p1.y, p2.y) && coordsEqual(p2.y, p3.y) && coordsEqual(p3.y, p4.y);
|
|
4273
|
+
const isCollinearVertical = coordsEqual(p1.x, p2.x) && coordsEqual(p2.x, p3.x) && coordsEqual(p3.x, p4.x);
|
|
4273
4274
|
const isCollinear = isCollinearHorizontal || isCollinearVertical;
|
|
4274
4275
|
let isSameDirection = false;
|
|
4275
4276
|
if (isHVHZShape) {
|
|
@@ -31,6 +31,12 @@ export const balanceZShapes = ({
|
|
|
31
31
|
|
|
32
32
|
const TOLERANCE = 1e-5
|
|
33
33
|
|
|
34
|
+
// Axis-aligned segment classification must tolerate floating-point drift:
|
|
35
|
+
// coordinates that are "the same" can differ by a rounding epsilon (e.g. a
|
|
36
|
+
// vertical leg whose endpoints are 1.85 vs 1.8500000000000003). Strict `===`
|
|
37
|
+
// would misclassify such a Z-shape and "balance" it into diagonal segments.
|
|
38
|
+
const coordsEqual = (a: number, b: number) => Math.abs(a - b) < TOLERANCE
|
|
39
|
+
|
|
34
40
|
const obstacleTraces = traces.filter(
|
|
35
41
|
(t) => t.mspPairId !== targetMspConnectionPairId,
|
|
36
42
|
)
|
|
@@ -98,7 +104,10 @@ export const balanceZShapes = ({
|
|
|
98
104
|
let p1New: Point
|
|
99
105
|
let p2New: Point
|
|
100
106
|
|
|
101
|
-
const isHVHShape =
|
|
107
|
+
const isHVHShape =
|
|
108
|
+
coordsEqual(p0.y, p1.y) &&
|
|
109
|
+
coordsEqual(p1.x, p2.x) &&
|
|
110
|
+
coordsEqual(p2.y, p3.y)
|
|
102
111
|
|
|
103
112
|
if (isHVHShape) {
|
|
104
113
|
const idealX = (p0.x + p3.x) / 2
|
|
@@ -132,12 +141,23 @@ export const balanceZShapes = ({
|
|
|
132
141
|
const p3 = newPath[i + 2]!
|
|
133
142
|
const p4 = newPath[i + 3]!
|
|
134
143
|
|
|
135
|
-
const isHVHZShape =
|
|
136
|
-
|
|
144
|
+
const isHVHZShape =
|
|
145
|
+
coordsEqual(p1.y, p2.y) &&
|
|
146
|
+
coordsEqual(p2.x, p3.x) &&
|
|
147
|
+
coordsEqual(p3.y, p4.y)
|
|
148
|
+
const isVHVZShape =
|
|
149
|
+
coordsEqual(p1.x, p2.x) &&
|
|
150
|
+
coordsEqual(p2.y, p3.y) &&
|
|
151
|
+
coordsEqual(p3.x, p4.x)
|
|
137
152
|
|
|
138
153
|
const isCollinearHorizontal =
|
|
139
|
-
p1.y
|
|
140
|
-
|
|
154
|
+
coordsEqual(p1.y, p2.y) &&
|
|
155
|
+
coordsEqual(p2.y, p3.y) &&
|
|
156
|
+
coordsEqual(p3.y, p4.y)
|
|
157
|
+
const isCollinearVertical =
|
|
158
|
+
coordsEqual(p1.x, p2.x) &&
|
|
159
|
+
coordsEqual(p2.x, p3.x) &&
|
|
160
|
+
coordsEqual(p3.x, p4.x)
|
|
141
161
|
const isCollinear = isCollinearHorizontal || isCollinearVertical
|
|
142
162
|
|
|
143
163
|
let isSameDirection = false
|
package/package.json
CHANGED
|
@@ -0,0 +1,570 @@
|
|
|
1
|
+
<svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="100%" height="100%" fill="white" />
|
|
3
|
+
<g>
|
|
4
|
+
<circle data-type="point" data-label="U1.1
|
|
5
|
+
x+" data-x="1.65" data-y="0.42500000000000004" cx="435.12538302434456" cy="217.0711319737694" r="3" fill="hsl(319, 100%, 50%, 0.8)" />
|
|
6
|
+
</g>
|
|
7
|
+
<g>
|
|
8
|
+
<circle data-type="point" data-label="U1.2
|
|
9
|
+
x+" data-x="1.65" data-y="0.7749999999999999" cx="435.12538302434456" cy="200.58367027620386" r="3" fill="hsl(320, 100%, 50%, 0.8)" />
|
|
10
|
+
</g>
|
|
11
|
+
<g>
|
|
12
|
+
<circle data-type="point" data-label="U1.3
|
|
13
|
+
x+" data-x="1.65" data-y="-0.7749999999999999" cx="435.12538302434456" cy="273.5995720797084" r="3" fill="hsl(321, 100%, 50%, 0.8)" />
|
|
14
|
+
</g>
|
|
15
|
+
<g>
|
|
16
|
+
<circle data-type="point" data-label="U1.4
|
|
17
|
+
x+" data-x="1.65" data-y="-0.42499999999999993" cx="435.12538302434456" cy="257.1121103821429" r="3" fill="hsl(322, 100%, 50%, 0.8)" />
|
|
18
|
+
</g>
|
|
19
|
+
<g>
|
|
20
|
+
<circle data-type="point" data-label="U1.5
|
|
21
|
+
x+" data-x="1.65" data-y="-0.07499999999999996" cx="435.12538302434456" cy="240.62464868457732" r="3" fill="hsl(323, 100%, 50%, 0.8)" />
|
|
22
|
+
</g>
|
|
23
|
+
<g>
|
|
24
|
+
<circle data-type="point" data-label="U1.6
|
|
25
|
+
x-" data-x="-1.65" data-y="0.7" cx="279.67217273301225" cy="204.11669778282504" r="3" fill="hsl(324, 100%, 50%, 0.8)" />
|
|
26
|
+
</g>
|
|
27
|
+
<g>
|
|
28
|
+
<circle data-type="point" data-label="U1.7
|
|
29
|
+
x-" data-x="-1.65" data-y="-0.7" cx="279.67217273301225" cy="270.06654457308724" r="3" fill="hsl(325, 100%, 50%, 0.8)" />
|
|
30
|
+
</g>
|
|
31
|
+
<g>
|
|
32
|
+
<circle data-type="point" data-label="U1.8
|
|
33
|
+
x-" data-x="-1.65" data-y="0.35" cx="279.67217273301225" cy="220.6041594803906" r="3" fill="hsl(326, 100%, 50%, 0.8)" />
|
|
34
|
+
</g>
|
|
35
|
+
<g>
|
|
36
|
+
<circle data-type="point" data-label="U1.9
|
|
37
|
+
x-" data-x="-1.65" data-y="-0.3500000000000001" cx="279.67217273301225" cy="253.5790828755217" r="3" fill="hsl(327, 100%, 50%, 0.8)" />
|
|
38
|
+
</g>
|
|
39
|
+
<g>
|
|
40
|
+
<circle data-type="point" data-label="U1.10
|
|
41
|
+
x-" data-x="-1.65" data-y="-1.1102230246251565e-16" cx="279.67217273301225" cy="237.09162117795614" r="3" fill="hsl(217, 100%, 50%, 0.8)" />
|
|
42
|
+
</g>
|
|
43
|
+
<g>
|
|
44
|
+
<circle data-type="point" data-label="C1.1
|
|
45
|
+
y+" data-x="0.22500000000000064" data-y="-3.005" cx="367.997860398542" cy="378.64825660991175" r="3" fill="hsl(121, 100%, 50%, 0.8)" />
|
|
46
|
+
</g>
|
|
47
|
+
<g>
|
|
48
|
+
<circle data-type="point" data-label="C1.2
|
|
49
|
+
y-" data-x="0.22500000000000042" data-y="-4.105" cx="367.997860398542" cy="430.46599337368923" r="3" fill="hsl(122, 100%, 50%, 0.8)" />
|
|
50
|
+
</g>
|
|
51
|
+
<g>
|
|
52
|
+
<circle data-type="point" data-label="B1.1
|
|
53
|
+
y-" data-x="-2.5650000000000004" data-y="-2.505" cx="236.56923715223374" cy="355.09473989910384" r="3" fill="hsl(210, 100%, 50%, 0.8)" />
|
|
54
|
+
</g>
|
|
55
|
+
<g>
|
|
56
|
+
<circle data-type="point" data-label="B1.2
|
|
57
|
+
y+" data-x="-2.5650000000000004" data-y="-1.5549999999999997" cx="236.56923715223374" cy="310.3430581485688" r="3" fill="hsl(211, 100%, 50%, 0.8)" />
|
|
58
|
+
</g>
|
|
59
|
+
<g>
|
|
60
|
+
<circle data-type="point" data-label="R_SHUNT.1
|
|
61
|
+
x-" data-x="-3.96" data-y="0.03445534999999911" cx="170.85492552907965" cy="235.46853185395273" r="3" fill="hsl(44, 100%, 50%, 0.8)" />
|
|
62
|
+
</g>
|
|
63
|
+
<g>
|
|
64
|
+
<circle data-type="point" data-label="R_SHUNT.2
|
|
65
|
+
x+" data-x="-2.8599999999999994" data-y="0.03445534999999911" cx="222.6726622928571" cy="235.46853185395273" r="3" fill="hsl(45, 100%, 50%, 0.8)" />
|
|
66
|
+
</g>
|
|
67
|
+
<g>
|
|
68
|
+
<circle data-type="point" data-label="R_LOAD.1
|
|
69
|
+
y+" data-x="-4.32945535" data-y="-1.5599999999999996" cx="153.45098000883488" cy="310.5785933156768" r="3" fill="hsl(110, 100%, 50%, 0.8)" />
|
|
70
|
+
</g>
|
|
71
|
+
<g>
|
|
72
|
+
<circle data-type="point" data-label="R_LOAD.2
|
|
73
|
+
y-" data-x="-4.32945535" data-y="-2.66" cx="153.45098000883488" cy="362.3963300794543" r="3" fill="hsl(111, 100%, 50%, 0.8)" />
|
|
74
|
+
</g>
|
|
75
|
+
<g>
|
|
76
|
+
<circle data-type="point" data-label="CHARGER.1
|
|
77
|
+
y-" data-x="-6.323366049999999" data-y="-2.2738180812500004" cx="59.52376202421749" cy="344.2044455260743" r="3" fill="hsl(153, 100%, 50%, 0.8)" />
|
|
78
|
+
</g>
|
|
79
|
+
<g>
|
|
80
|
+
<circle data-type="point" data-label="CHARGER.2
|
|
81
|
+
y+" data-x="-6.333366049999999" data-y="-1.1938180812500003" cx="59.052691690001325" cy="293.3288494307292" r="3" fill="hsl(154, 100%, 50%, 0.8)" />
|
|
82
|
+
</g>
|
|
83
|
+
<g>
|
|
84
|
+
<circle data-type="point" data-label="R1.1
|
|
85
|
+
y+" data-x="0.4555446500000012" data-y="-5.315" cx="378.85813493126676" cy="487.4655038138444" r="3" fill="hsl(226, 100%, 50%, 0.8)" />
|
|
86
|
+
</g>
|
|
87
|
+
<g>
|
|
88
|
+
<circle data-type="point" data-label="R1.2
|
|
89
|
+
y-" data-x="0.455544650000001" data-y="-6.415" cx="378.85813493126676" cy="539.2832405776218" r="3" fill="hsl(227, 100%, 50%, 0.8)" />
|
|
90
|
+
</g>
|
|
91
|
+
<g>
|
|
92
|
+
<circle data-type="point" data-label="R2.1
|
|
93
|
+
y+" data-x="3.244455349999999" data-y="0.32499999999999984" cx="510.2354444860687" cy="221.781835315931" r="3" fill="hsl(107, 100%, 50%, 0.8)" />
|
|
94
|
+
</g>
|
|
95
|
+
<g>
|
|
96
|
+
<circle data-type="point" data-label="R2.2
|
|
97
|
+
y-" data-x="3.244455349999999" data-y="-0.7750000000000002" cx="510.2354444860687" cy="273.5995720797084" r="3" fill="hsl(108, 100%, 50%, 0.8)" />
|
|
98
|
+
</g>
|
|
99
|
+
<g>
|
|
100
|
+
<circle data-type="point" data-label="R3.1
|
|
101
|
+
y+" data-x="2.8394553499999997" data-y="2.7350000000000003" cx="491.15709595031433" cy="108.25388476983679" r="3" fill="hsl(348, 100%, 50%, 0.8)" />
|
|
102
|
+
</g>
|
|
103
|
+
<g>
|
|
104
|
+
<circle data-type="point" data-label="R3.2
|
|
105
|
+
y-" data-x="2.8394553499999997" data-y="1.6349999999999998" cx="491.15709595031433" cy="160.07162153361423" r="3" fill="hsl(349, 100%, 50%, 0.8)" />
|
|
106
|
+
</g>
|
|
107
|
+
<g>
|
|
108
|
+
<circle data-type="point" data-label="J1.1
|
|
109
|
+
x-" data-x="2.0500000000000003" data-y="-3.4050000000000002" cx="453.9681963929909" cy="397.49106997855813" r="3" fill="hsl(218, 100%, 50%, 0.8)" />
|
|
110
|
+
</g>
|
|
111
|
+
<g>
|
|
112
|
+
<circle data-type="point" data-label="J1.2
|
|
113
|
+
x-" data-x="2.0500000000000003" data-y="-3.605" cx="453.9681963929909" cy="406.91247666288126" r="3" fill="hsl(219, 100%, 50%, 0.8)" />
|
|
114
|
+
</g>
|
|
115
|
+
<g>
|
|
116
|
+
<circle data-type="point" data-label="J1.3
|
|
117
|
+
x-" data-x="2.0500000000000003" data-y="-4.055" cx="453.9681963929909" cy="428.1106417026084" r="3" fill="hsl(220, 100%, 50%, 0.8)" />
|
|
118
|
+
</g>
|
|
119
|
+
<g>
|
|
120
|
+
<circle data-type="point" data-label="J1.4
|
|
121
|
+
x-" data-x="2.0500000000000003" data-y="-4.255" cx="453.9681963929909" cy="437.5320483869316" r="3" fill="hsl(221, 100%, 50%, 0.8)" />
|
|
122
|
+
</g>
|
|
123
|
+
<g>
|
|
124
|
+
<circle data-type="point" data-label="anchorPoint
|
|
125
|
+
orientation: y+" data-x="1.8499999999999999" data-y="0.7749999999999999" cx="444.5467897086677" cy="200.58367027620386" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
126
|
+
</g>
|
|
127
|
+
<g>
|
|
128
|
+
<circle data-type="point" data-label="anchorPoint
|
|
129
|
+
orientation: y-" data-x="-1.751" data-y="-1.401" cx="274.91436235742907" cy="303.0885750016399" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
130
|
+
</g>
|
|
131
|
+
<g>
|
|
132
|
+
<circle data-type="point" data-label="anchorPoint
|
|
133
|
+
orientation: y-" data-x="1.1375000000000002" data-y="-4.255" cx="410.98302839576644" cy="437.5320483869316" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
134
|
+
</g>
|
|
135
|
+
<g>
|
|
136
|
+
<circle data-type="point" data-label="anchorPoint
|
|
137
|
+
orientation: y-" data-x="-6.323366049999999" data-y="-2.86" cx="59.52376202421749" cy="371.8177367637775" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
138
|
+
</g>
|
|
139
|
+
<g>
|
|
140
|
+
<circle data-type="point" data-label="anchorPoint
|
|
141
|
+
orientation: x-" data-x="1.85" data-y="-2.415" cx="444.5467897086677" cy="350.8551068911584" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
142
|
+
</g>
|
|
143
|
+
<g>
|
|
144
|
+
<circle data-type="point" data-label="anchorPoint
|
|
145
|
+
orientation: y-" data-x="2.8394553499999997" data-y="1.6349999999999998" cx="491.15709595031433" cy="160.07162153361423" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
146
|
+
</g>
|
|
147
|
+
<g>
|
|
148
|
+
<circle data-type="point" data-label="anchorPoint
|
|
149
|
+
orientation: x+" data-x="2.4472276749999997" data-y="-0.42499999999999993" cx="472.68041375520664" cy="257.1121103821429" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
150
|
+
</g>
|
|
151
|
+
<g>
|
|
152
|
+
<circle data-type="point" data-label="anchorPoint
|
|
153
|
+
orientation: x-" data-x="2.0500000000000003" data-y="-3.605" cx="453.9681963929909" cy="406.91247666288126" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
154
|
+
</g>
|
|
155
|
+
<g>
|
|
156
|
+
<circle data-type="point" data-label="anchorPoint
|
|
157
|
+
orientation: x+" data-x="1.65" data-y="-0.07499999999999996" cx="435.12538302434456" cy="240.62464868457732" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
158
|
+
</g>
|
|
159
|
+
<g>
|
|
160
|
+
<circle data-type="point" data-label="anchorPoint
|
|
161
|
+
orientation: x-" data-x="0.254544650000001" data-y="-6.516" cx="369.38962121352193" cy="544.0410509532051" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
162
|
+
</g>
|
|
163
|
+
<g>
|
|
164
|
+
<circle data-type="point" data-label="anchorPoint
|
|
165
|
+
orientation: x-" data-x="2.0500000000000003" data-y="-3.4050000000000002" cx="453.9681963929909" cy="397.49106997855813" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
166
|
+
</g>
|
|
167
|
+
<g>
|
|
168
|
+
<circle data-type="point" data-label="anchorPoint
|
|
169
|
+
orientation: y+" data-x="-1.8499999999999999" data-y="1.5999999999999999" cx="270.2507660486891" cy="161.7203677033708" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
170
|
+
</g>
|
|
171
|
+
<g>
|
|
172
|
+
<circle data-type="point" data-label="anchorPoint
|
|
173
|
+
orientation: y+" data-x="0.22500000000000064" data-y="-3.005" cx="367.997860398542" cy="378.64825660991175" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
174
|
+
</g>
|
|
175
|
+
<g>
|
|
176
|
+
<circle data-type="point" data-label="anchorPoint
|
|
177
|
+
orientation: y+" data-x="0.4555446500000012" data-y="-5.315" cx="378.85813493126676" cy="487.4655038138444" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
178
|
+
</g>
|
|
179
|
+
<g>
|
|
180
|
+
<circle data-type="point" data-label="anchorPoint
|
|
181
|
+
orientation: y+" data-x="2.8394553499999997" data-y="2.7350000000000003" cx="491.15709595031433" cy="108.25388476983679" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
182
|
+
</g>
|
|
183
|
+
<g>
|
|
184
|
+
<circle data-type="point" data-label="anchorPoint
|
|
185
|
+
orientation: x-" data-x="-2.5650000000000004" data-y="-1.1576361625" cx="236.56923715223374" cy="291.62442657491476" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
186
|
+
</g>
|
|
187
|
+
<g>
|
|
188
|
+
<circle data-type="point" data-label="anchorPoint
|
|
189
|
+
orientation: y+" data-x="-1.9525" data-y="-0.3500000000000001" cx="265.4222951229735" cy="253.5790828755217" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
190
|
+
</g>
|
|
191
|
+
<g>
|
|
192
|
+
<circle data-type="point" data-label="anchorPoint
|
|
193
|
+
orientation: x-" data-x="-4.32945535" data-y="-1.276909040625" cx="153.45098000883488" cy="297.24301803104146" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
|
|
194
|
+
</g>
|
|
195
|
+
<g>
|
|
196
|
+
<polyline data-points="1.65,0.42500000000000004 1.65,0.7749999999999999" data-type="line" data-label="" points="435.12538302434456,217.0711319737694 435.12538302434456,200.58367027620386" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
197
|
+
</g>
|
|
198
|
+
<g>
|
|
199
|
+
<polyline data-points="1.65,0.42500000000000004 -1.65,-0.7" data-type="line" data-label="" points="435.12538302434456,217.0711319737694 279.67217273301225,270.06654457308724" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
200
|
+
</g>
|
|
201
|
+
<g>
|
|
202
|
+
<polyline data-points="1.65,0.42500000000000004 0.22500000000000042,-4.105" data-type="line" data-label="" points="435.12538302434456,217.0711319737694 367.997860398542,430.46599337368923" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
203
|
+
</g>
|
|
204
|
+
<g>
|
|
205
|
+
<polyline data-points="1.65,0.42500000000000004 -2.5650000000000004,-2.505" data-type="line" data-label="" points="435.12538302434456,217.0711319737694 236.56923715223374,355.09473989910384" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
206
|
+
</g>
|
|
207
|
+
<g>
|
|
208
|
+
<polyline data-points="1.65,0.42500000000000004 -4.32945535,-2.66" data-type="line" data-label="" points="435.12538302434456,217.0711319737694 153.45098000883488,362.3963300794543" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
209
|
+
</g>
|
|
210
|
+
<g>
|
|
211
|
+
<polyline data-points="1.65,0.42500000000000004 -6.323366049999999,-2.2738180812500004" data-type="line" data-label="" points="435.12538302434456,217.0711319737694 59.52376202421749,344.2044455260743" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
212
|
+
</g>
|
|
213
|
+
<g>
|
|
214
|
+
<polyline data-points="1.65,0.42500000000000004 2.0500000000000003,-4.255" data-type="line" data-label="" points="435.12538302434456,217.0711319737694 453.9681963929909,437.5320483869316" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
215
|
+
</g>
|
|
216
|
+
<g>
|
|
217
|
+
<polyline data-points="1.65,0.7749999999999999 -1.65,-0.7" data-type="line" data-label="" points="435.12538302434456,200.58367027620386 279.67217273301225,270.06654457308724" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
218
|
+
</g>
|
|
219
|
+
<g>
|
|
220
|
+
<polyline data-points="1.65,0.7749999999999999 0.22500000000000042,-4.105" data-type="line" data-label="" points="435.12538302434456,200.58367027620386 367.997860398542,430.46599337368923" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
221
|
+
</g>
|
|
222
|
+
<g>
|
|
223
|
+
<polyline data-points="1.65,0.7749999999999999 -2.5650000000000004,-2.505" data-type="line" data-label="" points="435.12538302434456,200.58367027620386 236.56923715223374,355.09473989910384" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
224
|
+
</g>
|
|
225
|
+
<g>
|
|
226
|
+
<polyline data-points="1.65,0.7749999999999999 -4.32945535,-2.66" data-type="line" data-label="" points="435.12538302434456,200.58367027620386 153.45098000883488,362.3963300794543" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
227
|
+
</g>
|
|
228
|
+
<g>
|
|
229
|
+
<polyline data-points="1.65,0.7749999999999999 -6.323366049999999,-2.2738180812500004" data-type="line" data-label="" points="435.12538302434456,200.58367027620386 59.52376202421749,344.2044455260743" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
230
|
+
</g>
|
|
231
|
+
<g>
|
|
232
|
+
<polyline data-points="1.65,0.7749999999999999 2.0500000000000003,-4.255" data-type="line" data-label="" points="435.12538302434456,200.58367027620386 453.9681963929909,437.5320483869316" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
233
|
+
</g>
|
|
234
|
+
<g>
|
|
235
|
+
<polyline data-points="-1.65,-0.7 0.22500000000000042,-4.105" data-type="line" data-label="" points="279.67217273301225,270.06654457308724 367.997860398542,430.46599337368923" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
236
|
+
</g>
|
|
237
|
+
<g>
|
|
238
|
+
<polyline data-points="-1.65,-0.7 -2.5650000000000004,-2.505" data-type="line" data-label="" points="279.67217273301225,270.06654457308724 236.56923715223374,355.09473989910384" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
239
|
+
</g>
|
|
240
|
+
<g>
|
|
241
|
+
<polyline data-points="-1.65,-0.7 -4.32945535,-2.66" data-type="line" data-label="" points="279.67217273301225,270.06654457308724 153.45098000883488,362.3963300794543" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
242
|
+
</g>
|
|
243
|
+
<g>
|
|
244
|
+
<polyline data-points="-1.65,-0.7 -6.323366049999999,-2.2738180812500004" data-type="line" data-label="" points="279.67217273301225,270.06654457308724 59.52376202421749,344.2044455260743" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
245
|
+
</g>
|
|
246
|
+
<g>
|
|
247
|
+
<polyline data-points="-1.65,-0.7 2.0500000000000003,-4.255" data-type="line" data-label="" points="279.67217273301225,270.06654457308724 453.9681963929909,437.5320483869316" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
248
|
+
</g>
|
|
249
|
+
<g>
|
|
250
|
+
<polyline data-points="0.22500000000000042,-4.105 -2.5650000000000004,-2.505" data-type="line" data-label="" points="367.997860398542,430.46599337368923 236.56923715223374,355.09473989910384" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
251
|
+
</g>
|
|
252
|
+
<g>
|
|
253
|
+
<polyline data-points="0.22500000000000042,-4.105 -4.32945535,-2.66" data-type="line" data-label="" points="367.997860398542,430.46599337368923 153.45098000883488,362.3963300794543" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
254
|
+
</g>
|
|
255
|
+
<g>
|
|
256
|
+
<polyline data-points="0.22500000000000042,-4.105 -6.323366049999999,-2.2738180812500004" data-type="line" data-label="" points="367.997860398542,430.46599337368923 59.52376202421749,344.2044455260743" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
257
|
+
</g>
|
|
258
|
+
<g>
|
|
259
|
+
<polyline data-points="0.22500000000000042,-4.105 2.0500000000000003,-4.255" data-type="line" data-label="" points="367.997860398542,430.46599337368923 453.9681963929909,437.5320483869316" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
260
|
+
</g>
|
|
261
|
+
<g>
|
|
262
|
+
<polyline data-points="-2.5650000000000004,-2.505 -4.32945535,-2.66" data-type="line" data-label="" points="236.56923715223374,355.09473989910384 153.45098000883488,362.3963300794543" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
263
|
+
</g>
|
|
264
|
+
<g>
|
|
265
|
+
<polyline data-points="-2.5650000000000004,-2.505 -6.323366049999999,-2.2738180812500004" data-type="line" data-label="" points="236.56923715223374,355.09473989910384 59.52376202421749,344.2044455260743" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
266
|
+
</g>
|
|
267
|
+
<g>
|
|
268
|
+
<polyline data-points="-2.5650000000000004,-2.505 2.0500000000000003,-4.255" data-type="line" data-label="" points="236.56923715223374,355.09473989910384 453.9681963929909,437.5320483869316" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
269
|
+
</g>
|
|
270
|
+
<g>
|
|
271
|
+
<polyline data-points="-4.32945535,-2.66 -6.323366049999999,-2.2738180812500004" data-type="line" data-label="" points="153.45098000883488,362.3963300794543 59.52376202421749,344.2044455260743" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
272
|
+
</g>
|
|
273
|
+
<g>
|
|
274
|
+
<polyline data-points="-4.32945535,-2.66 2.0500000000000003,-4.255" data-type="line" data-label="" points="153.45098000883488,362.3963300794543 453.9681963929909,437.5320483869316" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
275
|
+
</g>
|
|
276
|
+
<g>
|
|
277
|
+
<polyline data-points="-6.323366049999999,-2.2738180812500004 2.0500000000000003,-4.255" data-type="line" data-label="" points="59.52376202421749,344.2044455260743 453.9681963929909,437.5320483869316" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
278
|
+
</g>
|
|
279
|
+
<g>
|
|
280
|
+
<polyline data-points="1.65,-0.7749999999999999 2.8394553499999997,1.6349999999999998" data-type="line" data-label="" points="435.12538302434456,273.5995720797084 491.15709595031433,160.07162153361423" fill="none" stroke="hsl(219, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
281
|
+
</g>
|
|
282
|
+
<g>
|
|
283
|
+
<polyline data-points="1.65,-0.7749999999999999 2.0500000000000003,-4.055" data-type="line" data-label="" points="435.12538302434456,273.5995720797084 453.9681963929909,428.1106417026084" fill="none" stroke="hsl(219, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
284
|
+
</g>
|
|
285
|
+
<g>
|
|
286
|
+
<polyline data-points="2.8394553499999997,1.6349999999999998 2.0500000000000003,-4.055" data-type="line" data-label="" points="491.15709595031433,160.07162153361423 453.9681963929909,428.1106417026084" fill="none" stroke="hsl(219, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
287
|
+
</g>
|
|
288
|
+
<g>
|
|
289
|
+
<polyline data-points="1.65,-0.42499999999999993 3.244455349999999,-0.7750000000000002" data-type="line" data-label="" points="435.12538302434456,257.1121103821429 510.2354444860687,273.5995720797084" fill="none" stroke="hsl(216, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
290
|
+
</g>
|
|
291
|
+
<g>
|
|
292
|
+
<polyline data-points="1.65,-0.42499999999999993 2.0500000000000003,-3.605" data-type="line" data-label="" points="435.12538302434456,257.1121103821429 453.9681963929909,406.91247666288126" fill="none" stroke="hsl(216, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
293
|
+
</g>
|
|
294
|
+
<g>
|
|
295
|
+
<polyline data-points="3.244455349999999,-0.7750000000000002 2.0500000000000003,-3.605" data-type="line" data-label="" points="510.2354444860687,273.5995720797084 453.9681963929909,406.91247666288126" fill="none" stroke="hsl(216, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
296
|
+
</g>
|
|
297
|
+
<g>
|
|
298
|
+
<polyline data-points="1.65,-0.07499999999999996 0.455544650000001,-6.415" data-type="line" data-label="" points="435.12538302434456,240.62464868457732 378.85813493126676,539.2832405776218" fill="none" stroke="hsl(196, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
299
|
+
</g>
|
|
300
|
+
<g>
|
|
301
|
+
<polyline data-points="1.65,-0.07499999999999996 2.0500000000000003,-3.4050000000000002" data-type="line" data-label="" points="435.12538302434456,240.62464868457732 453.9681963929909,397.49106997855813" fill="none" stroke="hsl(196, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
302
|
+
</g>
|
|
303
|
+
<g>
|
|
304
|
+
<polyline data-points="0.455544650000001,-6.415 2.0500000000000003,-3.4050000000000002" data-type="line" data-label="" points="378.85813493126676,539.2832405776218 453.9681963929909,397.49106997855813" fill="none" stroke="hsl(196, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
305
|
+
</g>
|
|
306
|
+
<g>
|
|
307
|
+
<polyline data-points="-1.65,0.7 0.22500000000000064,-3.005" data-type="line" data-label="" points="279.67217273301225,204.11669778282504 367.997860398542,378.64825660991175" fill="none" stroke="hsl(229, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
308
|
+
</g>
|
|
309
|
+
<g>
|
|
310
|
+
<polyline data-points="-1.65,0.7 0.4555446500000012,-5.315" data-type="line" data-label="" points="279.67217273301225,204.11669778282504 378.85813493126676,487.4655038138444" fill="none" stroke="hsl(229, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
311
|
+
</g>
|
|
312
|
+
<g>
|
|
313
|
+
<polyline data-points="-1.65,0.7 3.244455349999999,0.32499999999999984" data-type="line" data-label="" points="279.67217273301225,204.11669778282504 510.2354444860687,221.781835315931" fill="none" stroke="hsl(229, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
314
|
+
</g>
|
|
315
|
+
<g>
|
|
316
|
+
<polyline data-points="-1.65,0.7 2.8394553499999997,2.7350000000000003" data-type="line" data-label="" points="279.67217273301225,204.11669778282504 491.15709595031433,108.25388476983679" fill="none" stroke="hsl(229, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
317
|
+
</g>
|
|
318
|
+
<g>
|
|
319
|
+
<polyline data-points="0.22500000000000064,-3.005 0.4555446500000012,-5.315" data-type="line" data-label="" points="367.997860398542,378.64825660991175 378.85813493126676,487.4655038138444" fill="none" stroke="hsl(229, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
320
|
+
</g>
|
|
321
|
+
<g>
|
|
322
|
+
<polyline data-points="0.22500000000000064,-3.005 3.244455349999999,0.32499999999999984" data-type="line" data-label="" points="367.997860398542,378.64825660991175 510.2354444860687,221.781835315931" fill="none" stroke="hsl(229, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
323
|
+
</g>
|
|
324
|
+
<g>
|
|
325
|
+
<polyline data-points="0.22500000000000064,-3.005 2.8394553499999997,2.7350000000000003" data-type="line" data-label="" points="367.997860398542,378.64825660991175 491.15709595031433,108.25388476983679" fill="none" stroke="hsl(229, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
326
|
+
</g>
|
|
327
|
+
<g>
|
|
328
|
+
<polyline data-points="0.4555446500000012,-5.315 3.244455349999999,0.32499999999999984" data-type="line" data-label="" points="378.85813493126676,487.4655038138444 510.2354444860687,221.781835315931" fill="none" stroke="hsl(229, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
329
|
+
</g>
|
|
330
|
+
<g>
|
|
331
|
+
<polyline data-points="0.4555446500000012,-5.315 2.8394553499999997,2.7350000000000003" data-type="line" data-label="" points="378.85813493126676,487.4655038138444 491.15709595031433,108.25388476983679" fill="none" stroke="hsl(229, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
332
|
+
</g>
|
|
333
|
+
<g>
|
|
334
|
+
<polyline data-points="3.244455349999999,0.32499999999999984 2.8394553499999997,2.7350000000000003" data-type="line" data-label="" points="510.2354444860687,221.781835315931 491.15709595031433,108.25388476983679" fill="none" stroke="hsl(229, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
335
|
+
</g>
|
|
336
|
+
<g>
|
|
337
|
+
<polyline data-points="-1.65,0.35 -1.65,-1.1102230246251565e-16" data-type="line" data-label="" points="279.67217273301225,220.6041594803906 279.67217273301225,237.09162117795614" fill="none" stroke="hsl(17, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
338
|
+
</g>
|
|
339
|
+
<g>
|
|
340
|
+
<polyline data-points="-1.65,0.35 -2.5650000000000004,-1.5549999999999997" data-type="line" data-label="" points="279.67217273301225,220.6041594803906 236.56923715223374,310.3430581485688" fill="none" stroke="hsl(17, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
341
|
+
</g>
|
|
342
|
+
<g>
|
|
343
|
+
<polyline data-points="-1.65,0.35 -3.96,0.03445534999999911" data-type="line" data-label="" points="279.67217273301225,220.6041594803906 170.85492552907965,235.46853185395273" fill="none" stroke="hsl(17, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
344
|
+
</g>
|
|
345
|
+
<g>
|
|
346
|
+
<polyline data-points="-1.65,-1.1102230246251565e-16 -2.5650000000000004,-1.5549999999999997" data-type="line" data-label="" points="279.67217273301225,237.09162117795614 236.56923715223374,310.3430581485688" fill="none" stroke="hsl(17, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
347
|
+
</g>
|
|
348
|
+
<g>
|
|
349
|
+
<polyline data-points="-1.65,-1.1102230246251565e-16 -3.96,0.03445534999999911" data-type="line" data-label="" points="279.67217273301225,237.09162117795614 170.85492552907965,235.46853185395273" fill="none" stroke="hsl(17, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
350
|
+
</g>
|
|
351
|
+
<g>
|
|
352
|
+
<polyline data-points="-2.5650000000000004,-1.5549999999999997 -3.96,0.03445534999999911" data-type="line" data-label="" points="236.56923715223374,310.3430581485688 170.85492552907965,235.46853185395273" fill="none" stroke="hsl(17, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
353
|
+
</g>
|
|
354
|
+
<g>
|
|
355
|
+
<polyline data-points="-1.65,-0.3500000000000001 -2.8599999999999994,0.03445534999999911" data-type="line" data-label="" points="279.67217273301225,253.5790828755217 222.6726622928571,235.46853185395273" fill="none" stroke="hsl(320, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
356
|
+
</g>
|
|
357
|
+
<g>
|
|
358
|
+
<polyline data-points="-1.65,-0.3500000000000001 -4.32945535,-1.5599999999999996" data-type="line" data-label="" points="279.67217273301225,253.5790828755217 153.45098000883488,310.5785933156768" fill="none" stroke="hsl(320, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
359
|
+
</g>
|
|
360
|
+
<g>
|
|
361
|
+
<polyline data-points="-1.65,-0.3500000000000001 -6.333366049999999,-1.1938180812500003" data-type="line" data-label="" points="279.67217273301225,253.5790828755217 59.052691690001325,293.3288494307292" fill="none" stroke="hsl(320, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
362
|
+
</g>
|
|
363
|
+
<g>
|
|
364
|
+
<polyline data-points="-2.8599999999999994,0.03445534999999911 -4.32945535,-1.5599999999999996" data-type="line" data-label="" points="222.6726622928571,235.46853185395273 153.45098000883488,310.5785933156768" fill="none" stroke="hsl(320, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
365
|
+
</g>
|
|
366
|
+
<g>
|
|
367
|
+
<polyline data-points="-2.8599999999999994,0.03445534999999911 -6.333366049999999,-1.1938180812500003" data-type="line" data-label="" points="222.6726622928571,235.46853185395273 59.052691690001325,293.3288494307292" fill="none" stroke="hsl(320, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
368
|
+
</g>
|
|
369
|
+
<g>
|
|
370
|
+
<polyline data-points="-4.32945535,-1.5599999999999996 -6.333366049999999,-1.1938180812500003" data-type="line" data-label="" points="153.45098000883488,310.5785933156768 59.052691690001325,293.3288494307292" fill="none" stroke="hsl(320, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
|
|
371
|
+
</g>
|
|
372
|
+
<g>
|
|
373
|
+
<polyline data-points="-4.32945535,-2.66 -4.32945535,-2.8600000000000003 -2.5650000000000004,-2.8600000000000003 -2.5650000000000004,-2.505" data-type="line" data-label="" points="153.45098000883488,362.3963300794543 153.45098000883488,371.8177367637775 236.56923715223374,371.8177367637775 236.56923715223374,355.09473989910384" fill="none" stroke="purple" stroke-width="1" />
|
|
374
|
+
</g>
|
|
375
|
+
<g>
|
|
376
|
+
<polyline data-points="-6.323366049999999,-2.2738180812500004 -6.323366049999999,-2.86 -4.32945535,-2.86 -4.32945535,-2.6599999999999997" data-type="line" data-label="" points="59.52376202421749,344.2044455260743 59.52376202421749,371.8177367637775 153.45098000883488,371.8177367637775 153.45098000883488,362.3963300794543" fill="none" stroke="purple" stroke-width="1" />
|
|
377
|
+
</g>
|
|
378
|
+
<g>
|
|
379
|
+
<polyline data-points="2.05,-4.255 0.22500000000000042,-4.255 0.22500000000000042,-4.105" data-type="line" data-label="" points="453.9681963929909,437.5320483869316 367.997860398542,437.5320483869316 367.997860398542,430.46599337368923" fill="none" stroke="purple" stroke-width="1" />
|
|
380
|
+
</g>
|
|
381
|
+
<g>
|
|
382
|
+
<polyline data-points="1.65,0.7749999999999999 1.8499999999999999,0.7749999999999999 1.8499999999999999,0.42500000000000004 1.65,0.42500000000000004" data-type="line" data-label="" points="435.12538302434456,200.58367027620386 444.5467897086677,200.58367027620386 444.5467897086677,217.0711319737694 435.12538302434456,217.0711319737694" fill="none" stroke="purple" stroke-width="1" />
|
|
383
|
+
</g>
|
|
384
|
+
<g>
|
|
385
|
+
<polyline data-points="1.65,-0.42499999999999993 2.4472276749999997,-0.42499999999999993 2.4472276749999997,-0.9750000000000003 3.244455349999999,-0.9750000000000003 3.244455349999999,-0.7750000000000002" data-type="line" data-label="" points="435.12538302434456,257.1121103821429 472.68041375520664,257.1121103821429 472.68041375520664,283.0209787640316 510.2354444860687,283.0209787640316 510.2354444860687,273.5995720797084" fill="none" stroke="purple" stroke-width="1" />
|
|
386
|
+
</g>
|
|
387
|
+
<g>
|
|
388
|
+
<polyline data-points="-1.65,0.35 -1.8499999999999999,0.35 -1.8499999999999999,-1.1102230246251565e-16 -1.65,-1.1102230246251565e-16" data-type="line" data-label="" points="279.67217273301225,220.6041594803906 270.2507660486891,220.6041594803906 270.2507660486891,237.09162117795614 279.67217273301225,237.09162117795614" fill="none" stroke="purple" stroke-width="1" />
|
|
389
|
+
</g>
|
|
390
|
+
<g>
|
|
391
|
+
<polyline data-points="-4.32945535,-1.56 -4.32945535,-0.9938180812500002 -6.333366049999999,-0.9938180812500002 -6.333366049999999,-1.1938180812500003" data-type="line" data-label="" points="153.45098000883488,310.57859331567687 153.45098000883488,283.90744274640605 59.052691690001325,283.90744274640605 59.052691690001325,293.3288494307292" fill="none" stroke="purple" stroke-width="1" />
|
|
392
|
+
</g>
|
|
393
|
+
<g>
|
|
394
|
+
<polyline data-points="-1.65,-0.3500000000000001 -2.255,-0.3500000000000001 -2.255,0.03445534999999911 -2.8599999999999994,0.03445534999999911" data-type="line" data-label="" points="279.67217273301225,253.5790828755217 251.17241751293466,253.5790828755217 251.17241751293466,235.46853185395273 222.6726622928571,235.46853185395273" fill="none" stroke="purple" stroke-width="1" />
|
|
395
|
+
</g>
|
|
396
|
+
<g>
|
|
397
|
+
<polyline data-points="-2.5650000000000004,-1.5549999999999997 -2.5650000000000004,-0.7602723250000003 -4.16,-0.7602723250000003 -4.16,0.03445534999999911 -3.96,0.03445534999999911" data-type="line" data-label="" points="236.56923715223374,310.3430581485688 236.56923715223374,272.90579500126074 161.43351884475646,272.90579500126074 161.43351884475646,235.46853185395273 170.85492552907965,235.46853185395273" fill="none" stroke="purple" stroke-width="1" />
|
|
398
|
+
</g>
|
|
399
|
+
<g>
|
|
400
|
+
<polyline data-points="1.65,-0.7749999999999999 1.85,-0.7749999999999999 1.85,-3.2049999999999996 1.4690000000000003,-3.2049999999999996 1.4690000000000003,-3.805 1.8500000000000003,-3.805 1.8500000000000003,-4.055 2.0500000000000003,-4.055" data-type="line" data-label="" points="435.12538302434456,273.5995720797084 444.5467897086677,273.5995720797084 444.5467897086677,388.06966329423494 426.5990099750321,388.06966329423494 426.5990099750321,416.33388334720445 444.54678970866775,416.33388334720445 444.54678970866775,428.1106417026084 453.9681963929909,428.1106417026084" fill="none" stroke="purple" stroke-width="1" />
|
|
401
|
+
</g>
|
|
402
|
+
<g>
|
|
403
|
+
<polyline data-points="-1.65,0.7 -1.8499999999999999,0.7 -1.8499999999999999,1.5999999999999999 2.6394553499999995,1.5999999999999999 2.6394553499999995,0.574 3.2444553499999995,0.574 3.2444553499999995,0.32499999999999984" data-type="line" data-label="" points="279.67217273301225,204.11669778282504 270.2507660486891,204.11669778282504 270.2507660486891,161.7203677033708 481.73568926599114,161.7203677033708 481.73568926599114,210.05218399394866 510.23544448606873,210.05218399394866 510.23544448606873,221.781835315931" fill="none" stroke="purple" stroke-width="1" />
|
|
404
|
+
</g>
|
|
405
|
+
<g>
|
|
406
|
+
<polyline data-points="-1.65,-0.7 -1.751,-0.7 -1.751,-1.401" data-type="line" data-label="" points="279.67217273301225,270.06654457308724 274.91436235742907,270.06654457308724 274.91436235742907,303.0885750016399" fill="none" stroke="purple" stroke-width="1" />
|
|
407
|
+
</g>
|
|
408
|
+
<g>
|
|
409
|
+
<polyline data-points="0.455544650000001,-6.415 0.455544650000001,-6.516 0.254544650000001,-6.516" data-type="line" data-label="" points="378.85813493126676,539.2832405776218 378.85813493126676,544.0410509532051 369.38962121352193,544.0410509532051" fill="none" stroke="purple" stroke-width="1" />
|
|
410
|
+
</g>
|
|
411
|
+
<g>
|
|
412
|
+
<rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="279.67217273301225" y="171.14177438769394" width="155.4532102913323" height="131.8996935805244" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.021228252499999996" />
|
|
413
|
+
</g>
|
|
414
|
+
<g>
|
|
415
|
+
<rect data-type="rect" data-label="schematic_component_1" data-x="0.42250000000000054" data-y="-3.555" x="348.21290636146335" y="378.64825660991175" width="58.17718627569553" height="51.817736763777475" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.021228252499999996" />
|
|
416
|
+
</g>
|
|
417
|
+
<g>
|
|
418
|
+
<rect data-type="rect" data-label="schematic_component_2" data-x="-2.595" data-y="-2.03" x="228.32550630345096" y="310.3430581485688" width="13.661039692268588" height="44.751681750535056" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.021228252499999996" />
|
|
419
|
+
</g>
|
|
420
|
+
<g>
|
|
421
|
+
<rect data-type="rect" data-label="schematic_component_3" data-x="-3.4099999999999997" data-y="0.03445534999999911" x="170.85492552907965" y="217.12244566527565" width="51.81773676377745" height="36.692172377354126" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.021228252499999996" />
|
|
422
|
+
</g>
|
|
423
|
+
<g>
|
|
424
|
+
<rect data-type="rect" data-label="schematic_component_4" data-x="-3.91695535" data-y="-2.11" x="144.2907653373729" y="310.5785933156768" width="57.18373191575702" height="51.817736763777475" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.021228252499999996" />
|
|
425
|
+
</g>
|
|
426
|
+
<g>
|
|
427
|
+
<rect data-type="rect" data-label="schematic_component_5" data-x="-6.328366049999999" data-y="-1.7338180812500004" x="40.00000000000006" y="293.3288494307292" width="38.5764537142187" height="50.875596095345145" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.021228252499999996" />
|
|
428
|
+
</g>
|
|
429
|
+
<g>
|
|
430
|
+
<rect data-type="rect" data-label="schematic_component_6" data-x="0.7480446500000012" data-y="-5.865" x="369.6979202598048" y="487.4655038138444" width="45.8780438945692" height="51.81773676377736" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.021228252499999996" />
|
|
431
|
+
</g>
|
|
432
|
+
<g>
|
|
433
|
+
<rect data-type="rect" data-label="schematic_component_7" data-x="3.5369553499999986" data-y="-0.2250000000000002" x="501.0752298146067" y="221.781835315931" width="45.87804389456926" height="51.81773676377742" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.021228252499999996" />
|
|
434
|
+
</g>
|
|
435
|
+
<g>
|
|
436
|
+
<rect data-type="rect" data-label="schematic_component_8" data-x="3.1319553499999997" data-y="2.185" x="481.9968812788523" y="108.25388476983679" width="45.878043894569316" height="51.81773676377745" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.021228252499999996" />
|
|
437
|
+
</g>
|
|
438
|
+
<g>
|
|
439
|
+
<rect data-type="rect" data-label="schematic_component_9" data-x="3.6" data-y="-3.83" x="453.9681963929909" y="349.20636072140184" width="146.03180360700912" height="136.610396922686" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.021228252499999996" />
|
|
440
|
+
</g>
|
|
441
|
+
<g>
|
|
442
|
+
<rect data-type="rect" data-label="netId: GND
|
|
443
|
+
globalConnNetId: connectivity_net0" data-x="1.8499999999999999" data-y="1.0151" x="439.83608636650615" y="177.9675835304861" width="9.42140668432313" height="22.61137604237561" fill="#00000066" stroke="#000000" stroke-width="0.021228252499999996" />
|
|
444
|
+
</g>
|
|
445
|
+
<g>
|
|
446
|
+
<rect data-type="rect" data-label="netId: GND
|
|
447
|
+
globalConnNetId: connectivity_net0" data-x="-1.751" data-y="-1.641" x="270.2036590152675" y="303.0885750016399" width="9.421406684323188" height="22.61137604237564" fill="#00000066" stroke="#000000" stroke-width="0.021228252499999996" />
|
|
448
|
+
</g>
|
|
449
|
+
<g>
|
|
450
|
+
<rect data-type="rect" data-label="netId: GND
|
|
451
|
+
globalConnNetId: connectivity_net0" data-x="1.1375000000000002" data-y="-4.495" x="406.27232505360485" y="437.5320483869316" width="9.421406684323188" height="22.611376042375582" fill="#00000066" stroke="#000000" stroke-width="0.021228252499999996" />
|
|
452
|
+
</g>
|
|
453
|
+
<g>
|
|
454
|
+
<rect data-type="rect" data-label="netId: GND
|
|
455
|
+
globalConnNetId: connectivity_net0" data-x="-6.323366049999999" data-y="-3.0999999999999996" x="54.813058682055896" y="371.8177367637775" width="9.42140668432313" height="22.611376042375582" fill="#00000066" stroke="#000000" stroke-width="0.021228252499999996" />
|
|
456
|
+
</g>
|
|
457
|
+
<g>
|
|
458
|
+
<rect data-type="rect" data-label="netId: N_ALERT
|
|
459
|
+
globalConnNetId: connectivity_net1" data-x="1.37" data-y="-2.415" x="399.3240376239165" y="346.1444035489968" width="45.222752084751164" height="9.421406684323188" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.021228252499999996" />
|
|
460
|
+
</g>
|
|
461
|
+
<g>
|
|
462
|
+
<rect data-type="rect" data-label="netId: N_ALERT
|
|
463
|
+
globalConnNetId: connectivity_net1" data-x="2.8394553499999997" data-y="1.154" x="486.4463926081527" y="160.11872856703587" width="9.421406684323188" height="45.22275208475119" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.021228252499999996" />
|
|
464
|
+
</g>
|
|
465
|
+
<g>
|
|
466
|
+
<rect data-type="rect" data-label="netId: SDA
|
|
467
|
+
globalConnNetId: connectivity_net2" data-x="2.687227675" data-y="-0.42499999999999993" x="472.68041375520664" y="252.40140703998128" width="22.61137604237564" height="9.421406684323188" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.021228252499999996" />
|
|
468
|
+
</g>
|
|
469
|
+
<g>
|
|
470
|
+
<rect data-type="rect" data-label="netId: SDA
|
|
471
|
+
globalConnNetId: connectivity_net2" data-x="1.8090000000000004" data-y="-3.605" x="431.30971331719365" y="402.20177332071967" width="22.61137604237564" height="9.421406684323188" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.021228252499999996" />
|
|
472
|
+
</g>
|
|
473
|
+
<g>
|
|
474
|
+
<rect data-type="rect" data-label="netId: SCL
|
|
475
|
+
globalConnNetId: connectivity_net3" data-x="1.8909999999999998" data-y="-0.07499999999999996" x="435.17249005776614" y="235.91394534241573" width="22.61137604237564" height="9.421406684323188" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.021228252499999996" />
|
|
476
|
+
</g>
|
|
477
|
+
<g>
|
|
478
|
+
<rect data-type="rect" data-label="netId: SCL
|
|
479
|
+
globalConnNetId: connectivity_net3" data-x="0.014544650000000992" data-y="-6.516" x="346.77824517114635" y="539.3303476110434" width="22.611376042375582" height="9.421406684323074" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.021228252499999996" />
|
|
480
|
+
</g>
|
|
481
|
+
<g>
|
|
482
|
+
<rect data-type="rect" data-label="netId: SCL
|
|
483
|
+
globalConnNetId: connectivity_net3" data-x="1.8090000000000004" data-y="-3.4050000000000002" x="431.30971331719365" y="392.7803666363965" width="22.61137604237564" height="9.421406684323188" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.021228252499999996" />
|
|
484
|
+
</g>
|
|
485
|
+
<g>
|
|
486
|
+
<rect data-type="rect" data-label="netId: VS
|
|
487
|
+
globalConnNetId: connectivity_net4" data-x="-1.8499999999999999" data-y="1.7799999999999998" x="265.5400627065275" y="144.7618356715891" width="9.42140668432313" height="16.958532031781715" fill="#ef444466" stroke="#ef4444" stroke-width="0.021228252499999996" />
|
|
488
|
+
</g>
|
|
489
|
+
<g>
|
|
490
|
+
<rect data-type="rect" data-label="netId: VS
|
|
491
|
+
globalConnNetId: connectivity_net4" data-x="0.22500000000000064" data-y="-2.824" x="363.2871570563804" y="361.6426175447084" width="9.421406684323188" height="16.958532031781715" fill="#ef444466" stroke="#ef4444" stroke-width="0.021228252499999996" />
|
|
492
|
+
</g>
|
|
493
|
+
<g>
|
|
494
|
+
<rect data-type="rect" data-label="netId: VS
|
|
495
|
+
globalConnNetId: connectivity_net4" data-x="0.4555446500000012" data-y="-5.134" x="374.14743158910517" y="470.45986474864105" width="9.421406684323188" height="16.958532031781715" fill="#ef444466" stroke="#ef4444" stroke-width="0.021228252499999996" />
|
|
496
|
+
</g>
|
|
497
|
+
<g>
|
|
498
|
+
<rect data-type="rect" data-label="netId: VS
|
|
499
|
+
globalConnNetId: connectivity_net4" data-x="2.8394553499999997" data-y="2.9160000000000004" x="486.4463926081527" y="91.24824570463346" width="9.421406684323188" height="16.958532031781715" fill="#ef444466" stroke="#ef4444" stroke-width="0.021228252499999996" />
|
|
500
|
+
</g>
|
|
501
|
+
<g>
|
|
502
|
+
<rect data-type="rect" data-label="netId: BUS_HIGH
|
|
503
|
+
globalConnNetId: connectivity_net5" data-x="-3.1050000000000004" data-y="-1.1576361625" x="185.69364105688862" y="286.91372323275317" width="50.87559609534512" height="9.421406684323188" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.021228252499999996" />
|
|
504
|
+
</g>
|
|
505
|
+
<g>
|
|
506
|
+
<rect data-type="rect" data-label="netId: LOAD_CHARGER
|
|
507
|
+
globalConnNetId: connectivity_net6" data-x="-1.9525" data-y="0.42999999999999994" x="260.7115917808119" y="180.09211073780097" width="9.421406684323188" height="73.48697213772073" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.021228252499999996" />
|
|
508
|
+
</g>
|
|
509
|
+
<g>
|
|
510
|
+
<rect data-type="rect" data-label="netId: LOAD_CHARGER
|
|
511
|
+
globalConnNetId: connectivity_net6" data-x="-5.10945535" data-y="-1.276909040625" x="79.96400787111412" y="292.53231468887986" width="73.48697213772076" height="9.421406684323188" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.021228252499999996" />
|
|
512
|
+
</g>
|
|
513
|
+
<g id="crosshair" style="display: none">
|
|
514
|
+
<line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
|
|
515
|
+
<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>
|
|
516
|
+
</g>
|
|
517
|
+
<script>
|
|
518
|
+
<![CDATA[
|
|
519
|
+
document.currentScript.parentElement.addEventListener('mousemove', (e) => {
|
|
520
|
+
const svg = e.currentTarget;
|
|
521
|
+
const rect = svg.getBoundingClientRect();
|
|
522
|
+
const x = e.clientX - rect.left;
|
|
523
|
+
const y = e.clientY - rect.top;
|
|
524
|
+
const crosshair = svg.getElementById('crosshair');
|
|
525
|
+
const h = svg.getElementById('crosshair-h');
|
|
526
|
+
const v = svg.getElementById('crosshair-v');
|
|
527
|
+
const coords = svg.getElementById('coordinates');
|
|
528
|
+
|
|
529
|
+
crosshair.style.display = 'block';
|
|
530
|
+
h.setAttribute('x1', '0');
|
|
531
|
+
h.setAttribute('x2', '640');
|
|
532
|
+
h.setAttribute('y1', y);
|
|
533
|
+
h.setAttribute('y2', y);
|
|
534
|
+
v.setAttribute('x1', x);
|
|
535
|
+
v.setAttribute('x2', x);
|
|
536
|
+
v.setAttribute('y1', '0');
|
|
537
|
+
v.setAttribute('y2', '640');
|
|
538
|
+
|
|
539
|
+
// Calculate real coordinates using inverse transformation
|
|
540
|
+
const matrix = {
|
|
541
|
+
"a": 47.107033421615846,
|
|
542
|
+
"c": 0,
|
|
543
|
+
"e": 357.3987778786784,
|
|
544
|
+
"b": 0,
|
|
545
|
+
"d": -47.107033421615846,
|
|
546
|
+
"f": 237.09162117795614
|
|
547
|
+
};
|
|
548
|
+
// Manually invert and apply the affine transform
|
|
549
|
+
// Since we only use translate and scale, we can directly compute:
|
|
550
|
+
// x' = (x - tx) / sx
|
|
551
|
+
// y' = (y - ty) / sy
|
|
552
|
+
const sx = matrix.a;
|
|
553
|
+
const sy = matrix.d;
|
|
554
|
+
const tx = matrix.e;
|
|
555
|
+
const ty = matrix.f;
|
|
556
|
+
const realPoint = {
|
|
557
|
+
x: (x - tx) / sx,
|
|
558
|
+
y: (y - ty) / sy // Flip y back since we used negative scale
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
|
|
562
|
+
coords.setAttribute('x', (x + 5).toString());
|
|
563
|
+
coords.setAttribute('y', (y - 5).toString());
|
|
564
|
+
});
|
|
565
|
+
document.currentScript.parentElement.addEventListener('mouseleave', () => {
|
|
566
|
+
document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
|
|
567
|
+
});
|
|
568
|
+
]]>
|
|
569
|
+
</script>
|
|
570
|
+
</svg>
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
{
|
|
2
|
+
"chips": [
|
|
3
|
+
{
|
|
4
|
+
"chipId": "schematic_component_0",
|
|
5
|
+
"center": {
|
|
6
|
+
"x": 0,
|
|
7
|
+
"y": 0
|
|
8
|
+
},
|
|
9
|
+
"width": 2.5,
|
|
10
|
+
"height": 2.8,
|
|
11
|
+
"pins": [
|
|
12
|
+
{
|
|
13
|
+
"pinId": "U1.1",
|
|
14
|
+
"x": 1.65,
|
|
15
|
+
"y": 0.42500000000000004
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"pinId": "U1.2",
|
|
19
|
+
"x": 1.65,
|
|
20
|
+
"y": 0.7749999999999999
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"pinId": "U1.3",
|
|
24
|
+
"x": 1.65,
|
|
25
|
+
"y": -0.7749999999999999
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"pinId": "U1.4",
|
|
29
|
+
"x": 1.65,
|
|
30
|
+
"y": -0.42499999999999993
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"pinId": "U1.5",
|
|
34
|
+
"x": 1.65,
|
|
35
|
+
"y": -0.07499999999999996
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"pinId": "U1.6",
|
|
39
|
+
"x": -1.65,
|
|
40
|
+
"y": 0.7
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"pinId": "U1.7",
|
|
44
|
+
"x": -1.65,
|
|
45
|
+
"y": -0.7
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"pinId": "U1.8",
|
|
49
|
+
"x": -1.65,
|
|
50
|
+
"y": 0.35
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"pinId": "U1.9",
|
|
54
|
+
"x": -1.65,
|
|
55
|
+
"y": -0.3500000000000001
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"pinId": "U1.10",
|
|
59
|
+
"x": -1.65,
|
|
60
|
+
"y": -1.1102230246251565e-16
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"chipId": "schematic_component_1",
|
|
66
|
+
"center": {
|
|
67
|
+
"x": 0.42250000000000054,
|
|
68
|
+
"y": -3.555
|
|
69
|
+
},
|
|
70
|
+
"width": 1.2349999999999999,
|
|
71
|
+
"height": 1.1000000000000005,
|
|
72
|
+
"pins": [
|
|
73
|
+
{
|
|
74
|
+
"pinId": "C1.1",
|
|
75
|
+
"x": 0.22500000000000064,
|
|
76
|
+
"y": -3.005
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"pinId": "C1.2",
|
|
80
|
+
"x": 0.22500000000000042,
|
|
81
|
+
"y": -4.105
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"chipId": "schematic_component_2",
|
|
87
|
+
"center": {
|
|
88
|
+
"x": -2.595,
|
|
89
|
+
"y": -2.03
|
|
90
|
+
},
|
|
91
|
+
"width": 0.29000000000000004,
|
|
92
|
+
"height": 0.9500000000000002,
|
|
93
|
+
"pins": [
|
|
94
|
+
{
|
|
95
|
+
"pinId": "B1.1",
|
|
96
|
+
"x": -2.5650000000000004,
|
|
97
|
+
"y": -2.48
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"pinId": "B1.2",
|
|
101
|
+
"x": -2.5650000000000004,
|
|
102
|
+
"y": -1.5799999999999996
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"chipId": "schematic_component_3",
|
|
108
|
+
"center": {
|
|
109
|
+
"x": -3.4099999999999997,
|
|
110
|
+
"y": 0.03445534999999911
|
|
111
|
+
},
|
|
112
|
+
"width": 1.1000000000000005,
|
|
113
|
+
"height": 0.778910699999999,
|
|
114
|
+
"pins": [
|
|
115
|
+
{
|
|
116
|
+
"pinId": "R_SHUNT.1",
|
|
117
|
+
"x": -3.96,
|
|
118
|
+
"y": 0.03445534999999911
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"pinId": "R_SHUNT.2",
|
|
122
|
+
"x": -2.8599999999999994,
|
|
123
|
+
"y": 0.03445534999999911
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"chipId": "schematic_component_4",
|
|
129
|
+
"center": {
|
|
130
|
+
"x": -3.91695535,
|
|
131
|
+
"y": -2.11
|
|
132
|
+
},
|
|
133
|
+
"width": 1.2139106999999987,
|
|
134
|
+
"height": 1.1000000000000003,
|
|
135
|
+
"pins": [
|
|
136
|
+
{
|
|
137
|
+
"pinId": "R_LOAD.1",
|
|
138
|
+
"x": -4.32945535,
|
|
139
|
+
"y": -1.56
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"pinId": "R_LOAD.2",
|
|
143
|
+
"x": -4.32945535,
|
|
144
|
+
"y": -2.6599999999999997
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"chipId": "schematic_component_5",
|
|
150
|
+
"center": {
|
|
151
|
+
"x": -6.328366049999999,
|
|
152
|
+
"y": -1.7338180812500004
|
|
153
|
+
},
|
|
154
|
+
"width": 0.8189106999999982,
|
|
155
|
+
"height": 1.08,
|
|
156
|
+
"pins": [
|
|
157
|
+
{
|
|
158
|
+
"pinId": "CHARGER.1",
|
|
159
|
+
"x": -6.323366049999999,
|
|
160
|
+
"y": -2.2738180812500004
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"pinId": "CHARGER.2",
|
|
164
|
+
"x": -6.333366049999999,
|
|
165
|
+
"y": -1.1938180812500003
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"chipId": "schematic_component_6",
|
|
171
|
+
"center": {
|
|
172
|
+
"x": 0.7480446500000012,
|
|
173
|
+
"y": -5.865
|
|
174
|
+
},
|
|
175
|
+
"width": 0.9739106999999991,
|
|
176
|
+
"height": 1.0999999999999996,
|
|
177
|
+
"pins": [
|
|
178
|
+
{
|
|
179
|
+
"pinId": "R1.1",
|
|
180
|
+
"x": 0.4555446500000012,
|
|
181
|
+
"y": -5.315
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"pinId": "R1.2",
|
|
185
|
+
"x": 0.455544650000001,
|
|
186
|
+
"y": -6.415
|
|
187
|
+
}
|
|
188
|
+
]
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"chipId": "schematic_component_7",
|
|
192
|
+
"center": {
|
|
193
|
+
"x": 3.5369553499999986,
|
|
194
|
+
"y": -0.2250000000000002
|
|
195
|
+
},
|
|
196
|
+
"width": 0.9739106999999989,
|
|
197
|
+
"height": 1.1,
|
|
198
|
+
"pins": [
|
|
199
|
+
{
|
|
200
|
+
"pinId": "R2.1",
|
|
201
|
+
"x": 3.244455349999999,
|
|
202
|
+
"y": 0.3249999999999996
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"pinId": "R2.2",
|
|
206
|
+
"x": 3.244455349999999,
|
|
207
|
+
"y": -0.775
|
|
208
|
+
}
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"chipId": "schematic_component_8",
|
|
213
|
+
"center": {
|
|
214
|
+
"x": 3.1319553499999997,
|
|
215
|
+
"y": 2.185
|
|
216
|
+
},
|
|
217
|
+
"width": 0.9739106999999994,
|
|
218
|
+
"height": 1.1000000000000003,
|
|
219
|
+
"pins": [
|
|
220
|
+
{
|
|
221
|
+
"pinId": "R3.1",
|
|
222
|
+
"x": 2.8394553499999997,
|
|
223
|
+
"y": 2.735
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"pinId": "R3.2",
|
|
227
|
+
"x": 2.8394553499999997,
|
|
228
|
+
"y": 1.6350000000000002
|
|
229
|
+
}
|
|
230
|
+
]
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"chipId": "schematic_component_9",
|
|
234
|
+
"center": {
|
|
235
|
+
"x": 3.6,
|
|
236
|
+
"y": -3.83
|
|
237
|
+
},
|
|
238
|
+
"width": 2.3,
|
|
239
|
+
"height": 2.9000000000000004,
|
|
240
|
+
"pins": [
|
|
241
|
+
{
|
|
242
|
+
"pinId": "J1.1",
|
|
243
|
+
"x": 2.0500000000000003,
|
|
244
|
+
"y": -3.4050000000000002
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"pinId": "J1.2",
|
|
248
|
+
"x": 2.0500000000000003,
|
|
249
|
+
"y": -3.605
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"pinId": "J1.3",
|
|
253
|
+
"x": 2.0500000000000003,
|
|
254
|
+
"y": -4.055
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"pinId": "J1.4",
|
|
258
|
+
"x": 2.0500000000000003,
|
|
259
|
+
"y": -4.255
|
|
260
|
+
}
|
|
261
|
+
]
|
|
262
|
+
}
|
|
263
|
+
],
|
|
264
|
+
"directConnections": [],
|
|
265
|
+
"netConnections": [
|
|
266
|
+
{
|
|
267
|
+
"netId": "GND",
|
|
268
|
+
"pinIds": [
|
|
269
|
+
"U1.1",
|
|
270
|
+
"U1.2",
|
|
271
|
+
"U1.7",
|
|
272
|
+
"C1.2",
|
|
273
|
+
"B1.1",
|
|
274
|
+
"R_LOAD.2",
|
|
275
|
+
"CHARGER.1",
|
|
276
|
+
"J1.4"
|
|
277
|
+
],
|
|
278
|
+
"netLabelWidth": 0.48
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"netId": "N_ALERT",
|
|
282
|
+
"pinIds": ["U1.3", "R3.2", "J1.3"],
|
|
283
|
+
"netLabelWidth": 0.96
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"netId": "SDA",
|
|
287
|
+
"pinIds": ["U1.4", "R2.2", "J1.2"],
|
|
288
|
+
"netLabelWidth": 0.48
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"netId": "SCL",
|
|
292
|
+
"pinIds": ["U1.5", "R1.2", "J1.1"],
|
|
293
|
+
"netLabelWidth": 0.48
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"netId": "VS",
|
|
297
|
+
"pinIds": ["U1.6", "C1.1", "R1.1", "R2.1", "R3.1"],
|
|
298
|
+
"netLabelWidth": 0.36
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"netId": "BUS_HIGH",
|
|
302
|
+
"pinIds": ["U1.8", "U1.10", "B1.2", "R_SHUNT.1"],
|
|
303
|
+
"netLabelWidth": 1.08
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"netId": "LOAD_CHARGER",
|
|
307
|
+
"pinIds": ["U1.9", "R_SHUNT.2", "R_LOAD.1", "CHARGER.2"],
|
|
308
|
+
"netLabelWidth": 1.56
|
|
309
|
+
}
|
|
310
|
+
],
|
|
311
|
+
"availableNetLabelOrientations": {
|
|
312
|
+
"VS": ["y+"],
|
|
313
|
+
"BUS_HIGH": ["x-", "x+"],
|
|
314
|
+
"LOAD_CHARGER": ["x-", "x+"],
|
|
315
|
+
"GND": ["y-"],
|
|
316
|
+
"SCL": ["x-", "x+"],
|
|
317
|
+
"SDA": ["x-", "x+"],
|
|
318
|
+
"N_ALERT": ["x-", "x+"]
|
|
319
|
+
},
|
|
320
|
+
"maxMspPairDistance": 2.4
|
|
321
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { expect, test } from "bun:test"
|
|
2
|
+
import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
|
|
3
|
+
import inputProblem from "./assets/repro-ina237-current-monitor.input.json"
|
|
4
|
+
import "tests/fixtures/matcher"
|
|
5
|
+
|
|
6
|
+
// InputProblem extracted from a tscircuit circuit: an INA237AQDGSRQ1 current/
|
|
7
|
+
// power monitor (U1) sensing across a 0.001Ω shunt (R_SHUNT) in the
|
|
8
|
+
// BUS_HIGH/LOAD_CHARGER path, with a 48V battery (B1), a 12V charger source
|
|
9
|
+
// (CHARGER), a load resistor (R_LOAD), I2C pull-ups (R1/R2/R3 to VS), a VS
|
|
10
|
+
// decoupling cap (C1) and an MCU I2C connector (J1). VS/SCL/SDA/N_ALERT/GND etc.
|
|
11
|
+
// break out to net labels. Generated by rendering the circuit in @tscircuit/core
|
|
12
|
+
// with DEBUG=Group_doInitialSchematicTraceRender and copying the emitted
|
|
13
|
+
// "group-trace-render-input-problem" output.
|
|
14
|
+
test("repro ina237 current monitor", () => {
|
|
15
|
+
const solver = new SchematicTracePipelineSolver(inputProblem as any)
|
|
16
|
+
solver.solve()
|
|
17
|
+
|
|
18
|
+
expect(solver).toMatchSolverSnapshot(import.meta.path)
|
|
19
|
+
})
|