@tscircuit/schematic-trace-solver 0.0.70 → 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 +7 -6
- package/lib/solvers/TraceCleanupSolver/balanceZShapes.ts +25 -5
- package/lib/utils/arePinsInDifferentSchematicSections.ts +5 -1
- 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
|
@@ -322,7 +322,7 @@ var arePinsInDifferentSchematicSections = (inputProblem, p1, p2) => {
|
|
|
322
322
|
if (sectionByChipId.size === 0) return false;
|
|
323
323
|
const s1 = getSectionNameForPin(sectionByChipId, sectionByPinId, p1);
|
|
324
324
|
const s2 = getSectionNameForPin(sectionByChipId, sectionByPinId, p2);
|
|
325
|
-
return
|
|
325
|
+
return s1 !== s2;
|
|
326
326
|
};
|
|
327
327
|
|
|
328
328
|
// lib/solvers/SchematicTracePipelineSolver/visualizeInputProblem.ts
|
|
@@ -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
|
|
@@ -32,8 +32,12 @@ export const arePinsInDifferentSchematicSections = (
|
|
|
32
32
|
|
|
33
33
|
if (sectionByChipId.size === 0) return false
|
|
34
34
|
|
|
35
|
+
// Pins without an explicit section belong to an implicit "no-section"
|
|
36
|
+
// section. Traces must not cross between sections, so a sectioned pin and an
|
|
37
|
+
// unsectioned pin (or two differently-named sections) count as different.
|
|
38
|
+
// `undefined !== undefined` is false, so two unsectioned pins compare equal.
|
|
35
39
|
const s1 = getSectionNameForPin(sectionByChipId, sectionByPinId, p1)
|
|
36
40
|
const s2 = getSectionNameForPin(sectionByChipId, sectionByPinId, p2)
|
|
37
41
|
|
|
38
|
-
return
|
|
42
|
+
return s1 !== s2
|
|
39
43
|
}
|
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
|
+
})
|