@tscircuit/schematic-trace-solver 0.0.82 → 0.0.83

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.
@@ -20,8 +20,7 @@ import type {
20
20
  TracePathScore,
21
21
  } from "./types"
22
22
 
23
- const LABEL_SIDE_CLEARANCE = 0.1
24
- const LABEL_HUG_CLEARANCE = 0.001
23
+ const LABEL_CLEARANCE = 0.1
25
24
 
26
25
  export const findBestReroutePath = ({
27
26
  trace,
@@ -102,7 +101,7 @@ export const generateRerouteCandidateResults = ({
102
101
  trace,
103
102
  label,
104
103
  problem: inputProblem,
105
- paddingBuffer: LABEL_SIDE_CLEARANCE,
104
+ paddingBuffer: LABEL_CLEARANCE,
106
105
  detourCount: 0,
107
106
  }),
108
107
  ...generateEndpointDetourCandidates(trace, label),
@@ -188,9 +187,11 @@ const generateEndpointDetourCandidates = (
188
187
  const start = trace.tracePath[0]
189
188
  const end = trace.tracePath[trace.tracePath.length - 1]
190
189
  if (!start || !end) return []
190
+ const startExit = trace.tracePath[1] ?? start
191
+ const endEntry = trace.tracePath[trace.tracePath.length - 2] ?? end
191
192
 
192
193
  const bounds = getRectBounds(label.center, label.width, label.height)
193
- const padding = LABEL_SIDE_CLEARANCE
194
+ const padding = LABEL_CLEARANCE
194
195
  const labelDirection = dir(label.orientation)
195
196
  const labelSideX =
196
197
  labelDirection.x < 0 ? bounds.minX - padding : bounds.maxX + padding
@@ -204,18 +205,22 @@ const generateEndpointDetourCandidates = (
204
205
  candidates.push(
205
206
  [
206
207
  start,
207
- { x: start.x, y: topY },
208
+ startExit,
209
+ { x: startExit.x, y: topY },
208
210
  { x: sideX, y: topY },
209
211
  { x: sideX, y: bottomY },
210
- { x: end.x, y: bottomY },
212
+ { x: endEntry.x, y: bottomY },
213
+ endEntry,
211
214
  end,
212
215
  ],
213
216
  [
214
217
  start,
215
- { x: start.x, y: bottomY },
218
+ startExit,
219
+ { x: startExit.x, y: bottomY },
216
220
  { x: sideX, y: bottomY },
217
221
  { x: sideX, y: topY },
218
- { x: end.x, y: topY },
222
+ { x: endEntry.x, y: topY },
223
+ endEntry,
219
224
  end,
220
225
  ],
221
226
  )
@@ -231,6 +236,8 @@ const generateLabelHugCandidates = (
231
236
  const start = trace.tracePath[0]
232
237
  const end = trace.tracePath[trace.tracePath.length - 1]
233
238
  if (!start || !end) return []
239
+ const startExit = trace.tracePath[1] ?? start
240
+ const endEntry = trace.tracePath[trace.tracePath.length - 2] ?? end
234
241
 
235
242
  const labelDirection = dir(label.orientation)
236
243
  if (labelDirection.x === 0) return []
@@ -238,29 +245,33 @@ const generateLabelHugCandidates = (
238
245
  const bounds = getRectBounds(label.center, label.width, label.height)
239
246
  const sideX =
240
247
  labelDirection.x < 0
241
- ? bounds.minX - LABEL_SIDE_CLEARANCE
242
- : bounds.maxX + LABEL_SIDE_CLEARANCE
243
- const topY = bounds.maxY + LABEL_HUG_CLEARANCE
244
- const bottomY = bounds.minY - LABEL_HUG_CLEARANCE
245
- const startsAboveEnd = start.y >= end.y
248
+ ? bounds.minX - LABEL_CLEARANCE
249
+ : bounds.maxX + LABEL_CLEARANCE
250
+ const topY = bounds.maxY + LABEL_CLEARANCE
251
+ const bottomY = bounds.minY - LABEL_CLEARANCE
252
+ const startsAboveEnd = startExit.y >= endEntry.y
246
253
  const firstY = startsAboveEnd ? topY : bottomY
247
254
  const secondY = startsAboveEnd ? bottomY : topY
248
255
 
249
256
  return [
250
257
  [
251
258
  start,
252
- { x: start.x, y: firstY },
259
+ startExit,
260
+ { x: startExit.x, y: firstY },
253
261
  { x: sideX, y: firstY },
254
262
  { x: sideX, y: secondY },
255
- { x: end.x, y: secondY },
263
+ { x: endEntry.x, y: secondY },
264
+ endEntry,
256
265
  end,
257
266
  ],
258
267
  [
259
268
  start,
260
- { x: start.x, y: secondY },
269
+ startExit,
270
+ { x: startExit.x, y: secondY },
261
271
  { x: sideX, y: secondY },
262
272
  { x: sideX, y: firstY },
263
- { x: end.x, y: firstY },
273
+ { x: endEntry.x, y: firstY },
274
+ endEntry,
264
275
  end,
265
276
  ],
266
277
  ]
@@ -341,9 +352,9 @@ const generateHorizontalSegmentPushCandidate = (
341
352
  return null
342
353
  }
343
354
 
344
- let segmentPushX = bounds.minX - LABEL_SIDE_CLEARANCE
355
+ let segmentPushX = bounds.minX - LABEL_CLEARANCE
345
356
  if (labelDirection.x > 0) {
346
- segmentPushX = bounds.maxX + LABEL_SIDE_CLEARANCE
357
+ segmentPushX = bounds.maxX + LABEL_CLEARANCE
347
358
  }
348
359
  const segmentPushStartY = getClearedHorizontalY({
349
360
  start: previousAnchor,
@@ -393,10 +404,10 @@ const getClearedHorizontalY = ({
393
404
 
394
405
  const labelCenterY = (labelBounds.minY + labelBounds.maxY) / 2
395
406
  if (start.y >= labelCenterY) {
396
- return labelBounds.maxY + LABEL_HUG_CLEARANCE
407
+ return labelBounds.maxY + LABEL_CLEARANCE
397
408
  }
398
409
 
399
- return labelBounds.minY - LABEL_HUG_CLEARANCE
410
+ return labelBounds.minY - LABEL_CLEARANCE
400
411
  }
401
412
 
402
413
  const markSelectedCandidate = (
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tscircuit/schematic-trace-solver",
3
3
  "main": "dist/index.js",
4
- "version": "0.0.82",
4
+ "version": "0.0.83",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "start": "cosmos",
@@ -2,234 +2,234 @@
2
2
  <rect width="100%" height="100%" fill="white" />
3
3
  <g>
4
4
  <circle data-type="point" data-label="PIN1_PIN2.1
5
- x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="78.07900088054879" cy="222.46748102503187" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
5
+ x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="78.07900088054879" cy="225.88837130377448" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
6
6
  </g>
7
7
  <g>
8
8
  <circle data-type="point" data-label="PIN1_PIN2.2
9
- x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="78.07900088054879" cy="222.46748102503187" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
9
+ x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="78.07900088054879" cy="225.88837130377448" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
10
10
  </g>
11
11
  <g>
12
12
  <circle data-type="point" data-label="PIN1_PIN2.3
13
- x+" data-x="-2.4994231089999994" data-y="1.4485175000000003" cx="147.26763199913816" cy="222.49781982972618" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
13
+ x+" data-x="-2.4994231089999994" data-y="1.4485175000000003" cx="147.26763199913816" cy="225.9187101084688" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
14
14
  </g>
15
15
  <g>
16
16
  <circle data-type="point" data-label="PIN1_PIN2.4
17
- x+" data-x="-2.4994231089999994" data-y="1.4485175000000003" cx="147.26763199913816" cy="222.49781982972618" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
17
+ x+" data-x="-2.4994231089999994" data-y="1.4485175000000003" cx="147.26763199913816" cy="225.9187101084688" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
18
18
  </g>
19
19
  <g>
20
20
  <circle data-type="point" data-label="PIN1_PIN3.1
21
- x-" data-x="-0.5005768910000006" data-y="1.4489565000000004" cx="285.40568444070533" cy="222.46748102503187" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
21
+ x-" data-x="-0.5005768910000006" data-y="1.4489565000000004" cx="285.40568444070533" cy="225.88837130377448" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
22
22
  </g>
23
23
  <g>
24
24
  <circle data-type="point" data-label="PIN1_PIN3.2
25
- x-" data-x="-0.5005768910000006" data-y="1.4489565000000004" cx="285.40568444070533" cy="222.46748102503187" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
25
+ x-" data-x="-0.5005768910000006" data-y="1.4489565000000004" cx="285.40568444070533" cy="225.88837130377448" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
26
26
  </g>
27
27
  <g>
28
28
  <circle data-type="point" data-label="PIN1_PIN3.3
29
- x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="354.59431555929467" cy="222.49781982972618" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
29
+ x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="354.59431555929467" cy="225.9187101084688" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
30
30
  </g>
31
31
  <g>
32
32
  <circle data-type="point" data-label="PIN1_PIN3.4
33
- x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="354.59431555929467" cy="222.49781982972618" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
33
+ x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="354.59431555929467" cy="225.9187101084688" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
34
34
  </g>
35
35
  <g>
36
36
  <circle data-type="point" data-label="PIN1_PIN4.1
37
- x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="492.7323680008618" cy="222.46748102503187" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
37
+ x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="492.7323680008618" cy="225.88837130377448" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
38
38
  </g>
39
39
  <g>
40
40
  <circle data-type="point" data-label="PIN1_PIN4.2
41
- x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="492.7323680008618" cy="222.46748102503187" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
41
+ x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="492.7323680008618" cy="225.88837130377448" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
42
42
  </g>
43
43
  <g>
44
44
  <circle data-type="point" data-label="PIN1_PIN4.3
45
- x+" data-x="3.5005768910000006" data-y="1.4485175000000003" cx="561.9209991194512" cy="222.49781982972618" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
45
+ x+" data-x="3.5005768910000006" data-y="1.4485175000000003" cx="561.9209991194512" cy="225.9187101084688" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
46
46
  </g>
47
47
  <g>
48
48
  <circle data-type="point" data-label="PIN1_PIN4.4
49
- x+" data-x="3.5005768910000006" data-y="1.4485175000000003" cx="561.9209991194512" cy="222.49781982972618" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
49
+ x+" data-x="3.5005768910000006" data-y="1.4485175000000003" cx="561.9209991194512" cy="225.9187101084688" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
50
50
  </g>
51
51
  <g>
52
52
  <circle data-type="point" data-label="PIN2_PIN3.1
53
- x-" data-x="-3.5005768910000006" data-y="-1.5510434999999996" cx="78.07900088054879" cy="429.7941645851884" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
53
+ x-" data-x="-3.5005768910000006" data-y="-1.5510434999999996" cx="78.07900088054879" cy="433.215054863931" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
54
54
  </g>
55
55
  <g>
56
56
  <circle data-type="point" data-label="PIN2_PIN3.2
57
- x-" data-x="-3.5005768910000006" data-y="-1.5510434999999996" cx="78.07900088054879" cy="429.7941645851884" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
57
+ x-" data-x="-3.5005768910000006" data-y="-1.5510434999999996" cx="78.07900088054879" cy="433.215054863931" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
58
58
  </g>
59
59
  <g>
60
60
  <circle data-type="point" data-label="PIN2_PIN3.3
61
- x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="147.26763199913816" cy="429.8245033898827" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
61
+ x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="147.26763199913816" cy="433.2453936686253" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
62
62
  </g>
63
63
  <g>
64
64
  <circle data-type="point" data-label="PIN2_PIN3.4
65
- x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="147.26763199913816" cy="429.8245033898827" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
65
+ x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="147.26763199913816" cy="433.2453936686253" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
66
66
  </g>
67
67
  <g>
68
68
  <circle data-type="point" data-label="PIN2_PIN4.1
69
- x-" data-x="-0.5005768910000006" data-y="-1.5510434999999996" cx="285.40568444070533" cy="429.7941645851884" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
69
+ x-" data-x="-0.5005768910000006" data-y="-1.5510434999999996" cx="285.40568444070533" cy="433.215054863931" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
70
70
  </g>
71
71
  <g>
72
72
  <circle data-type="point" data-label="PIN2_PIN4.2
73
- x-" data-x="-0.5005768910000006" data-y="-1.5510434999999996" cx="285.40568444070533" cy="429.7941645851884" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
73
+ x-" data-x="-0.5005768910000006" data-y="-1.5510434999999996" cx="285.40568444070533" cy="433.215054863931" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
74
74
  </g>
75
75
  <g>
76
76
  <circle data-type="point" data-label="PIN2_PIN4.3
77
- x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="354.59431555929467" cy="429.8245033898827" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
77
+ x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="354.59431555929467" cy="433.2453936686253" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
78
78
  </g>
79
79
  <g>
80
80
  <circle data-type="point" data-label="PIN2_PIN4.4
81
- x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="354.59431555929467" cy="429.8245033898827" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
81
+ x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="354.59431555929467" cy="433.2453936686253" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
82
82
  </g>
83
83
  <g>
84
84
  <circle data-type="point" data-label="PIN3_PIN4.1
85
- x-" data-x="2.4994231089999994" data-y="-1.5510434999999996" cx="492.7323680008618" cy="429.7941645851884" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
85
+ x-" data-x="2.4994231089999994" data-y="-1.5510434999999996" cx="492.7323680008618" cy="433.215054863931" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
86
86
  </g>
87
87
  <g>
88
88
  <circle data-type="point" data-label="PIN3_PIN4.2
89
- x-" data-x="2.4994231089999994" data-y="-1.5510434999999996" cx="492.7323680008618" cy="429.7941645851884" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
89
+ x-" data-x="2.4994231089999994" data-y="-1.5510434999999996" cx="492.7323680008618" cy="433.215054863931" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
90
90
  </g>
91
91
  <g>
92
92
  <circle data-type="point" data-label="PIN3_PIN4.3
93
- x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.9209991194512" cy="429.8245033898827" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
93
+ x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.9209991194512" cy="433.2453936686253" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
94
94
  </g>
95
95
  <g>
96
96
  <circle data-type="point" data-label="PIN3_PIN4.4
97
- x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.9209991194512" cy="429.8245033898827" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
97
+ x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.9209991194512" cy="433.2453936686253" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
98
98
  </g>
99
99
  <g>
100
100
  <circle data-type="point" data-label="anchorPoint
101
- orientation: y+" data-x="-3.7005768910000008" data-y="1.5499565000000004" cx="64.25722197653835" cy="215.4874826785066" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
101
+ orientation: y+" data-x="-3.7005768910000008" data-y="1.6489565000000006" cx="64.25722197653835" cy="212.06659239976403" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
102
102
  </g>
103
103
  <g>
104
104
  <circle data-type="point" data-label="anchorPoint
105
- orientation: x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="492.7323680008618" cy="222.46748102503187" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
105
+ orientation: x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="492.7323680008618" cy="225.88837130377448" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
106
106
  </g>
107
107
  <g>
108
108
  <circle data-type="point" data-label="anchorPoint
109
- orientation: x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="78.07900088054879" cy="222.46748102503187" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
109
+ orientation: x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="78.07900088054879" cy="225.88837130377448" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
110
110
  </g>
111
111
  <g>
112
112
  <circle data-type="point" data-label="anchorPoint
113
- orientation: y+" data-x="-3.7005768910000008" data-y="-1.5510434999999996" cx="64.25722197653835" cy="429.7941645851884" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
113
+ orientation: y+" data-x="-3.7005768910000008" data-y="-1.5510434999999996" cx="64.25722197653835" cy="433.215054863931" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
114
114
  </g>
115
115
  <g>
116
116
  <circle data-type="point" data-label="anchorPoint
117
- orientation: x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="354.59431555929467" cy="222.49781982972618" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
117
+ orientation: x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="354.59431555929467" cy="225.9187101084688" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
118
118
  </g>
119
119
  <g>
120
120
  <circle data-type="point" data-label="anchorPoint
121
- orientation: x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="147.26763199913816" cy="429.8245033898827" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
121
+ orientation: x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="147.26763199913816" cy="433.2453936686253" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
122
122
  </g>
123
123
  <g>
124
124
  <circle data-type="point" data-label="anchorPoint
125
- orientation: x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.9209991194512" cy="429.8245033898827" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
125
+ orientation: x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.9209991194512" cy="433.2453936686253" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
126
126
  </g>
127
127
  <g>
128
128
  <circle data-type="point" data-label="anchorPoint
129
- orientation: y+" data-x="3.7005768910000008" data-y="1.4485175000000003" cx="575.7427780234616" cy="222.49781982972618" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
129
+ orientation: y+" data-x="3.7005768910000008" data-y="1.4485175000000003" cx="575.7427780234616" cy="225.9187101084688" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
130
130
  </g>
131
131
  <g>
132
132
  <circle data-type="point" data-label="anchorPoint
133
- orientation: x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="354.59431555929467" cy="429.8245033898827" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
133
+ orientation: x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="354.59431555929467" cy="433.2453936686253" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
134
134
  </g>
135
135
  <g>
136
- <polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,222.46748102503187 285.40568444070533,222.46748102503187" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
136
+ <polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 285.40568444070533,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
137
137
  </g>
138
138
  <g>
139
- <polyline data-points="-3.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,222.46748102503187 492.7323680008618,222.46748102503187" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
139
+ <polyline data-points="-3.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 492.7323680008618,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
140
140
  </g>
141
141
  <g>
142
- <polyline data-points="-0.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="285.40568444070533,222.46748102503187 492.7323680008618,222.46748102503187" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
142
+ <polyline data-points="-0.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="285.40568444070533,225.88837130377448 492.7323680008618,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
143
143
  </g>
144
144
  <g>
145
- <polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,222.46748102503187 78.07900088054879,429.7941645851884" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
145
+ <polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 78.07900088054879,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
146
146
  </g>
147
147
  <g>
148
- <polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,222.46748102503187 285.40568444070533,429.7941645851884" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
148
+ <polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 285.40568444070533,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
149
149
  </g>
150
150
  <g>
151
- <polyline data-points="-3.5005768910000006,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,429.7941645851884 285.40568444070533,429.7941645851884" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
151
+ <polyline data-points="-3.5005768910000006,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,433.215054863931 285.40568444070533,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
152
152
  </g>
153
153
  <g>
154
- <polyline data-points="0.5005768910000006,1.4485175000000003 -2.4994231089999994,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,222.49781982972618 147.26763199913816,429.8245033898827" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
154
+ <polyline data-points="0.5005768910000006,1.4485175000000003 -2.4994231089999994,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,225.9187101084688 147.26763199913816,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
155
155
  </g>
156
156
  <g>
157
- <polyline data-points="0.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,222.49781982972618 561.9209991194512,429.8245033898827" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
157
+ <polyline data-points="0.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,225.9187101084688 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
158
158
  </g>
159
159
  <g>
160
- <polyline data-points="-2.4994231089999994,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="147.26763199913816,429.8245033898827 561.9209991194512,429.8245033898827" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
160
+ <polyline data-points="-2.4994231089999994,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="147.26763199913816,433.2453936686253 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
161
161
  </g>
162
162
  <g>
163
- <polyline data-points="3.5005768910000006,1.4485175000000003 0.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,222.49781982972618 354.59431555929467,429.8245033898827" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
163
+ <polyline data-points="3.5005768910000006,1.4485175000000003 0.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 354.59431555929467,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
164
164
  </g>
165
165
  <g>
166
- <polyline data-points="3.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,222.49781982972618 561.9209991194512,429.8245033898827" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
166
+ <polyline data-points="3.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
167
167
  </g>
168
168
  <g>
169
- <polyline data-points="0.5005768910000006,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,429.8245033898827 561.9209991194512,429.8245033898827" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
169
+ <polyline data-points="0.5005768910000006,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,433.2453936686253 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
170
170
  </g>
171
171
  <g>
172
- <polyline data-points="-3.5005768910000006,-1.5510434999999996 -3.7005768910000008,-1.5510434999999996 -3.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,429.7941645851884 64.25722197653835,429.7941645851884 64.25722197653835,455.61151985551686 271.58390553669483,455.61151985551686 271.58390553669483,429.7941645851884 285.40568444070533,429.7941645851884" fill="none" stroke="purple" stroke-width="1" />
172
+ <polyline data-points="-3.5005768910000006,-1.5510434999999996 -3.7005768910000008,-1.5510434999999996 -3.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,433.215054863931 64.25722197653835,433.215054863931 64.25722197653835,459.03241013425946 271.58390553669483,459.03241013425946 271.58390553669483,433.215054863931 285.40568444070533,433.215054863931" fill="none" stroke="purple" stroke-width="1" />
173
173
  </g>
174
174
  <g>
175
- <polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,1.5499565000000004 -4.051576891000001,1.5499565000000004 -4.051576891000001,1.0753815000000009 -0.7005768910000008,1.0753815000000009 -0.7005768910000008,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,222.46748102503187 78.07900088054879,215.4874826785066 40,215.4874826785066 40,248.28483629536032 271.58390553669483,248.28483629536032 271.58390553669483,222.46748102503187 285.40568444070533,222.46748102503187" fill="none" stroke="purple" stroke-width="1" />
175
+ <polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,1.6489565000000006 -4.051576891000001,1.6489565000000006 -4.051576891000001,1.0753815000000009 -0.7005768910000008,1.0753815000000009 -0.7005768910000008,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 78.07900088054879,212.06659239976403 40,212.06659239976403 40,251.70572657410293 271.58390553669483,251.70572657410293 271.58390553669483,225.88837130377448 285.40568444070533,225.88837130377448" fill="none" stroke="purple" stroke-width="1" />
176
176
  </g>
177
177
  <g>
178
- <polyline data-points="3.5005768910000006,1.4485175000000003 4.051576891000001,1.4485175000000003 4.051576891000001,-1.4504824999999997 3.5005768910000006,-1.4504824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,222.49781982972618 600,222.49781982972618 600,422.84450504335746 561.9209991194512,422.84450504335746 561.9209991194512,429.8245033898827" fill="none" stroke="purple" stroke-width="1" />
178
+ <polyline data-points="3.5005768910000006,1.4485175000000003 4.051576891000001,1.4485175000000003 4.051576891000001,-1.3514824999999995 3.5005768910000006,-1.3514824999999995 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 600,225.9187101084688 600,419.42361476461485 561.9209991194512,419.42361476461485 561.9209991194512,433.2453936686253" fill="none" stroke="purple" stroke-width="1" />
179
179
  </g>
180
180
  <g>
181
- <rect data-type="rect" data-label="schematic_component_0" data-x="-3" data-y="1.5" x="78.07900088054879" y="203.41678494384536" width="69.18863111858937" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
181
+ <rect data-type="rect" data-label="schematic_component_0" data-x="-3" data-y="1.5" x="78.07900088054879" y="206.83767522258796" width="69.18863111858937" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
182
182
  </g>
183
183
  <g>
184
- <rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="1.5" x="285.40568444070533" y="203.41678494384536" width="69.18863111858934" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
184
+ <rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="1.5" x="285.40568444070533" y="206.83767522258796" width="69.18863111858934" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
185
185
  </g>
186
186
  <g>
187
- <rect data-type="rect" data-label="schematic_component_2" data-x="3" data-y="1.5" x="492.7323680008618" y="203.41678494384536" width="69.18863111858934" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
187
+ <rect data-type="rect" data-label="schematic_component_2" data-x="3" data-y="1.5" x="492.7323680008618" y="206.83767522258796" width="69.18863111858934" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
188
188
  </g>
189
189
  <g>
190
- <rect data-type="rect" data-label="schematic_component_3" data-x="-3" data-y="-1.5" x="78.07900088054879" y="410.74346850400184" width="69.18863111858937" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
190
+ <rect data-type="rect" data-label="schematic_component_3" data-x="-3" data-y="-1.5" x="78.07900088054879" y="414.16435878274444" width="69.18863111858937" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
191
191
  </g>
192
192
  <g>
193
- <rect data-type="rect" data-label="schematic_component_4" data-x="0" data-y="-1.5" x="285.40568444070533" y="410.74346850400184" width="69.18863111858934" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
193
+ <rect data-type="rect" data-label="schematic_component_4" data-x="0" data-y="-1.5" x="285.40568444070533" y="414.16435878274444" width="69.18863111858934" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
194
194
  </g>
195
195
  <g>
196
- <rect data-type="rect" data-label="schematic_component_5" data-x="3" data-y="-1.5" x="492.7323680008618" y="410.74346850400184" width="69.18863111858934" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
196
+ <rect data-type="rect" data-label="schematic_component_5" data-x="3" data-y="-1.5" x="492.7323680008618" y="414.16435878274444" width="69.18863111858934" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
197
197
  </g>
198
198
  <g>
199
199
  <rect data-type="rect" data-label="netId: PIN1
200
- globalConnNetId: connectivity_net0" data-x="-3.7005768910000008" data-y="1.7749565000000005" x="57.346332524533125" y="184.3884801444831" width="13.821778904010444" height="31.099002534023498" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
200
+ globalConnNetId: connectivity_net0" data-x="-3.7005768910000008" data-y="1.8739565000000007" x="57.346332524533125" y="180.96758986574054" width="13.821778904010444" height="31.099002534023498" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
201
201
  </g>
202
202
  <g>
203
203
  <rect data-type="rect" data-label="netId: PIN1
204
- globalConnNetId: connectivity_net0" data-x="2.2734231089999994" data-y="1.4489565000000004" x="461.5642565723183" y="215.55659157302665" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
204
+ globalConnNetId: connectivity_net0" data-x="2.2734231089999994" data-y="1.4489565000000004" x="461.5642565723183" y="218.97748185176926" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
205
205
  </g>
206
206
  <g>
207
207
  <rect data-type="rect" data-label="netId: PIN2
208
- globalConnNetId: connectivity_net1" data-x="-3.7265768910000006" data-y="1.4489565000000004" x="46.91088945200522" y="215.55659157302665" width="31.099002534023526" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
208
+ globalConnNetId: connectivity_net1" data-x="-3.7265768910000006" data-y="1.4489565000000004" x="46.91088945200522" y="218.97748185176926" width="31.099002534023526" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
209
209
  </g>
210
210
  <g>
211
211
  <rect data-type="rect" data-label="netId: PIN2
212
- globalConnNetId: connectivity_net1" data-x="-3.7005768910000008" data-y="-1.3260434999999995" x="57.346332524533125" y="398.6951620511649" width="13.821778904010444" height="31.099002534023498" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
212
+ globalConnNetId: connectivity_net1" data-x="-3.7005768910000008" data-y="-1.3260434999999995" x="57.346332524533125" y="402.1160523299075" width="13.821778904010444" height="31.099002534023498" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
213
213
  </g>
214
214
  <g>
215
215
  <rect data-type="rect" data-label="netId: PIN3
216
- globalConnNetId: connectivity_net2" data-x="0.7265768910000006" data-y="1.4485175000000003" x="354.66342445381474" y="215.58693037772096" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
216
+ globalConnNetId: connectivity_net2" data-x="0.7265768910000006" data-y="1.4485175000000003" x="354.66342445381474" y="219.00782065646357" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
217
217
  </g>
218
218
  <g>
219
219
  <rect data-type="rect" data-label="netId: PIN3
220
- globalConnNetId: connectivity_net2" data-x="-2.2734231089999994" data-y="-1.5514824999999997" x="147.3367408936582" y="422.91361393787747" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
220
+ globalConnNetId: connectivity_net2" data-x="-2.2734231089999994" data-y="-1.5514824999999997" x="147.3367408936582" y="426.3345042166201" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
221
221
  </g>
222
222
  <g>
223
223
  <rect data-type="rect" data-label="netId: PIN3
224
- globalConnNetId: connectivity_net2" data-x="3.7265768910000006" data-y="-1.5514824999999997" x="561.9901080139713" y="422.91361393787747" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
224
+ globalConnNetId: connectivity_net2" data-x="3.7265768910000006" data-y="-1.5514824999999997" x="561.9901080139713" y="426.3345042166201" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
225
225
  </g>
226
226
  <g>
227
227
  <rect data-type="rect" data-label="netId: PIN4
228
- globalConnNetId: connectivity_net3" data-x="3.7005768910000008" data-y="1.6735175000000004" x="568.8318885714564" y="191.39881729570268" width="13.821778904010444" height="31.099002534023498" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
228
+ globalConnNetId: connectivity_net3" data-x="3.7005768910000008" data-y="1.6735175000000004" x="568.8318885714564" y="194.8197075744453" width="13.821778904010444" height="31.099002534023498" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
229
229
  </g>
230
230
  <g>
231
231
  <rect data-type="rect" data-label="netId: PIN4
232
- globalConnNetId: connectivity_net3" data-x="0.7265768910000006" data-y="-1.5514824999999997" x="354.66342445381474" y="422.91361393787747" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
232
+ globalConnNetId: connectivity_net3" data-x="0.7265768910000006" data-y="-1.5514824999999997" x="354.66342445381474" y="426.3345042166201" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
233
233
  </g>
234
234
  <g id="crosshair" style="display: none">
235
235
  <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
@@ -264,7 +264,7 @@ globalConnNetId: connectivity_net3" data-x="0.7265768910000006" data-y="-1.55148
264
264
  "e": 320,
265
265
  "b": 0,
266
266
  "d": -69.10889452005217,
267
- "f": 322.6032629476759
267
+ "f": 326.0241532264185
268
268
  };
269
269
  // Manually invert and apply the affine transform
270
270
  // Since we only use translate and scale, we can directly compute:
@@ -2,56 +2,59 @@
2
2
  <rect width="100%" height="100%" fill="white" />
3
3
  <g>
4
4
  <circle data-type="point" data-label="IN
5
- x-" data-x="-0.3" data-y="0.1" cx="232.60923845193508" cy="346.3920099875156" r="3" fill="hsl(181, 100%, 50%, 0.8)" />
5
+ x-" data-x="-0.3" data-y="0.1" cx="273.3851276359601" cy="343.30743618202" r="3" fill="hsl(181, 100%, 50%, 0.8)" />
6
6
  </g>
7
7
  <g>
8
8
  <circle data-type="point" data-label="GND
9
- x-" data-x="-0.3" data-y="0" cx="232.60923845193508" cy="381.3483146067416" r="3" fill="hsl(157, 100%, 50%, 0.8)" />
9
+ x-" data-x="-0.3" data-y="0" cx="273.3851276359601" cy="374.38401775804664" r="3" fill="hsl(157, 100%, 50%, 0.8)" />
10
10
  </g>
11
11
  <g>
12
12
  <circle data-type="point" data-label="EN
13
- x-" data-x="-0.3" data-y="-0.1" cx="232.60923845193508" cy="416.3046192259676" r="3" fill="hsl(57, 100%, 50%, 0.8)" />
13
+ x-" data-x="-0.3" data-y="-0.1" cx="273.3851276359601" cy="405.46059933407327" r="3" fill="hsl(57, 100%, 50%, 0.8)" />
14
14
  </g>
15
15
  <g>
16
16
  <circle data-type="point" data-label="OUT
17
- x+" data-x="0.3" data-y="0.1" cx="442.3470661672909" cy="346.3920099875156" r="3" fill="hsl(158, 100%, 50%, 0.8)" />
17
+ x+" data-x="0.3" data-y="0.1" cx="459.84461709211996" cy="343.30743618202" r="3" fill="hsl(158, 100%, 50%, 0.8)" />
18
18
  </g>
19
19
  <g>
20
20
  <circle data-type="point" data-label="NC
21
- x+" data-x="0.3" data-y="0" cx="442.3470661672909" cy="381.3483146067416" r="3" fill="hsl(325, 100%, 50%, 0.8)" />
21
+ x+" data-x="0.3" data-y="0" cx="459.84461709211996" cy="374.38401775804664" r="3" fill="hsl(325, 100%, 50%, 0.8)" />
22
22
  </g>
23
23
  <g>
24
24
  <circle data-type="point" data-label="anchorPoint
25
- orientation: y+" data-x="-0.4" data-y="0.101" cx="197.6529338327091" cy="346.04244694132336" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
25
+ orientation: y+" data-x="-0.4" data-y="0.1" cx="242.30854605993346" cy="343.30743618202" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
26
26
  </g>
27
27
  <g>
28
28
  <circle data-type="point" data-label="anchorPoint
29
- orientation: x-" data-x="-0.3" data-y="0" cx="232.60923845193508" cy="381.3483146067416" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
29
+ orientation: x-" data-x="-0.6000000000000001" data-y="0" cx="180.15538290788018" cy="374.38401775804664" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
30
30
  </g>
31
31
  <g>
32
32
  <circle data-type="point" data-label="anchorPoint
33
- orientation: x+" data-x="0.3" data-y="0.1" cx="442.3470661672909" cy="346.3920099875156" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
33
+ orientation: x+" data-x="0.3" data-y="0.1" cx="459.84461709211996" cy="343.30743618202" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
34
34
  </g>
35
35
  <g>
36
- <polyline data-points="-0.3,0.1 -0.3,-0.1" data-type="line" data-label="" points="232.60923845193508,346.3920099875156 232.60923845193508,416.3046192259676" fill="none" stroke="hsl(325, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
36
+ <polyline data-points="-0.3,0.1 -0.3,-0.1" data-type="line" data-label="" points="273.3851276359601,343.30743618202 273.3851276359601,405.46059933407327" fill="none" stroke="hsl(325, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
37
37
  </g>
38
38
  <g>
39
- <polyline data-points="-0.3,0.1 -0.3,0.101 -0.851,0.101 -0.851,-0.101 -0.3,-0.101 -0.3,-0.1" data-type="line" data-label="" points="232.60923845193508,346.3920099875156 232.60923845193508,346.04244694132336 40,346.04244694132336 40,416.65418227215986 232.60923845193508,416.65418227215986 232.60923845193508,416.3046192259676" fill="none" stroke="purple" stroke-width="1" />
39
+ <polyline data-points="-0.3,0.1 -0.5,0.1 -0.5,-0.1 -0.3,-0.1" data-type="line" data-label="" points="273.3851276359601,343.30743618202 211.23196448390684,343.30743618202 211.23196448390684,405.46059933407327 273.3851276359601,405.46059933407327" fill="none" stroke="purple" stroke-width="1" />
40
40
  </g>
41
41
  <g>
42
- <rect data-type="rect" data-label="1" data-x="0" data-y="0" x="232.60923845193508" y="311.43570536828963" width="209.73782771535582" height="139.82521847690396" fill="hsl(49, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0028607142857142854" />
42
+ <polyline data-points="-0.3,0 -0.6000000000000001,0" data-type="line" data-label="" points="273.3851276359601,374.38401775804664 180.15538290788018,374.38401775804664" fill="none" stroke="purple" stroke-width="1" />
43
+ </g>
44
+ <g>
45
+ <rect data-type="rect" data-label="1" data-x="0" data-y="0" x="273.3851276359601" y="312.2308546059934" width="186.45948945615987" height="124.3063263041065" fill="hsl(49, 100%, 50%, 0.8)" stroke="black" stroke-width="0.003217857142857143" />
43
46
  </g>
44
47
  <g>
45
48
  <rect data-type="rect" data-label="netId: V5_IN
46
- globalConnNetId: connectivity_net0" data-x="-0.4" data-y="0.326" x="162.69662921348313" y="188.7390761548065" width="69.91260923845195" height="157.30337078651687" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0028607142857142854" />
49
+ globalConnNetId: connectivity_net0" data-x="-0.4" data-y="0.325" x="211.23196448390684" y="203.4628190899001" width="62.15316315205325" height="139.8446170921199" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.003217857142857143" />
47
50
  </g>
48
51
  <g>
49
52
  <rect data-type="rect" data-label="netId: GND
50
- globalConnNetId: connectivity_net2" data-x="-0.526" data-y="0" x="74.95630461922593" y="346.3920099875156" width="157.30337078651687" height="69.91260923845198" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0028607142857142854" />
53
+ globalConnNetId: connectivity_net2" data-x="-0.8260000000000001" data-y="0" x="40" y="343.30743618202" width="139.8446170921199" height="62.15316315205325" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.003217857142857143" />
51
54
  </g>
52
55
  <g>
53
56
  <rect data-type="rect" data-label="netId: V3P3
54
- globalConnNetId: connectivity_net1" data-x="0.526" data-y="0.1" x="442.6966292134832" y="311.43570536828963" width="157.30337078651678" height="69.91260923845198" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0028607142857142854" />
57
+ globalConnNetId: connectivity_net1" data-x="0.526" data-y="0.1" x="460.1553829078802" y="312.2308546059934" width="139.8446170921199" height="62.15316315205325" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.003217857142857143" />
55
58
  </g>
56
59
  <g id="crosshair" style="display: none">
57
60
  <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
@@ -81,12 +84,12 @@ globalConnNetId: connectivity_net1" data-x="0.526" data-y="0.1" x="442.696629213
81
84
 
82
85
  // Calculate real coordinates using inverse transformation
83
86
  const matrix = {
84
- "a": 349.5630461922597,
87
+ "a": 310.7658157602664,
85
88
  "c": 0,
86
- "e": 337.478152309613,
89
+ "e": 366.61487236404,
87
90
  "b": 0,
88
- "d": -349.5630461922597,
89
- "f": 381.3483146067416
91
+ "d": -310.7658157602664,
92
+ "f": 374.38401775804664
90
93
  };
91
94
  // Manually invert and apply the affine transform
92
95
  // Since we only use translate and scale, we can directly compute: