@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.
- package/biome.json +5 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +164 -73
- package/lib/solvers/Example28Solver/Example28Solver.ts +114 -2
- package/lib/solvers/Example28Solver/reroute.ts +32 -21
- package/package.json +1 -1
- package/tests/examples/__snapshots__/example03.snap.svg +64 -64
- package/tests/examples/__snapshots__/example28.snap.svg +21 -18
- package/tests/examples/__snapshots__/example32.snap.svg +3 -3
- package/tests/examples/__snapshots__/example48.snap.svg +30 -30
- package/tests/repros/__snapshots__/repro51-overlap-junction-crossing.snap.svg +177 -0
- package/tests/repros/assets/repro51-overlap-junction-crossing.input.json +129 -0
- package/tests/repros/repro51-overlap-junction-crossing.test.ts +105 -0
|
@@ -20,8 +20,7 @@ import type {
|
|
|
20
20
|
TracePathScore,
|
|
21
21
|
} from "./types"
|
|
22
22
|
|
|
23
|
-
const
|
|
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:
|
|
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 =
|
|
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
|
-
|
|
208
|
+
startExit,
|
|
209
|
+
{ x: startExit.x, y: topY },
|
|
208
210
|
{ x: sideX, y: topY },
|
|
209
211
|
{ x: sideX, y: bottomY },
|
|
210
|
-
{ x:
|
|
212
|
+
{ x: endEntry.x, y: bottomY },
|
|
213
|
+
endEntry,
|
|
211
214
|
end,
|
|
212
215
|
],
|
|
213
216
|
[
|
|
214
217
|
start,
|
|
215
|
-
|
|
218
|
+
startExit,
|
|
219
|
+
{ x: startExit.x, y: bottomY },
|
|
216
220
|
{ x: sideX, y: bottomY },
|
|
217
221
|
{ x: sideX, y: topY },
|
|
218
|
-
{ x:
|
|
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 -
|
|
242
|
-
: bounds.maxX +
|
|
243
|
-
const topY = bounds.maxY +
|
|
244
|
-
const bottomY = bounds.minY -
|
|
245
|
-
const startsAboveEnd =
|
|
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
|
-
|
|
259
|
+
startExit,
|
|
260
|
+
{ x: startExit.x, y: firstY },
|
|
253
261
|
{ x: sideX, y: firstY },
|
|
254
262
|
{ x: sideX, y: secondY },
|
|
255
|
-
{ x:
|
|
263
|
+
{ x: endEntry.x, y: secondY },
|
|
264
|
+
endEntry,
|
|
256
265
|
end,
|
|
257
266
|
],
|
|
258
267
|
[
|
|
259
268
|
start,
|
|
260
|
-
|
|
269
|
+
startExit,
|
|
270
|
+
{ x: startExit.x, y: secondY },
|
|
261
271
|
{ x: sideX, y: secondY },
|
|
262
272
|
{ x: sideX, y: firstY },
|
|
263
|
-
{ x:
|
|
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 -
|
|
355
|
+
let segmentPushX = bounds.minX - LABEL_CLEARANCE
|
|
345
356
|
if (labelDirection.x > 0) {
|
|
346
|
-
segmentPushX = bounds.maxX +
|
|
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 +
|
|
407
|
+
return labelBounds.maxY + LABEL_CLEARANCE
|
|
397
408
|
}
|
|
398
409
|
|
|
399
|
-
return labelBounds.minY -
|
|
410
|
+
return labelBounds.minY - LABEL_CLEARANCE
|
|
400
411
|
}
|
|
401
412
|
|
|
402
413
|
const markSelectedCandidate = (
|
package/package.json
CHANGED
|
@@ -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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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.
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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.
|
|
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.
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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.
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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":
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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="
|
|
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.
|
|
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.
|
|
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="
|
|
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="
|
|
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.
|
|
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
|
-
<
|
|
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.
|
|
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.
|
|
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="
|
|
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":
|
|
87
|
+
"a": 310.7658157602664,
|
|
85
88
|
"c": 0,
|
|
86
|
-
"e":
|
|
89
|
+
"e": 366.61487236404,
|
|
87
90
|
"b": 0,
|
|
88
|
-
"d": -
|
|
89
|
-
"f":
|
|
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:
|